最近在安装测试TensorFlow Object Detection API时,遇到了很多坑,查阅了很多博客,终于安装测试成功,在此记录下,希望对他人有所帮助,同时,文中若有不对的地方,请大家多多指正。
1 安装TensorFlow Object Detection API:
1.1下载目标检测模块
此处,我是将https://github.com/tensorflow/models文件夹下的多有文件全部下载下来(TensorFlow在更新1.0版本后多了很多新功能,其中放出了很多用tf框架写的深度网络结构,都在这块)。其中research文件夹下的object_detection为我们所需的目标检测模块。https://github.com/tensorflow/models/research/object_detection/下的README.md文件有详细的object_detection模块介绍,可以用于理解模块,同时也可以查阅大家在使用过程中的问题记录。
之后在D盘根目录下建立一个TensorFlow为名的文件夹,里面在新建一个TensorFlow Object Detection API Tutorial文件夹(此处生成文件夹的过程是按照前辈博客里介绍进行的),之后将下载好的models-master拷贝进去,将其解压,文件夹的名字改为models。
1.2下载protoc并进行编译
TensorFlow 目标检测API使用Protobufs来配置模型和训练参数,在使用之前,需要编译protobuf库。对于protobuf,在linux中我们可以使用apt-get安装,在windows下可以直接下载已经编译好的版本(参考:https://www.jianshu.com/p/21bae50b6e0d)。这里,我下载的是protoc-3.4.0-win32.zip,下载地址为:https://github.com/google/protobuf/releases。将protoc-3.4.0-win32.zip拷贝到上面新建的TensorFlow中,解压生成两个文件夹,分别是bin和include。将protoc.exe的路径添加至环境变量中。
添加完环境变量之后,进入cmd,在D:\TensorFlow\TensorFlow Object Detection API Tutorial\models\research下输入命令:protoc object_detection/protos/*.proto --python_out=.
之后会看到,在object_detection\protos文件夹里,每一个proto文件都会对应有一个.py文件
1.3 为依赖包添加环境变量
将D:\Tensorflow\TensorFlow Object Detection API Tutorial\models\research和D:\Tensorflow\TensorFlow Object Detection API Tutorial\models\research\slim添加到PYTHONPATH中:
1.4 执行python setup.py build 和python setup.py install
在Anaconda中激活TensorFlow,之后进入D:TensorFlow\TensorFlow Object Detection API Tutorial\models\research,执行:python setup.py build 和python setup.py install,之所以要执行这两步是因为,我在执行完1.3之后,进行测试,依然报错,后面翻阅各种论坛之后,发现可以尝试执行这两步。
1.5 测试TensorFlow Object Detection API是否成功安装
在Anaconda中进入object_detection\builders路径后,执行官方提供的例子python model_builder_test.py,此时,我这还出现了ImportError:No module named 'nets'的错误,查看执行的过程记录,在查看各种论坛,最后将object_detection\models\faster_rcnn_inception_resnet_v2_feature_extractor.py和faster_rcnn_resnet_v1_feature_extractor.py文件中import nets改为import slim.nets。
在执行完上述过程后,运行python model_builder_test.py,出现下图显示,即为正确:
1.6 运行Jupyter notebook demo
此处我在使用Jupyter notebook时报错,因此决定将object_detection_tutorial.ipynb文件转换为.py文件,在spyder中运行。转换过程参考:http://blog.csdn.net/yunyi4367/article/details/78124324。具体命令为:
jupyter nbconvert --to script object_detection_tutorial.ipynb