官方给出的Faster R-CNN的代码是caffe框架下的,我对caffe不是很了解,一直用的是tensorflow环境,所以去网上找了一下用tensorflow实现的Faster R-CNN。找到了一篇博客https://blog.csdn.net/sinat_33486980/article/details/81045315,作者使用的是一个github上Xinlei Chen的tensorflow版本的faster rcnn代码。这里贴出github链接https://github.com/endernewton/tf-faster-rcnn首先,按照博客里面作者的步骤,一步步实现,但是我是在自己的台式机上跑的,没有GPU,因此需要做一些修改。下面走一遍整个流程,记录下踩过的坑。
将博客https://blog.csdn.net/sinat_33486980/article/details/81045315 分享给大家
1.本机环境
ubuntu16.04无GPU
tensorflow版本是1.5.0
python版本3.6 (anaconda安装,虽然系统自带python,但是使用anaconda安装可以一次性将大部分机器学习中用到的包装好,所以建议使用anaconda安装)
cython版本0.29
opencv-python 3.4.4.19
easydict版本1.9
git clone https:
//github
.com
/endernewton/tf-faster-rcnn
.git
我是直接在home目录下建了一个我自己的文件夹jcm,然后在这个文件夹上右击,在此处打开终端,输入上面的命令就可以将整个项目代码下载到jcm文件夹下。
在lib文件夹下有个setup.py文件,里面可以设置CPU和GPU的参数。如图所示
我这里没有GPU,所以选择cpu运行,此处必须做相应的修改,因为代码默认是在GPU下运行,所以按照后面编译的命令执行时会报错。python setup.py build_ext --inplaceTraceback (most recent call last):File "setup.py", line 58, in
make: *** [all] 错误 1
问题解决:
首先按照github里面的readme,只要将USE_GPU_NMS 由原来的True改为False就可以。但是我改完发现,后面编译的时候还是会报错。
苦苦查询了很久,终于在一个贴吧找到了解决办法,地址为https://zhidao.baidu.com/question/505011922.html
我这里总结下需要修改的位置:
(1)修改lib/model/nms_wrapper.py
按照图中箭头所指示的地方,将代码注释,作用就是为了直接禁用掉GPU模式
(2)lib/setup.py
需要注意的是,不要直接用三个引号的方式整块注释,要一行一行注释。
4.链接cython 模块
在lib目录下打开终端,输入
make clean
make
cd ..
如果按照前面的步骤,把GPU配置的代码注释,应该可以成功编译(不报错)。
此时终端回到主目录tf-faster-rcnn
5.安装 Python COCO API,这是为了使用COCO数据库
cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..
此时终端的目录是主目录tf-faster-rcnn
6.运行Demo 和测试预训练模型
(1)下载预训练模型
要用到的模型 voc_0712_80k-110k.tgz ,按照readme里面给的sh文件下载可能会有网络问题,下载不下来。这个文件可以手动下载(百度云备份:https://pan.baidu.com/s/1kWkF3fT),下载之后放到 data文件夹中就行。使用命令
tar xvf voc_0712_80k-110k.tgz
解压得到voc_2007_trainval+voc_2012_trainval文件夹
(2)建立预训练模型的软连接
NET=res101
TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
mkdir -p output/${NET}/${TRAIN_IMDB}
cd output/${NET}/${TRAIN_IMDB}
ln -s ../../../voc_2007_trainval+voc_2012_trainval ./default
cd ../../..
打开default会显示链接到的四个模型文件。
(3)运行demo
../tools/demo.py
运行结果:
这个demo里面自带5张照片:
运行后的预测结果为12张图像:
到此结束~
本篇博客仅仅只是为了记录学习的过程,是学习博客https://blog.csdn.net/sinat_33486980/article/details/81045315
再次感谢上面博主的分享。