TensorFlow Object Detection API(Windows下测试)
"Speed/accuracy trade-offs for modern convolutional object detectors."
Huang J, Rathod V, Sun C, Zhu M, Korattikara A, Fathi A, Fischer I, Wojna Z,
Song Y, Guadarrama S, Murphy K, CVPR 2017
————————————————————————————————————
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃
这个API的目的是创建一个能够在单个图像中定位和识别多个对象的精确机器学习模型,这在仍然是计算机视觉领域仍然是一个核心挑战。该API是在tensorflow上构造的开源框架,易于构建、训练和部署目标检测模型,谷歌已经应用在公司的视觉项目中,来源是开头的那篇论文,如果有兴趣可以研究一下,主要对比了几种不同的Object Detection神经网络(FasterRCNN RFCN SSD)。
一、安装(链接为GitHub上给出的安装说明):
1、依赖:
Protobuf 2.6Pillow 1.0lxmltf Slim (which is included in the "tensorflow/models" checkout)Jupyter notebookMatplotlibTensorflow
2、关于Protobuf:
Protocol-buffer,Google开发的一套数据存储、网络通信时用于协议编码的工具库,和XML或json类似,就是把数据以某种结构保存下来,不同之处在于protobuf是二进制的,而且编码的时间和空间开销都降低很多。原理可以参考博客:majianfei1023。
使用方法:在Google的git仓库下载需要的版本:根据前文依赖需要的是Protobuf 2.6,我们只需要它的编解码功能,所以只需要下载win32版本即可。下载解压发现是一个可执行文件,OK,把它加入环境变量:在path中添加exe文件路径,并新建一个proto_path,路径为exe文件路径。调用cmd,输入protoc发现提示missing input file,证明已经可以使用了。
参照GitHub上给出的installation提示,在tensorflow/models/目录下输入命令:
protoc object_detection/protos/*.proto --python_out=.
可以看到object_detection/protos/目录下的所有*.proto都生成了对应的py文件。
3、添加环境变量PYTHONPATH
PYTHONPATH G:\TensorFlow\models\slim;G:\TensorFlow\models\slim
4、测试是否成功
(涂抹两个路径,防止给大家添加环境变量造成歧义,这里我用的是anaconda的虚拟环境)
二、运行官方的检测demo
打开object_detection目录下的object_detection_tutorial.ipynb,直接运行到最后,两个demo图片,分别是两只狗和海边的风筝,也可以自己修改需要检测的图片,修改PATH_TO_TEST_IMAGES_DIR图片路径,或者直接把你要检测图片拷贝到这个test_images路径下,需要修改图片名。
三、和SSD对比
SSD
Object Detection API
(图片来自百度图片,如有侵权请告知删除)
四、训练数据集
挖个坑,慢慢填……
填坑:http://www.cnblogs.com/mar-q/p/7579263.html