cv小白的yolov3学习笔记总结
论文下载地址:YOLOv3: An Incremental Improvement
yolov网址:https://pjreddie.com/darknet/yolo/
yolov3是yolov系列的第三个版本,yolov1和yolov2分别发表在2016和2017年的CVPR上。yolo系列算法是基于深度学习和卷积神经网络的单阶段通用目标检测算法,把目标检测问题转化为回归问题,不需要经过提取候选框的冗余问题。
yolov3网络体积比yolov2网络更大,更深,但是准确度更高。在320×320的输入图像尺寸下,yolov3能够达到28.2的mAP,运算一张图片,前项推断需要22ms,和SSD一样准确,但是比SSD快三倍。yolov3在以0.5为IOU阈值时的mAP是比较好的。在Titan X环境下,yolov3的检测精度为57.9AP50,用时51ms;而RetinaNet的精度只有57.5AP500,但却需要198ms,yolov3比RetinaNet快3.8倍。
摘要部分解析:
mAP:Mean Average Precision ,即均值平均精度。作为 object dection 中衡量检测精度的指标。
如论文中的图3所示,作者将yolov3折线画在了第二象限,以表明在相同GPU条件下,以0.5为IOU阈值时yolov3比RetinaNet效果要好
横轴是运算时间,越靠左越快;
纵轴是以0.5为IOU阈值时的mAP,折线在图中越靠上则越准确
下图Figure3表明了速度和精度的权衡,速度就是运算时间,精度就是以0.5为IOU阈值时的mAP
蓝色折线是以RetinaNet-50为骨干网络的RetinaNet,橙色折线是以RetinaNet-101为骨干网络的RetinaNet
图表右下方的YOLOv3-320、YOLOv3-416、YOLOv3-608指的是输入图像的尺寸,yolov3和yolov2一样是全卷积网络,因此可以输入任意大小的图像,但是这些图像都必须是32倍数的(320,416,608都是32的倍数)。如果权重一样,不同大小的输入图像会输出不同的结果。
下面再来看论文中的Figure1,这张图是yolov3在以0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95为IOU阈值时,分别算出的mAP求平均值。
我们可以看到,在相同GPU情况下,与上面图3以0.5为IOU阈值时相比,Figure1中yolov3精度虽然有所下降,但是仍然在RetinaNet左上方,还是比RetinaNet效果要好。这也印证了作者在Abstract中写到的:When we look at the old .5 IOU mAP detection metric YOLOv3 is quite good.
即yolov3在高IOU阈值时的表现没有在低IOU阈值条件下的表现好。
1.第一段原文:
在yolov9000(即yolov2)这个版本中,我们对数据集进行了聚类,把聚类中心作为anchor;每个预测框会预测出四个和坐标相关的值(tx、ty、tw、th,通过这四个值可以推算出预测框中心点的横纵坐标,预测框的宽度和高度)。每个grid cell相对于图像左上角偏移了(cx,cy),并且anchor的高度是pw和ph
边框预测第一段解析:
anchor:已经设置好长宽比的固定预测框;比如识别电线杆就会用高瘦的框,识别狗就会用低矮的框;并且通过下面的公式,我们就可以根据四个值(tx、ty、tw、th)来计算出预测框的中心点位置和框的宽高
σ函数:将预测框中心点位置限制在grid cell内部,如下下方论文中Figure2所示
bx:预测框中心点x
by:预测框中心点y
bw:预测框宽度
bh:预测框高度
cx:所处的grid cell相较于全图左上角的偏移量cx
cy:所处的grid cell相较于全图左上角的偏移量cy
pw:anchor的宽度
ph:anchor的高度
yolov把整张图像画成若干个网格的grid cell,每个grid cell的长宽归一化为1,简单来说,每个grid cell是边长为1的正方形
如论文中Figure2所示:
用红色框框起来的grid cell的cx为1,cy为1