yoloV3主页:https://pjreddie.com/darknet/yolo/
keras-yolo3代码:https://github.com/qqwweee/keras-yolo3
VOC数据集:http://host.robots.ox.ac.uk/pascal/VOC/
一、编译环境
- windows7
- Anaconda+python3.6+keras+tensroflow+pyCharm
二、步骤
-
测试
- 从上文第二个github上下载工程,并用pyCharm打开,keras-yolo3-master。
- 下载yoloV3权重文件
https://pjreddie.com/media/files/yolov3.weights
- 将darknet下的yolov3配置文件转换成keras适用的h5文件:
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
-
运行预测图像程序
python yolo_video.py --image
输入测试图像路径:
-
输出测试结果
- 从结果来看,预训练权重检测结果尚可。
-
训练
- 下载VOC2007数据集合得到VOCtrainval_06-Nov-2007.tar和VOCtest_06-Nov-2007.tar,分别解压命名为VOC2007和VOC2007_test放在文件夹VOCdevkit下。
- 根据使用VOC数据集的年份修改voc_annotation.py文件中的sets。
ets=[('2007', 'train'), ('2007', 'val'), ('2007', 'test')] classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"]
- 运行代码
python voc_annotation.py
得到3个txt文件:2007_val.txt,2007_train.txt,2007_test_test.txt
- 为了加快训练速度,下载darknet网络的预训练权重
https://pjreddie.com/media/files/darknet53.conv.74
将darknet53.conv.74改名为darknet53.weights,并转化为keras能够接受的权重形式。
python convert.py -w darknet53.cfg darknet53.weights model_data/darknet53_weights.h5
-
修改train.py的34行,将weights_path='model_data/yolo_weights.h5'修改为weights_path='model_data/darknet53_weights.h5',运行代码
-
python train.py
训练过程:
-
训练结束:
-
第一阶段训练结束,训练50次得到trained_weights_stage_1.h5,此时的loss=34,似乎下降明显,但是val_loss=4399依然很大。Train.py的71行开始会在不释放当前训练结果的前提下进行第二阶段的训练,但是似乎由于显存耗尽的缘故,训练没有持续下去。
-
对第一阶段的训练结果进行测试,
修改yolo.py的代码
#"model_path": 'model_data/yolo.h5', "model_path": 'model_data/trained_weights_stage_1.h5', "anchors_path": 'model_data/yolo_anchors.txt', #"classes_path": 'model_data/coco_classes.txt', "classes_path": 'model_data/voc_classes.txt',
运行代码
python yolo_video.py --image
测试结果如下:
-
可以看出测试结果很不好。所以,应该尝试继续训练。