[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

历时两天,从重装系统,到对比tensorflow和caffe的区别,到配置各种环境,修改和编译各种……

妄图一次避开所有坑,不过还是遇到了…很多问题…

于是记录一下,顺便附上用得上的链接。

参考:

https://blog.****.net/sinat_33486980/article/details/81045315

https://blog.****.net/oMoDao1/article/details/82698571

但是因为都有比较乱的地方,比如第一位的output设置那里,第二位的tensorflow安装那里…

 

总的来说:这是一份“面向过程”的新手指南,按顺序介绍了从搭建环境到跑通程序的操作步骤。本操作基于ubuntu16.04操作系统,使用anaconda3创建了一个名为tensorflow的计算环境,在此环境中跑了tensorflow(cpu)版本的faster-rcnn的demo。

 

目录:

一、环境搭建(包括anaconda3的使用,以及tensorflow虚拟环境的创建,还有添加各种引用的包/库咯)

二、faster-rcnn工程创建(包括源代码、数据集的下载、因使用cpu版本导致的配置文件的修改、跑demo)

一、环境搭建

1.操作系统

      其实操作系统没啥考虑,只是因为以前用的就是这个所以就用它了~但是以前装东西装得乱七八糟,而且当时没考率好分区的问题于是花费了一些时间重装了系统。有时间再出个新手向重装系统指南~这里暂且不提。

附:不使用anaconda的,请结合此篇进行调整。

2.ananconda3

(1)为什么用anaconda3

     个人理解:可以用anaconda在同一台电脑上创建不同的运算环境(如python2或3),不同的环境中可以添加自身需要的包,这些包的版本可以根据需要选择;不同环境间可以较方便地切换。所以可以合理地管理多个项目,不会出现依赖包的冲突问题。

    当然也可以选择不用anaconda来建环境,就用pip安装各类组件模块(Tensorflow,opencv,……)就可以啦。

    关于pip与anaconda区别:https://www.cnblogs.com/piperck/p/5057291.html

(2)安装anaconda3

     参考教程:https://blog.****.net/qq_15192373/article/details/81091098

     注1:操作系统是16还是18对版本的选择没有要求。注意对应电脑是32位还是64位。

                Anaconda3-5.3.0-Linux-x86_64 对应默认python3.6。

     注2:阅读注册信息一路enter即可,直到询问是否同意

     注3:想好好管理目录的话,可以在第2点的第5)步修改anaconda的安装路径。

     注4:第2点的第8)步跟我自己装的时候不一样,会询问是否添加路径。

installation finished.
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/hj/.bashrc ? [yes|no]

                输入yes就可避免参考教程中第2点第11)步的自己设置。

      注5:安装后需要重启终端才能使用。

(3)使用ananconda

conda list    #查看通过anaconda安装的软件包及其版本号
conda install pillow    #使用conda安装pillow软件包

        常见conda指令:https://www.jianshu.com/p/7ebe1df808ba

        注:给conda更换下载源,换成国内源会比官网源下载速度快很多,换conda源方法如下:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
#每行依次复制粘贴到终端中执行即可

  3.利用anaconda3中创建tensorflow计算环境

(1)创建tensorflow计算环境

       (这里的tensorflow是环境的名字,不是指安装了tensorflow)

conda create -n tensorflow python=3.6
# 注意指定自己要用的python版本号

(2)**tensorflow环境

source activate tensorflow
(tensorflow) [email protected]:~    #**后会显示处于该环境中

(3)创建的指定环境中安装tensorflow

        (此处坑较多……)

   1)下载cpu版tensorflow安装包

          下载链接:https://github.com/lakshayg/tensorflow-build/blob/master/README.md

          涉及到需要确认cpu支持的指令,如FMA, AVX, AVX2, SSE4.1, SSE4.2, AVX512F。验证方法,没有去验证到底有啥,是在安装过程中提示不支持AVX512F,就选择其他版本就好了。python版本选择相近的自己测试似乎没什么问题。

    2)将whl文件重命名为tensorflow-x.x.x-py3-none-linux_x86_64.whl

          x.x.x是自己的版本号,主要是将中间的cp36-cp36m改成py3-none,不然会出现不支持的报错。

    3)终端中切换到whl文件所在的目录

    4)pip install --ignore-installed --upgrade tensorflow-x.x.x-py3-none-linux_x86_64.whl

          注:不要用sudo pip,也不要用pip3

    5)安装结束,可以进入python import一下验证

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
sess.run(hello)
# 打印出内容,不报错,即成功安装

4.安装其他faster-rcnn中需要的组件

