[新手向 超详细] 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
举个例子:
实际上,此时我也不知道缺了哪些模块,需要下载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()
2)注释掉self.set_executable('compiler_so', CUDA['nvcc'])
3)注释掉Extension(...........),一行一行注释。然后保存退出。
(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)
保存退出。
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
打开文件夹,里面有四个预训练好的模型。
(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,下图中高亮部分
原本为‘output’,不修改的话直接运行demo.py会报OSEerror,提示找不到指定的模型
2)运行demo.py
cd /xxxx/tf-faster-rcnn/tools #注意修改路径,进入tools目录,demo.py位于此目录下
python demo.py
#注意,这里是在刚才的tensorflow环境中运行
# 可能会提示各种缺模块,按提示的装就好了。
# 若提示缺PIL,但PIL依赖于python2.7,于是改装pillow(支持python3)
然后不出意外就会有如下景象,并且电脑小风扇呼啦呼啦响。
注:/data/demo中有5张图片,运行完demo.py后会生成12张检测的图,标签从person到horse到sofa啥的。
好了,至此,demo.py算是成功了。
接下来该研究源代码了。
虚弱的微笑.jpg