基于keras的YOLOv3在VOC数据集上训练测试

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

二、步骤

  • 测试

  1. 从上文第二个github上下载工程,并用pyCharm打开,keras-yolo3-master。
  2. 下载yoloV3权重文件
    https://pjreddie.com/media/files/yolov3.weights

     

  3. 将darknet下的yolov3配置文件转换成keras适用的h5文件:
    python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

     

  4. 运行预测图像程序

    python yolo_video.py --image

    输入测试图像路径:基于keras的YOLOv3在VOC数据集上训练测试_第1张图片

  5. 输出测试结果

  6. 基于keras的YOLOv3在VOC数据集上训练测试_第2张图片

  7. 从结果来看,预训练权重检测结果尚可。
  • 训练

  1. 下载VOC2007数据集合得到VOCtrainval_06-Nov-2007.tar和VOCtest_06-Nov-2007.tar,分别解压命名为VOC2007和VOC2007_test放在文件夹VOCdevkit下。
  2. 根据使用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"]
    
  3. 运行代码
    python voc_annotation.py

    得到3个txt文件:2007_val.txt,2007_train.txt,2007_test_test.txt

  4. 为了加快训练速度,下载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

    基于keras的YOLOv3在VOC数据集上训练测试_第3张图片

  5. 修改train.py的34行,将weights_path='model_data/yolo_weights.h5'修改为weights_path='model_data/darknet53_weights.h5',运行代码

  6. python train.py

    训练过程:基于keras的YOLOv3在VOC数据集上训练测试_第4张图片

  7. 训练结束:基于keras的YOLOv3在VOC数据集上训练测试_第5张图片

  8. 第一阶段训练结束,训练50次得到trained_weights_stage_1.h5,此时的loss=34,似乎下降明显,但是val_loss=4399依然很大。Train.py的71行开始会在不释放当前训练结果的前提下进行第二阶段的训练,但是似乎由于显存耗尽的缘故,训练没有持续下去。

  9. 对第一阶段的训练结果进行测试,

    修改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

    测试结果如下:

  10. 基于keras的YOLOv3在VOC数据集上训练测试_第6张图片

  11. 可以看出测试结果很不好。所以,应该尝试继续训练。

 

 

 

参考:使用keras版本的yoloV3训练并在VOC数据集上测试

你可能感兴趣的:(目标检测)