Tensorflow object detection api 详细实战教程(1)环境搭建与测试

Tesorflow目前是最为主流的机器学习平台之一,目前对于tf的学习还只是在皮毛,目前接触到了目标检测(Object Detection),如果让自己通过网络架构去写一个训练模型就目前而言是不太现实的。为了实践需要,所以学习了使用这个API去帮助自己去做出目标检测的一个项目。这次主要做的是安全帽识别,而且数据量特别的巨大,所以训练时间就要跑特别长时间。
其实对于初学者而言,总是想要去了解代码的思路,或者很早的就想去写出像API里的代码,我自己也是一样,但是俗话说学的越多,越知道自己不会的多,还是熟练的先去使用这个API再去深挖其中的思想吧,配环境是是使用这个API最难的一步了,后面的很多程序都是因为版本不匹配导致使用不了的。

简单的一个效果图:
Tensorflow object detection api 详细实战教程(1)环境搭建与测试_第1张图片

开发坏境(Win10)

  1. 强烈建议使用Anaconda3以上,Anaconda对python各种包的集成非常的友好,而且后面如果出现问题非常容易去修改。
  2. Python3.6
  3. Tensorflow-gpu使用了1.6版本,应该1.5以上都可以用。
  4. CUDA(9.0)、CuDNN(7.0)

在Anaconda中创建虚拟环境

1. 创建tensorflow1虚拟环境
打开cmd,(Win+R后输入),执行如下指令:conda create -n tensorflow1 pip python=3.6(其他版本应该也可以,不建议使用3.7)

2. 激活tensorflow1,并安装tensorflow-gpu
2.1.激活当前tensorflow1环境:activate tensorflow1 激活之后在前面会显示< tensorflow1 >
2.2.激活后,输入指令:pip install --ignore-installed --upgrade tensorflow-gpu==1.6 这里有的时候conda下载还不太好用,只能通过pip下载下来部分版本
2.3.还有一些包在后面会用到(2.2之后执行)

conda install -c anaconda protobuf
pip install pillow
pip install lxml
pip install Cython
pip install jupyter
pip install matplotlib
pip install pandas
pip install opencv-python

在这里,tensorflow1会安装在Anaconda下envs文件夹之下。
进入tensorflow1后,Lib -> site-package 是这个环境下的包的位置,在之后如果缺少模块,可以直接复制到这个地方,省了很多麻烦。
Tensorflow object detection api 详细实战教程(1)环境搭建与测试_第2张图片

下载并配置API

这是API的官网,直接下载下来就可以
下载后直接解压tensorflow1之中,然后去配置这个API的环境变量。

在环境变量中的PATHONPATH加入三个位置,分别是:

D:\Program Files (x86)\Anaconda\envs\tensorflow1\models
D:\Program Files (x86)\Anaconda\envs\tensorflow1\models\research
D:\Program Files (x86)\Anaconda\envs\tensorflow1\models\research\slim

右击我的电脑–>属性–>高级系统设置–>环境变量–>新建系统变量的方式进行设置

编译Protobuf并且安装API

下载Protobuf的地址:Github上下载Protobuf直接下载即可,我使用的版本是3.4.0,一定在Python下选择。
目录格式:
Tensorflow object detection api 详细实战教程(1)环境搭建与测试_第3张图片
打开bin,复制protoc.exe,粘贴到刚刚tensorflow1下的research文件夹中,接下来编译Protobuf。

定位到research下,执行语句:protoc --python_out=. .\object_detection\protos\anchor_generator.proto .\object_detection\protos\argmax_matcher.proto .\object_detection\protos\bipartite_matcher.proto .\object_detection\protos\box_coder.proto .\object_detection\protos\box_predictor.proto .\object_detection\protos\eval.proto .\object_detection\protos\faster_rcnn.proto .\object_detection\protos\faster_rcnn_box_coder.proto .\object_detection\protos\grid_anchor_generator.proto .\object_detection\protos\hyperparams.proto .\object_detection\protos\image_resizer.proto .\object_detection\protos\input_reader.proto .\object_detection\protos\losses.proto .\object_detection\protos\matcher.proto .\object_detection\protos\mean_stddev_box_coder.proto .\object_detection\protos\model.proto .\object_detection\protos\optimizer.proto .\object_detection\protos\pipeline.proto .\object_detection\protos\post_processing.proto .\object_detection\protos\preprocessor.proto .\object_detection\protos\region_similarity_calculator.proto .\object_detection\protos\square_box_coder.proto .\object_detection\protos\ssd.proto .\object_detection\protos\ssd_anchor_generator.proto .\object_detection\protos\string_int_label_map.proto .\object_detection\protos\train.proto .\object_detection\protos\keypoint_box_coder.proto .\object_detection\protos\multiscale_anchor_generator.proto .\object_detection\protos\graph_rewriter.proto

执行后没有反应是正常的。
继续执行两个语句,完成对API的安装:

python setup.py build
python setup.py install

测试API的demo

定位到
D:\Program Files(x86)\Anaconda\envs\tensorflow1\models\research\object_detection\builders下,执行下面语句:
python model_builder_test.py
会显示一个OK,则所有的工作就完成了!

测试demo可能出现的错误

  1. 有可能Protobuf编译异常,可能会是版本的问题,去网上简单搜一下Python下的编译过程,非常容易就可以改过来。编译成功的标志是
    D:\Program Files (x86)\Anaconda\envs\tensorflow1\models\research\object_detection\protos
    这个目录下的proto文件有相对应的py文件对应就算成功了,如果出现可以不用考虑这里的问题。
  2. 如果是最后的 model_builder_test.py 文件编译出现了问题,存在error ,no attribute等问题,我自己的tensorflow1.5以上版本缺少compt.v1的错误,tensorflow1.4版本缺少Model,tensorflow1.3以下版本缺少Keras,所以一度崩溃。最后发现使用1.5以上版本缺少compat.v1的问题出现在,我们调用的方法实际上使用了环境变量中的slim中的方法(刚刚写入环境中的文件夹),但实际上调用的却是site-package中的,这个时候可以删掉site-package中的slim文件(有可能找不到,不用管),把slim文件夹直接复制到site-package中,这个方法可能会出现在别的缺少方法的异常中,一律适用!

下一次还需要下载并配置模型文件(问题较多),并对自己的数据集进行处理生成record进行训练

训练之后,使用测试代码对图片或者视频进行测试,使用tensorboard可视化训练过程

你可能感兴趣的:(Tensorflow)