现在在用TensorFlow,所以找了这个 tf-faster-rcnn 实现faster rcnn。由于我的电脑是新装的,所以在安装过程中遇到不少问题,现在记录下来。
tf-faster-rcnn的github地址 https://github.com/endernewton/tf-faster-rcnn
作者的readme写的挺好的,照着做没问题。现在补充些我遇到的。
1、安装cython,python-opencv,easydict,yaml。
import xxx不报错就行了。
2、修改GPU model
3、在运行测试脚本的时候。脚本调用的生成模型在output中,而且默认迭代70000次。如果中途停止了,想运行测试脚本。要修改test脚本中迭代值。否则会给出找不到模型的错误
训练自己的数据遇到不少问题,主要在于作者没给出修改哪些文件,现在记录下来。
1、制作自己的数据集
网上有很多制作pascal数据集的教程和代码,就不赘述了。做好的数据集放在data文件夹下。
2、修改训练、测试命令脚本
cd experiments/scripts/
vim train_faster_rcnn.sh
vim test_faster_rcnn.sh
这里修改的是迭代次数
case ${DATASET} in
pascal_voc)
TRAIN_IMDB="voc_2007_trainval"
TEST_IMDB="voc_2007_test"
STEPSIZE="[5000]"
ITERS=10000
ANCHORS="[8,16,32]"
RATIOS="[0.5,1,2]"
3、修改超参数
cd lib/model/
vim config.py
在config.py中可以修改学习率、动量等超参数。
4、修改pascal_voc.py。
cd lib/datasets
修改pascal_voc.py中的类别
self._classes = ('__background__', # always index 0
'digital tube')
5、修改demo.py
cd tools/
这里有两处修改
(1)修改NETS名称。cpkt文件中的数字要跟生成模型的迭代次数一致,否则就找不到文件了。
NETS = {'vgg16': ('vgg16_faster_rcnn_iter_10000.ckpt',),'res101': ('res101_faster_rcnn_iter_110000.ckpt',)}
DATASETS= {'pascal_voc': ('voc_2007_trainval',),'pascal_voc_0712': ('voc_2007_trainval+voc_2012_trainval',)}
(2)main函数中修改 类别数。我这里是2。数字应该是类别+1。1是背景。
net.create_architecture("TEST", 2,
tag='default', anchor_scales=[8, 16, 32])
6、完成修改了,可以愉快训练测试了。
./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc vgg16
7、如果在训练或测试自己的数据集之前,先训练了一次作者的数据。可能会报出数据大小不一致的错误。删除之前训练生成的文件就好。这一点没有非常明白。我遇到过这种错误,用这种方法解决的。
如果您搞清楚了,可以在下面留言告诉我。