(因为重装了系统,啥都没有,于是从0装起)

   此时还是处在名为tensorflow的环境中的哟,用conda install 安装以下组件(这时就体现出换源的好处了!)

   cython,opencv-python,easydict,pillow

   举个例子:

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

    实际上,此时我也不知道缺了哪些模块,需要下载faster-rcnn工程看看代码或者执行代码才知道…所以可以在执行时看看提示缺少哪个module再进行conda install(虚弱的微笑.jpg)

   

二、faster-rcnn工程创建

    终于来到激动人心的时刻了!终于离跑demo又近了一步!

1.下载faster-rcnn代码

# 先在终端cd进入你要存代码的目录,然后:
git clone https://github.com/endernewton/tf-faster-rcnn.git
# 用git从github上拉取源代码
# 完成后就可以在目录中看到一个tf-faster-rcnn的文件夹,如果在clone时想改变文件夹名字,在语句最后空格加命名即可

2.修改配置

     原代码使用gpu,需要在几个相关文件中将使用gpu的语句注释掉。

(1)双击/gedit 打开 /faster-rcnn/lib下的setup.py

           1)注释掉CUDA = locate_cuda()

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

           2)注释掉self.set_executable('compiler_so', CUDA['nvcc'])

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

          3)注释掉Extension(...........),一行一行注释。然后保存退出。

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

(2)打开tf-faster-rcnn/lib/model/nms_wrapper.py,禁用gpu模式

          1)注释from nms.gpu_nms import gpu_nms

          2)注释cfg.USE_GPU_NMS and not force_cpu:
                            return gpu_nms(dets, thresh, device_id=0)

                保存退出。

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

3.运行配置文件

cd ~/xxx/tf-faster-rcnn/lib   #修改为自己的路径,进入lib目录
make clean
make
# 若刚才两个配置文件注释正确,就可无报错,配置成功

4.安装Python COCO API

   因为代码运行需要使用coco API来连接coco 数据集

cd /xxxx/tf-faster-rcnn/data    #进入tf-faster-rcnn目录下的data目录
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make

5.测试预训练模型与运行demo

(1)下载预训练模型

    1)要用到的模型 voc_0712_80k-110k.tgz ,由于自己比较弱鸡,不会配置aria,下载贼慢,于是先在windows中用百度网盘手动下载,然后移过来的。百度网盘:https://pan.baidu.com/s/1kWkF3fT

    2)移到data文件夹里。

    3)然后终端里进入data文件夹tar xvf (就是解压),data文件夹中将获得一个名为voc_2007_trainval+voc_2012_trainval的文件夹。

cd ~/xxxx/tf-faster-rcnn/data    #注意修改成自己的路径
tar xvf voc_0712_80k-110k.tgz

    打开文件夹,里面有四个预训练好的模型。

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

(2)建立预训练模型的软链接

cd /xxxx/tf-faster-rcnn/data    #进入data目录
NET=res101
TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
mkdir -p output/${NET}/${TRAIN_IMDB}    
#在data目录下创建了一个/output/res101/voc_2007_trainval+voc_2012_trainval的路径
cd output/${NET}/${TRAIN_IMDB}    #进入该目录
ln -s ../../../voc_2007_trainval+voc_2012_trainval ./default
# ln -s [源文件或目录] [目标文件或目录]  创建软链接
# ../指上一级目录,于是../../../ = output/res101/voc_2007_trainval+voc_2012_trainval的前三级目录即指向data目录,再加/voc_2007_trainval+voc_2012_trainval,即指向了data目录下的刚刚解压出来的文件夹。
# 也就是将data/voc_2007_trainval+voc_2012_trainval与data/output/res101/voc_2007_trainval+voc_2012_trainval/default建立了链接,打开default可以看到四个模型

(3)运行demo.py

           1)先打开位于/tools里的demo.py文件,修改model path,下图中高亮部分

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

原本为‘output’,不修改的话直接运行demo.py会报OSEerror,提示找不到指定的模型

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

          2)运行demo.py

cd /xxxx/tf-faster-rcnn/tools    #注意修改路径,进入tools目录,demo.py位于此目录下
python demo.py    
#注意,这里是在刚才的tensorflow环境中运行
# 可能会提示各种缺模块,按提示的装就好了。
# 若提示缺PIL,但PIL依赖于python2.7,于是改装pillow(支持python3)

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

           然后不出意外就会有如下景象,并且电脑小风扇呼啦呼啦响。

[新手向 超详细] ubuntu16.04 faster-rcnn(tensorflow cpu) demo测试记录(一)流程篇

            注:/data/demo中有5张图片,运行完demo.py后会生成12张检测的图,标签从person到horse到sofa啥的。

 

好了,至此,demo.py算是成功了。

接下来该研究源代码了。

虚弱的微笑.jpg