目录
yolov3和yolov4
前言
一、yolov3
1.1.yolov3框架
1.2 FPN(Feature Pyramid Networks)
1.2 上采样upsample
二.yolov4
2.1yolov4框架
2.2 PAN
三、Prediction创新之路
3.1 lou_loss
3.2 GIou_loss
3.3 DIou_loss
3.4CIOU_los
3.5总结
记录自己对yolo的理解,不喜勿喷!
文章末尾有引用各位大佬的链接!
yolov3框架如下:由backbone+Neck+prediction构成
其中Neck采用FPN结构,FPN是自顶向下的,将高层的特征信息通过上采样(upsample)的方式进行传递融合,得到进行预测的特征图。
FPN是特征金字塔网络:对网络的最后一层feature map做上采样,然后与相应尺寸feature map做融合
思想:对最底层的特征进行向上采样,并与之融合,加强了特征提取,即将高层的语义传递下来,补充底层的语义,使之获得高分辨率,强语义的特征,有利于小目标检测。
记忆点:自底向上,自顶向下,横向连接
自底向上:使用Darknet53(没有全连接层)作为backbone对图片进行特征提取,得到的feature map :608->304->152->76->38->19
自顶向下:最后一层feature map (19*19)进行上采样upsample
横向连接:为了特征融合:横向连接的两层特征在空间尺寸相同,主要是将底层的空间信息,以及顶部的语义信息进行融合
yolov4框架:同样由backbone+neck+prediction构成
其中Neck是由FPN和一个自底向上的特征金字塔(包含两个PAN网络),FPN自顶向下传达强语义特征,PAN自底向上传达强定位,两两联手,从不同的主干层对不同的检测层进行参数聚合。
原本的PANet网络的PAN结构中,两个特征图结合是采用shortcut即add操作,而Yolov4中则采用concat(route)操作,特征图融合后的尺寸发生了变化。
目标检测的损失函数一般是分类损失函数和目标框回归损失函数组成。
主要从目标框回归损失函数来看yolo系列的变化,从IOU_loss->GIOU_loss->DIOU-loss->CIOU_loss演变
目标框损失函数主要考虑三个方面:重叠面积、中心点距离,长宽比
IOU_loss损失函数计算方法:
具体看下图:
IOU_loss损失函数可以简单的看作交集和并集,但是存在以下两个问题
问题1:如图状态1,当两个框不相交的时候,IOU_loss不可导,无法优化黄色框
问题2:如图状态2和状态3,当IOU相同时,IOU_loss无法分辨出黄色框的相交情况。
GIOU_loss损失函数计算方法:
为了解决上述的问题,2019提出GIOU_loss,增加了相交尺度的衡量方式。
但是这只是单纯的缓解,存在以下的问题,如下图所示,当预测框在真实框之内的时候,退化成IOU_loss
公式如下:
C2是指的最小包围矩形框的对角线的平方,是指的是,预测框和真实框中心点的距离平方。
DIOU考虑到了重叠面积,以及中心点距离,当目标框包裹预测框的时候,收敛更加块,因为直接度量2个框的距离,但是没有考虑到长宽比,
由于预测框和目标框的中心点相同,所以DIOU_loss又不起作用。
公式如下:在DIOU_loss下+au,将预测框和目标框的长宽比都考虑了进去。
这样CIOU_loss,就将重叠面积,中心点距离,长宽比都考虑进去
IOU_loss:考虑了重叠问题
GIOU_loss:在IOU基础上,解决了边界框不重合的问题
DIOU_loss:在IOU和GIOU基础上,解决了面积重叠问题
CIOU_loss:在DIOU基础上,解决了长宽比的问题
深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解 - 知乎
什么是FPN(Feature Pyramid Networks--特征金字塔)? - 知乎
https://blog.csdn.net/avideointerfaces/article/details/103964660