Tensorflow Object Detection API
Tensorflow Object Detection API
TensorFlow Object Detection API Github
https://github.com/tensorflow/models/research/object_detection
注意:object_detection依赖slim。
使用时,我们需要将research下的object_detection和slim都拷贝出来。
环境准备
安装或升级protoc
在object_detection/ptoroc中,可以看到一些proto文件,我们需要使用protoc程序将这些proto文件编译为python文件才可以。
TensorFLow Object Detection必须使用2.6.0以上的protoc进行编译,否则会报错。可以使用如下指令查看protoc的版本。
protoc --version
如果版本低于2.6.0就需要进行版本升级,如果版本高于2.6.0可以忽略当前操作。
下载文件后解压,会得到一个 protoc 文件,将它复制到系统的可执行目录即可,例如:
sudo cp bin/protoc /usr/local/bin
然后查看版本是否是新安装的版本。
编译proto文件
接下来,我们需要将“ object_detection/protos/”下的“.proto”文件进行编译,编译为“.py”文件,执行如下指令:
protoc object_detection/protos/*.proto --python_out=.
运行完,如果每一个“.proto”文件都生成了对于的“.py”文件,说明编译成功了。
将Slim加入PYTHONPATH
TensorFlow Object Detection API 是以 Slim 为基础实现的,需要将 Slim 的目录加入 PYTHONPATH 后才能正确运行。具体来说,还是在 research 文 件夹下执行下面的命令。
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
执行完,我们打开一个python shell,执行“import slim”运行成功,表示已经正确配置。
完成安装测试
python object_detection/builders/model_builder_test.py
这条命令会自动检查 TensorFlow Object Detection API 是否正确安装,如果出现"Ok (skipped=1)"信息,说明己安装成功。
使用预训练模型进行图片检测
案例代码:research/object_detection/snkey_object_detection.py
TensorFlow Object Detection API默认提供了5个与训练模型,它们都是使用COCO数据集训练完成的,结构分别为:
- SSD+MobileNet
- SSD+Inception
- R-FCN+ ResNet101
- Faster RCNN+ResNet101
- Faster RCNN+Inception_ResNet
如何使用这些模型呢,可以参考官方的一个案例
当然,我们也可以使用自己训练的模型进行图片预测。
本案例基于官方示例,使用SSD+MobileNet模型进行图片检测。
说明:执行官方示例会自动下载和解压该模型。执行snkey_object_detection.py
需要已经存在该模型。
更换预测模型
只需要修改上述代码中的2行配置即可。将配置改为其它模型的对应文件即可。
# 因为执行object_detection_tutorial notebook文件,模型已经下载到本地了,这里直接使用即可。
# 模型
PATH_TO_FROZEN_GRAPH ='ssd_mobilenet_v1_coco_2017_11_17/frozen_inference_graph.pb'
# 标签映射表
PATH_TO_LABELS = 'data/mscoco_label_map.pbtxt'