Faster RCNN 的tensorflow版本运行

代码地址:

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且训练自己的数据集

Guess you like

Origin blog.csdn.net/mao_hui_fei/article/details/120504506