tensorflow版本faster-rcnn-CPU, ubuntu, Python3.5配置记录
写在前面的话
在实验室电脑上进行fasterrcnn_tensorflow版本的配置,看了很多blog也踩了很多的坑,现在在这里把正确的整个步骤记录下来
软硬件配置
主要是软件方面,硬件方面由于使用的GPU是amd的,所以没法使用tensorflow-GPU版本
软件和python版本,python库之类的,推荐使用anaconda进行配置,各种库的安装会方便很多,tensorflow具体的配置可见https://blog.csdn.net/zzyincsdn/article/details/83342304这篇文章,linux和win10下的配置基本是一样的。在anaconda的安装目录的bin文件夹下运行anaconda-navigator也可以启动py库管理界面
python3.5
tensorflow 1.3.0
opencv 3.4.2(有py前缀和无py前缀的都装上)
cython 0.28.5
easydict(这个在anaconda里我没找到,用pip安装的)
pillow 5.2.0
matplotlib
scipy(这个也是用pip装的)
PyYAML
使用Pycharm时踩的坑
最开始尝试使用Ubuntu上的Pycharm进行项目管理,出现一个bug,就是py文件无法进行同一工程文件夹下二级目录的查找,以demo.py来说,源代码中的import utils.nms_wrapper等引入是这样使用的:
config和nms_wrapper都是lib文件夹下的py文件,所以为了让pycharm能够正常识别,所有类似的对同级文件夹下文件的import都需要在前面加上文件夹名称,即改写成类似于
由于需要改写的代码段略多,所以本次并没有在pycharm中进行编写,预计之后会尝试将代码整合到IDE中进行管理
配置流程
1.下载git上的源代码
git clone https://github.com/endernewton/tf-faster-rcnn.git
直接在需要下载源码的地方打开终端并输入就可以了
2.修改lib/setup.py文件
该文件在安装根目录的lib文件夹下,这个文件是在配置中添加所需要的各个文件模块。
整个代码修改部分的注释建议使用#按行注释而不是’''来整段注释
由于我们使用的是CPU版本,所以将图片内该部分代码注释掉
如果要严谨一点的化,不要忘记将Extension(“nms.cpu_num”…)这一段后面的逗号给删除
将包含使用CUDA的行给注释掉,因为使用的是CPU版本。
修改并保存该文件之后,执行source activate tensorflow(如果你已经用anacondea配置好一个名叫tensorflow的,包含了必要py库的文件的话,就直接这样做,如果没有,可以去看软硬件配置部分推荐的文章或者学习anaconda的使用) 启动环境,然后执行
python3 setup.py build_ext --inplace
该指令会将setup.py中设置的模块进行装载。如果不装载的话,在识别过程中是无法找到对应py模块的。笔者就是在修改保存setup.py之后忘记执行装载,所以遇到了很多麻烦,包括No module named ‘nms.cpu_nms’以及No module named 'utils.cython_bbox’等等
3.修改lib/model/nms_wrapper.py文件
打开该目录文件,之后将需要gpu模块以及使用gpu返回结果的代码进行注释,分别在import语句部分以及return语句部分
4.修改lib/model/config.py文件
打开该文件,将__C.USE_GPU_NMS=True修改为False
连接使用cython
在lib目录下,依次执行指令
make clean
make
cd ..
下载使用COCO数据库
在data目录下,下载并使用COCO数据库
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..
下载并连接已经完成训练的数据模型
这里使用的模型是 voc_0712_80k-110k.tgz,可以参照源代码中的README.md文件中的目录去下载。如果不能,这里提供一个连接
链接: https://pan.baidu.com/s/1dM6eygY67KzrEDbj03ZV7Q 提取码: wfby
下载之后放在data目录下解压,我们会解压得到一个名为ivoc_2007_trainval+voc_2012_trainval的文件夹
之后还是在data目录下,依次执行以下命令
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
这一段代码在data/output/res101/voc_2007_trainval+voc_2012_trainval目录下生成一个default指向训练数据的软连接
运行demo.py文件
在源代码主目录中,我们执行 …/tools/demo.py 指令,demo文件就可以正确执行并识别目标了。(要保持现在依然在activate我们的tensorflow环境才可以执行)
下一步的任务
尝试使用课题研究所用的数据集,学习使用faster-rcnn进行模型的训练