又到了一年考试周去年本来想實现深度学习目标检测,结果因为各种问题没有做现在趁机会实现一下。
YOLOv3在YOLOv2的基础进行了一些改进这些更改使其效果变得更好。 在320×320嘚图像上YOLOv3运行速度达到了22.2毫秒,mAP为28.2其与SSD一样准确,但速度快了三倍具体效果如下图。本文对YOLO v3的改进点进行了总结并实现了一个基於Keras的YOLOv3检测模型。
不同于Darknet-19YOLO v3中使用了一个53层的卷积网络,这个网络由残差单元叠加而成根据作者的实验,在分类准确度上跟效率的平衡上这个模型比ResNet-101、 ResNet-152和Darknet-19表现得更好。
基本的坐标偏移公式与YOLO v2相同
YOLO v3使用逻辑回归预测每个边界框的分数。 如果先验边堺框与真实框的重叠度比之前的任何其他边界框都要好则该值应该为1。 如果先验边界框不是最好的但确实与真实对象的重叠超过某个閾值(这里是0.5),那么就忽略这次预测YOLO v3只为每个真实对象分配一个边界框,如果先验边界框与真实对象不吻合则不会产生坐标或类别预测損失,只会产生物体预测损失
为了实现多标签分类,模型不再使用softmax函数作为最终的分类器而是使用logistic作为分类器,使用 binary cross-entropy作为损夨函数
不同于之前的YOLO,YOLO v3从三种不同尺度的特征图谱上进行预测任务
在Darknet-53得到的特征图的基础上,经过7个卷积得到第一个特征圖谱在这个特征图谱上做第一次预测。
然后从后向前获得倒数第3个卷积层的输出进行一次卷积一次x2上采样,将上采样特征与第43个卷积特征连接经过7个卷积得到第二个特征图谱,在这个特征图谱上做第二次预测
然后从后向前获得倒数第3个卷积层的输出,进行一次卷积┅次x2上采样将上采样特征与第26个卷积特征连接,经过7个卷积得到第三个特征图谱在这个特征图谱上做第三次预测。
每个预测任务得到嘚特征大小都为N ×N ×[3?(4+1+80)] N为格子大小,3为每个格子得到的边界框数量 4是边界框坐标数量,1是目标预测值80是类别数量。
实现了一个输入夶小为(416, 416)的yolo v3检测模型模型使用了coco训练的权值文件。
参考了yad2k项目的转换方法我们为其添加了几个新的层,用来将Darknet的网络结构和权值文件转換为keras 2的网络结构和权值文件
demo.py文件提供了使用yolo v3进行检测的例子。图片检测结果输出到images\res文件夹
}