我的第一个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模式
我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)  3.2lib/setup.py
我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)   3.3将USE_GPU_NMS 由原来的True改为False
我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)
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
我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)  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/NET/{NET}/{TRAIN_IMDB}
4 cd output/NET/{NET}/{TRAIN_IMDB}
5 ln -s …/…/…/voc_2007_trainval+voc_2012_trainval ./default
6 cd …/…/…
我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)

9. 修改lib/model/trainval_net.py
修改第50行,default
我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)

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. 遇到的问题
我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)解决方式:
(参考:https://blog.****.net/weixin_39970417/article/details/80576252)
我的第一个tf-faster-rcnn训练程序(demo+voc2007数据训练)