前言:
????????我认为,对于一个开发者来说,最重要并不是急切的去实现它的功能,而是understand实现功能的一个整体框架和思路。
????????近几天,通过阅读一些相关资料(阅读的不太多,希望有大佬有便捷的思路指点一下),做一些简单模型部署到andriod系统的学习心得,和大家分享一下。研究时间较短,害怕忘记,想把这些想法和思路记录一下,今后深入研究还会继续完善。
小项目思路
配置环境:
环境的配置对于开发者来说,可以说简单,也可以说难。如果你是第一次配置,我觉得正常人都会被恶心到,因为即使你去查攻略,按攻略一步一步完成,发现还是报错,而且还摸不清头脑,只能找百度,然后错误..百度...错误...百度....噩梦.....如果只是操作的问题好解决,一些不兼容的小问题我们也可以慢慢解决,我觉得最恶心的是不同工具之间以及这些工具和系统的版本不匹配问题,我反正是被恶心到了,因为版本问题,我重装系统,修改内核版本,修改显卡驱动版本,改完之后又和其他项目的版本不匹配,只能建立虚拟环境..........md? 太恶心了,直接从马云爸爸那买了瓶霸王......不说废话了,接下来,进入正题,自己的心得。
?1.安装anacode:
初学者可能会有疑问为什莫 不直接安装对应的python版本呢(当然也可以),但是,既然大家都在使用anacode,说明有它的便捷之处,我随便说几点自己的感触,首先它有好多包和模块,在安装过程中都给你安装好了,不需要你再用pip去安装了,而且anacode内置了python,其次我觉得最大的有点就是可以建立虚拟环境,这个可以有效的帮助你在做不同的项目中,根据项目需求可以搭建不同的虚拟环境(想详细了解,查查资料即可)。
2.安装tensorflow:
tensorflow-gpu和tensorflow。这里我说一下tensorflow-gpu,这相对比较复杂,因为它和你电脑的显卡有关系,在使用tensorflow-gpu,你需要配置环境,首先显卡驱动,显卡驱动的版本和你本身显卡的参数有关系,例如:1080ti有它对应的显卡驱动版本,可以查到。接下来根据显卡驱动版本和tensorflow-gpu版本来确定需要安装的cuda,cudnn版本。? 这些都完成后,你可以通过一些代码测验或者终端的命令行来判断tensorflow-gpu是否在使用你的gpu。?
? ? ? ? 另外注意tensorflow1.x和2.x版本的一些区别,这里就不说了。查阅相关资料了解吧
?3.opencv-dnn(部署模型):
这只是一种方法,我用的这种的。另外一种:如果部署到c++平台,还可以编译c++的tensorflow接口;如果你是部署到andriod平台上也可以编译和下载tensorflow的jar包(这个我正在实验,讲的也不严谨,网上有好多资料)。这里我下载了c++版的opencv(pycharm中用的是python版的opencv,安装直接pip install opencv-python就可以了,c++的opencv需要你自行下载安装并用gcc进行编译,操作也比较麻烦),接下来就是把opencv-dnn读取模型和预测模型的代码(这里的代码你先在电脑上保证其正常运行)和保存的模型放到硬盘上(这里的硬盘是机器人中自带的硬盘)。
?4.识别模型与机器人一体化:
我们已经把模型和读取模型和图片的代码放到了硬盘,现在就想的是怎么让它通过摄像头接收图片数据并将识别结果展示。对于机器人来说,我们里面使用的是andriod系统(因为知识盲区走弯路了,在使用opencv-dnn时,andriod系统编译opencv出现了很多报错,因为我们在电脑上使用gcc编译时和andriod系统的编译链不同,我的组长花了好几天进行了调试,才成功。额.........我能力有限,这一块我0作用.......所以接下来的项目我们不再使用第一种方法opencv-dnn,会使用另外一种java的tensorflow接口),之后将andriod和硬盘上的c++代码进行交互,通过JIN来调用c++代码,这样机器人中andriod系统实现模型读取,将摄像头接受的数据,喂入给模型,机器人展示识别结果。(这个过程中我的组长,建立了一个apk,可以理解为一个有功能的app,这个app就是将数据读取进来再传输给模型,得到结果,并通过屏幕,语音等方式展现识别结果)
?总结:
1.文字叙述性的内容太多,可能读者看上去会有些烦躁,但是我觉得真正想要去理解一个东西,就必须去耐心的阅读和总结,一定要把红字部分理解一下;
2.文章中有好多术语,不理解的朋友可以查阅,千万不要一知半解,会影响你去深入理解知识点;
3.自己写的不够详细,好多细节网上都很详细,因此这里写的比较粗糙,重点是思路,思路,思路。其实把思路理清了,可以自己按部就班的去做,不懂就百度,一定会搞出来的。
|