Faster RCNN运行
代码地址:
tensorflow版本Faster RCNN代码地址:
https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5
一、环境准备
包括环境配置
主要是安装一个tensorflow gpu
预训练模型下载
voc官方数据集格式下载
代码的编译
参考:https://blog.csdn.net/mao_hui_fei/article/details/120588340
二、训练
0、数据集准备
将xml文件放入Annotations,将图片放入JPEGImages。ImageSets/Main/内部放置训练的文件txt集合。这里和yolo v4的训练一样。
1、修改pascal_voc.py文件中待训练的类别种类。
Faster-RCNN-TensorFlow-Python3.5-master\lib\datasets\pascal_voc.py文件中,将以下代码中的类别替换为自己数据集的类别(不要删除类别!!不要更改’background’!!例如我需要分类的类别为card1,则选择一个原有类别更换为“card1”)
2、删除\data\cache缓存文件
训练前,请务必删除Faster-RCNN-TensorFlow-Python3.5-master\default\voc_2007_trainval\default\里之前的模型以及Faster-RCNN-TensorFlow-Python3.5-master\data\cache里的文件,不然测试的时候会报错!!特别是第二个文件!!!
3、\lib\config\config.py中修改训练参数
删除完相关文件,完成一、二步的测试后,Faster-RCNN-TensorFlow-Python3.5-master\lib\config\config.py中可以更改一些初始参数,下面的代码为训练的总步数。
tf.app.flags.DEFINE_integer('max_iters', 20000, "Max iteration")
修改完参数后运行train.py即可训练。
注意点1
Fastrcnn训练时在
cls = self._class_to_ind[obj.find('name').text.strip()]
这句语句出错,原因是你的类别是有分区大小写的,或者说类别名字有大写字母,这句话可以改成
cls = self._class_to_ind[obj.find('name').text.strip()]
注意点2
faster rcnn训练时,出现image invalid,skipping
可能你图像质量不是特别好,被代码给剔除了
报错原因是fg_inds和bg_inds的数量都小于0,这张图片没办法训练了,所以直接跳过这张图。办法是调整config.py里的
roi_bg_threshold_high和roi_bg_threshold_low,一般把roi_bg_threshold_low改成0.0就不会出现这个问题。
三、测试
训练后需使用demo.py文件进行测试,其中类别修改方式与训练的时候相同。
测试成功
参考:
1、 https://blog.csdn.net/qq_29462849/article/details/80510687
2、win10上使用Faster R-CNN训练自己的数据集
3、Windows10下实现Faster R-cnn+Tensorflow+python且训练自己的数据集