前言:
原代码:https://github.com/yhenon/keras-frcnn 已经失效,本次采用的代码来自
https://github.com/kbardool/keras-frcnn
下载后可以看到,代码与原代码基本一致。
推荐博文:https://segmentfault.com/a/1190000017398753
一、运行环境要求
tensorflow
h5py
Keras==2.0.3
numpy
opencv-python
sklearn
注意:tensorflow和keras版本不要太高,尤其是keras版本,尽可能的靠近2.03版本,否则容易报错。
二、数据准备
在keras-frcnn-master/keras_frcnn/pascal_voc_parser.py中的get_data显示两个数据集(VOC2007,VOC2012)。但是实际训练时只需要一个数据集即可。本次采用的是VOC2012,所以将VOC2007删除
def get_data(input_path):
all_imgs = []
classes_count = {}
class_mapping = {}
visualise = False
data_paths = [os.path.join(input_path,s) for s in ['VOC2012']]
print('Parsing annotation files')
voc2012下载地址:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
下载结束后在下载文件目录下进行解压(尽量用命令解压,直接右击鼠标解压容易破坏文件属性,导致部分文件无法生成)
命令:tar -xvf VOCtrainval_11-May-2012.tar
解压后会生成VOCdevkit文件夹,将该文件夹复制到faster rcnn根目录下,如图
三、运行train_frcnn.py
在faster rcnn根目录下,使用命令:python train_frcnn.py -p /path/to/pascalvoc/
注意: 1./path/to/pascalvoc/要替换为自己的路径,修改到keras-frcnn-master下VOCdevkit即可运行
2.运行此代码是,需要运行2000轮,需要大量的时间,如果不需要这么多轮训练,可以在train_frcnn.py的第32行自行修改。
training. (Default=false).", action="store_true", default=False)
parser.add_option("--vf", dest="vertical_flips", help="Augment with vertical flips in training. (Default=false).", action="store_true", default=False)
parser.add_option("--rot", "--rot_90", dest="rot_90", help="Augment with 90 degree rotations in training. (Default=false).",
action="store_true", default=False)
parser.add_option("--num_epochs", type="int", dest="num_epochs", help="Number of epochs.", default=2000)
每轮训练1000张图片,需要RPN网络分别作分类(区别前景还是背景)和回归(画推荐框)同时还有faster rcnn作最后的分类(区分物体类别)和回归(画框)。
train.py运行后将会生成.hdf5文件。
同时还需要下载.h5文件(已经训练好的权重信息)链接如下:
h5文件(resnet50----tensorflow版本)
keras版本的faster rcnn 版本的train.py训练到此结束。可用生成的模型对自己的目标进行检测。