最近由于研究方向的更换,接触到了目标检测(Object Detection)领域,觉得很有意思,并且阅读了该方向的相关经典文献,包括Fast-RCNN、Faster-RCNN、SSD、YOLO以及RetinaNet等。但是对于读研狗或者读博狗的我们来说,复现别人代码并且能够得到在公开数据集上和原作者相近甚至相同的实验结果对于我们做研究甚至以后的工作来说是至关重要的。个人觉得目标检测方向是多个细化方向的综合体,其工程性很强,需要我们具有较强的动手实践能力,俗话说“工欲善其事必先利其器”,而该API就是谷歌的牛逼工程师们开源给我们的最好“利器”。如果能够好好的学习该API并基于此通过我们的努力产出相应的文献或者专利那将会是大快人心的事情。(除了该API,FaceBook也开源了他们的目标检测平台–Detectron,该平台是基于caffe2的,感兴趣的小伙伴可以进行学习,本人打算后期也写个博客对其进行介绍)
Step1: 预准备的东西
1.1:Windows操作系统或者Ubuntu,本博客主要介绍如何在win10下安装、配置以及训练该API
1.2:GPU(本人电脑上的GPU是Nvidia TiTAN X),其它型号的GPU也是可以的,同时该API也可以直接利用CPU对其进行训练
1.3:Anaconda2/3
1.4:CUDA Tool kit(本人用的版本是9.0)
1.5:CuDNN(本人用的是版本是7.0)
对Step1的总结:该步最重要的就是配置CUDA以及CuDNN,本人利用的版本是9.0以及7.0,不过CUDA的版本也可以是8.0,而对应的CuDNN的版本可以是7.0或者6.0。建议利用较新的版本,CUDA和CuDNN详细的安装和配置过程请参考YouTube上的一个视频资源 (https://www.youtube.com/watch?v=RplXYjxgZbw)
Step2: 下载或克隆该API到指定的文件夹
在刚开始接触该API之时,经常被相关的安装地址所困惑,本人也查阅了相关的博客,但是有些博主可能认为大家都知道,就没说的那么详细(可能是我本人比较笨吧,哈哈)。首先,我在D盘下新建一个文件夹并命名为tensorflow1,然后到 (https://github.com/tensorflow/models)上点击Download ZIP,将该API的源文件下载到刚才建立的文件夹下并解压,最终的形式如下图:(当然,对于盘的选择以及文件夹的命名,各位可以按照自己的喜好选择)
Step3: 在Anaconda中创建虚拟环境用于安装该API所需的支撑包
3.1:创建虚拟环境
打开commond窗口,并执行如下指令:conda create -n tensorflow1 pip python=3.5
python=2.7或者python=3.6都行
3.2:激活该虚拟环境并安装tensorflow-gpu
在3.1后,首先就是激活刚才创建的虚拟环境:activate tensorflow1
然后安装tensorflow-gpu:pip install --ignore-installed --upgrade tensorflow-gpu==1.9
3.3:安装其它一些必须的包
我们接着在3.2之后的窗口中执行如下指令:
<tensorflow1> C:\Users\SC>conda install -c anaconda protobuf
<tensorflow1> C:\Users\SC>pip install pillow
<tensorflow1> C:\Users\SC>pip install lxml
<tensorflow1> C:\Users\SC>pip install Cython
<tensorflow1> C:\Users\SC>pip install jupyter
<tensorflow1> C:\Users\SC>pip install matplotlib
<tensorflow1> C:\Users\SC>pip install pandas
<tensorflow1> C:\Users\SC>pip install opencv-python
pandas和opencv-python不是该API所必须的包,但是后面在做测试的时候可能会用到。
3.4:配置该API的PYTHONPATH
为了能够使该API正常运行,必须配置好相应的文件路径,具体的操作指令为:
(tensorflow1) C:\Users\SC> set PYTHONPATH=D:\tensorflow1\models;D:\tensorflow1\models\research;D:\tensorflow1\models\research\slim
需要注意的是每当该tensorflow1虚拟环境被激活后,都要重新执行一次上述指令。也可以通过右击我的电脑–>属性–>高级系统设置–>环境变量–>新建系统变量的方式进行设置,这样就可以避免重复执行上述指令。
3.5:编译Protobuf以及安装该API
3.5.1:编译Protobuf
对于Protobuf的介绍,请参见 (https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html)。在3.4后,我们首先cd到该API的research目录下,然后执行如下指令以实现对Protobuf的编译:
<tensorflow1> D:\tensorflow1\models\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
3.5.2:安装API
在上述操作执行完成后,继续在当前窗口执行如下指令以完成对该API的安装:
<tensorflow1> D:\tensorflow1\models\research>python setup.py build
<tensorflow1> D:\tensorflow1\models\research>python setup.py install
3.6:判断该API是否安装成功以及测试官方demo
在步骤3.5执行完以后,我们cd到builders目录下,然后执行python model_builder_test.py
如果出现下面的结果,则表示安装成功。