利用yolov3 进行目标检测(可自定义检测的类别)

最近在研究车辆检测相关算法,因yolo算法的速度和精度基本均能满足要求,原版的yolo v3算法是检测多类物体,本人是在原来代码的基础上修改为检测单目标车辆,并基于预训练权重在VOC2007数据集上进行训练。
源代码:https://github.com/qqwweee/keras-yolo3
原作者已经给出了训练和测试方法,在此不再赘述。

要实现只检测“car”这一类别,要修改的地方有一下几个:

1、修改yolo.cfg文件
将yolo.cfg文件的classes修改为1,所有的filters=255的值修改为filters=18(计算方式为(classes+5)*3)。(为了不改变yolo.cfg,我是直接将yolo.cfg另存为car.cfg,再做修改)
注意:filters仅仅是Yolo层前的filters修改为18

2、修改类别文件
将coco_class.txt和voc_class.txt文件中的类别全部修改成‘car’ ,或在该目录下新建object_classes.txt文件,写入car。

3、修改voc_annocation.py, 生成数据集
将voc_annocation.py 中的classes修改成只有“car”一个,
在这里插入图片描述
准备数据集VOC2007, 然后运行voc_annocation.py生成2007_train.txt和2007_test.txt,2007_val.txt文件
利用yolov3 进行目标检测(可自定义检测的类别)_第1张图片
4、生成预训练权重文件yolo_weights.h5

下载 yolov3.weights ,放到工程根目录下,cmd下切换到工程目录下,使用命令:

python convert.py -w car.cfg yolov3.weights model_data/yolo_weights.h5

注意,此处的car.cfg 为前面新建的,如果直接在原yolo.cfg上改的,则使用yolo.cfg在这里插入图片描述
利用yolov3 进行目标检测(可自定义检测的类别)_第2张图片
5、进行训练
运行 train.py 文件,注意更改训练文件目录(annotation_path),类别文件目录(classes_path)。
训练完成后会生成一个logs文件夹,里面的000文件夹下会有训练好的权重文件,trained_weights_stage_1.h5 是第一阶段训练得到的(只训练后三层),trained_weights_final.h5是最终得到的训练权重文件(全训练)。

6、测试

修改yolo.py文件,将其中的model_path换成自己生成的trained_weights_final.h5文件的目录, classes_path 改成 待检测的目标类文件object_classes.txt.
利用yolov3 进行目标检测(可自定义检测的类别)_第3张图片
最后就是加载图片或视频进行测试了。
利用yolov3 进行目标检测(可自定义检测的类别)_第4张图片
也可根据需要,对应做上面的修改以满足指定类别物体的检测。
初学者,以上如有不正确之处请指出,谢谢!

你可能感兴趣的:(深度学习)