在安装并使用tensorflow中的Object-detection模块时遇到的一些问题汇总及解决方法

时间:2022-08-30 14:27:04

前言:

     由于一些业务上的原因,需要做目标检测相关的部分。本来的想法是做特征值提取然后模式匹配,然后发现需要检测的目标种类比较多特征值也不太好提取。后来发现了一个名叫YOLO的用来目标检测的神经网络(https://pjreddie.com/darknet/yolo/)。效果非常好,但是似乎使用起来比较麻烦……和我目前用的开发环境不太相符,另外那台机器被我丢在学校了,所以放弃了。

     但是相应的,我的目光开始转向机器学习方面,比如tensorflow的目标检测模块,google为windows,macOS,Linux提供了api以及很丰富的资料(虽然官网的自疗非常混乱,但是依然可以发现一些有用的)。但是由于我选择的是windows开发环境,所以在面对前几个版本还不支持windows的tensorflow的时候有些力不从心,在调试配置运行demo的过程中遇到了很多问题,消耗了相当多的时间,仅此记录以为后人前鉴,也算是一份笔记,方便以后重新配置时查看。

·0——官方教程

    可以在这里看到一份官方的配置环境并测试的教程。这份教程也在g3doc文件夹中。

·1——python3.5与Anaconda3

    在网上能找到的几乎所有资料里都在推荐Anaconda3,但是需要注意的是,如果你本地已经装有原版的python3.5,请将其卸载,并在Anaconda3安装过程中将"替换本地python"选项(此乃中文翻译,原为英文)勾中。并且重新设置系统变量。值得注意的是,用户变量中有三个关于Anaconda的环境变量,如果没有应当自己添加。

    三个目录分别为  ..\Anaconda3..\Anaconda3\Scripts..\Anaconda3\Library\bin

如果你希望自己使用的python版本是3.5.2的话,请下载Anaconda3-4.2.0,虽然在官网不太好找,但是聪明的你一定能找到下载的地方。

如果你不希望使用集成开发环境而希望自己安装需要使用到的第三方库的话,请确保你使用的python版本为64位。

·2——openCV3与python

    在图像处理方面,毫无疑问的必须要用到opencv。目前支持python3.5的opencv版本为openCV3。

    请在这里下载,并将该文件放在Anaconda3的安装目录下的Lib文件夹,使用pip命令安装。

    值得注意的是,opencv3在python中的引入方法为 “import cv2”

·3——需要哪些代码以及如何获取

这里tensorflow在github上的主页,如果选择clone整个仓库有117MB,显然用不到那么多,我们需要的仅仅是其中的object-detection模块。

这里tensorflow在github上的所有公开的模块中类,其中就有我们所需要的object-detection,如果你是git shell用户可以直接下载了,但是如果你是像我一样只是想用浏览器下载的话,请复制这个链接地址到这里,将地址粘贴进去并下载,注意的是如果你是第一次使用这个网站,需要进行一次授权,根据网站上的教程就好。

·4——其他需要的工具

    这里我们可以下载到官方教程中提到的protoc-3.3.0,解压后将bin目录地址添加进path即可。

·5——其他可能遇到的错误

    ·1     编译model_build_test.py时找不到object-detection包

            在系统变量中新建pythonPath变量,变量值设为你下载的object-detection文件夹的上一级目录即可。

            这个变量在遇到其他问题需要添加新的变量,两个变量之间用分号隔开。

    ·2    编译model_build_test.py时找不到nets包

在这里下载slim文件夹,将slim文件夹添加到pythonPath系统变量中。

-6——如何运行demo

    在一个命令行窗口内与运行 jupyter notebook 。在新弹出的浏览器窗口中选择 object_detection_tutorial.ipynb 页面,点击run cells按钮逐步执行。

    右上角的python状态显示运行状态,实心是为正在运行,空心为该步运行结束。download部分需要的时间较长,可以一次性点完之后切出去做点别的。

    需要注意的是 在最后一个cells中 如果我们想在windows下正常运行,需要修改几行代码。修改方法及地方见这里

-7——如何不使用*.ipynb文件运行程序

在file -> download as -> python中 我们可以获取当前ipynb文件导出的python文件。

在代码中 import IPython 并且在命令行界面使用 IPython *****的命令运行文件