我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)
1. 本人系统配置:
LINUX+python3.6+tensorflow+cpu
(主要参考:https://blog.****.net/char_QwQ/article/details/80980505)
2. 克隆代码
git clone https://github.com/endernewton/tf-faster-rcnn.git
3. 根据显卡或cpu更改对应的架构
(参考:https://blog.****.net/sinat_33486980/article/details/81045315)
3.1修改lib/model/nms_wrapper.py:
按照图中箭头所指示的地方,将代码注释,作用就是为了直接禁用掉GPU模式 3.2lib/setup.py
3.3将USE_GPU_NMS 由原来的True改为False
4. 编译Cython
仍然在lib路径下,编译Cython模块(确保你已经安装了easydict,如果没有,pip install easydict):
1 make clean
2 make
3 cd …
5. 获取网络模型初始权重
在根目录下打开终端,输入以下命令:
(1)如果是使用VGG16模型
mkdir -p data/imagenet_weights
cd data/imagenet_weights
wget -v http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
tar -xzvf vgg_16_2016_08_28.tar.gz
mv vgg_16.ckpt vgg16.ckpt
cd …/…
(2)如果是Resnet101模型
mkdir -p data/imagenet_weights
cd data/imagenet_weights
wget -v http://download.tensorflow.org/models/resnet_v1_101_2016_08_28.tar.gz
tar -xzvf resnet_v1_101_2016_08_28.tar.gz
mv resnet_v1_101.ckpt res101.ckpt
cd ../..
6. 下载数据:
6.1Download the training, validation, test data and VOCdevkit
1 wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
2 wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
3 wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
6.2Extract all of these tars into one directory named VOCdevkit
1 tar xvf VOCtrainval_06-Nov-2007.tar
2 tar xvf VOCtest_06-Nov-2007.tar
3 tar xvf VOCdevkit_08-Jun-2007.tar
6.3t should have this basic structure 6.4Create symlinks for the PASCAL VOC dataset
1 cd $FRCN_ROOT/data
2 ln -s $VOCdevkit VOCdevkit2007
#或者直接重命名,直接把VOCdevkit文件夹拷贝到tf-fater-rcnn/data路径下,并重命名为VOCdevkit2007
7.下载预训练模型
需要翻墙,如果翻不了墙就从网盘里下吧,我存网盘了。链接:预训练模型 密码:8ahl
解压得到四个文件
8. 建立预训练模型的软连接
在tf-faster-rcnn目录下建立output文件夹,并使用软连接来使用预训练模型,这里按照步骤走就行,没啥问题:
1 NET=res101
2 TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
3 mkdir -p output/{TRAIN_IMDB}
4 cd output/{TRAIN_IMDB}
5 ln -s …/…/…/voc_2007_trainval+voc_2012_trainval ./default
6 cd …/…/…
9. 修改lib/model/trainval_net.py
修改第50行,default
10. 对一些图片进行测试
仍然按步骤走:tools/demo.py要修改一句代码:第120行路径改为绝对路径,不然会报错
(在Spyder运行即可,可跳过下面代码)
(1 GPU_ID=0
2 CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py)
运行过程中会提示缺少很多模块,依据提示用 pip install $$$ 安装即可
11.使用训练好的faster模型对数据进行测试
这里有点地方需要改:首先把 tf-faster-rcnn/lib/datasets/voc_eval.py的第121行的
with open(cachefile,‘w’) as f
改成:
with open(cachefile,‘wb’) as f
同时还要把第105行的
cachefile = os.path.join(cachedir, ‘%s_annots.pkl’ % imagesetfile)
改成:cachefile = os.path.join(cachedir, ‘%s_annots.pkl’ % imagesetfile.split("/")[-1].split(".")[0])
然后在文件根目录下运行训练代码即可:
./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc vgg16
12. 遇到的问题解决方式:
(参考:https://blog.****.net/weixin_39970417/article/details/80576252)