tensorflow中存在许多内置的模型,可以用来进行图片的识别。下面将介绍一下使用object_detection进行物体识别需要的环境。
配置环境:
1. 通过proto将对应的.proto文件变成.py文件。
2. 首先将tensorflow_slim模块加入到环境变量中,然后打开cmd窗口,输入python, 然后输入import slim 若是不报错则证明可以环境已经导入
3. 在onject_detection目录下运行:python builders/model_builder_test.py
当出现:
证明object_detection的环境已经配好。
1. 执行demo。(本文将以执行demo过程中遇到的具体问题为切入点来具体讲解配置环境的方式)
object_detection在tensorflow下对应的model模块中,该模块的安装可以参见tensorflow及model的安装。我们可以进入其对应的路径下:E:\Anaconda3\Lib\site-packages\tensorflow\models\research\object_detection(本文的安装路径)发现存在一个object_detection_tutorial.ipynb的文件。该文件对应的是个物体识别的demeo。接下来运行该文件。
打开anaconda安装过程中的Jupyter Notebook,此时对应浏览器上会出现一个
选择对应的文件打开不并且运行,会发现一般会报如下错误:(tensorflow的版本如果比较低的情况下:)
2. tensorflow的版本:
有上述报错可以看出:但是要使用对应的模块进行简单的物体识别需要升级anaconda中对应的tensorflow版本为1.4以上。具体升级方式如下:
打开anaconda prompt。然后输入: pip3 install --upgrade tensorflow,如果该方式报错还可以采用先卸载再安装的方式:
先执行pip uninstall tensorflow 然后再执行pip install tensorflow。
3:继续执行
上述错误表示Object_detection找不到,解决方法是:写一个.pth文件将
E:\Anaconda3\Lib\site-packages\tensorflow\models\research
E:\Anaconda3\Lib\site-packages\tensorflow\models\research\slim
写入文件中,并将文件放入E:\Anaconda3\Lib\site-packages文件夹下。
3:表示找不到demo中对应的utils,解决方法为::
1: 将from utils import label_map_util变成 from tensorflow.models.research.object_detection.utils 。
2: 将from utils import label_map_util变成 from object_detection.utils
4:安装protobuf
继续执行还会报:
该错误表示缺少对应的string_int_label_map_pb2文件,经过查找可以发现该文件处于E:\Anaconda3\Lib\site-packages\tensorflow\models\research\object_detection\protos目录中,但是该文件的文件名为string_int_label_map.proto。
所以此时需要安装对应的proto编译器将其编译为.py文件。具体操作为,下载地址为:proto下载。建议选在3.4的版本。因为3.5存在bug在使用命令行proto object_detection/protos/*.proto -- python_out=. 时会报找不到文件夹。具体执行方式为:
在对应的research目录下面执行对应的语 proto object_detection/protos/*.proto -- python_out=.
5. 测试
最终执行:python object_detection/builders/model_builder_test.py 如果返回内容如下:则证明环境配置成功。此时 再重新运行demeo即可运行出来。
在执行过程中如果抛出找不到一些数据的情况,请将对应的文件拷入jupyter Notebook对应的执行目录下。一般为test_image和data两个文件夹。
6. 数据格式处理:
对于识别出来的结构主要包含类别,得分和位置。我们可以根据自己的需求找出对应的得分超过多少的物品并将结果转换成对应的json形式供后续的使用。具体实现方式见代码: