当前位置:   article > 正文

YOLOv4中常见CV学术名词说明(一)【AP/anchor-base/anchor-free/1-stage/2-stage/facol loss/ label smooth/知识蒸馏/loss】_yolov4在不同数据集的ap

yolov4在不同数据集的ap

【1】 MS COCO AP是什么意思?

AP: average precision
yolov4中的AP是指针对MS COCO数据集AP。评价标准略微不同

COCO中说的AP是AP[.50:.05:.95],
也就是IOU_T设置为0.5,0.55,0.60,0.65……0.95,
算十个APx,然后再求平均,得到的就是AP。

因为COCO还是多类别,所以再对类别求平均就是`mAP`,
但是COCO统一命名为AP(mAP = AP)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参见官网说明:
http://cocodataset.org/#detection-eval

在这里插入图片描述

【2】 AP50什么意思

在目标检测中,我们常用AP和mAP来评价模型的好坏,但是在很多论文中出现了AP50,AP60等指标,这是什么呢?
在这里插入图片描述
AP是指average precision,平均精确率,即多类预测的时候每一类的precision取平均,类似地还有AR,平均召回率。
以Cascade R-CNN的一张图为例,AP50AP60AP70……等等指的是取detector的IoU阈值大于0.5,大于0.6,大于0.7……等等。
可以看到数值越高,精确率越低,表明越难。
ref: https://zhuanlan.zhihu.com/p/140062567

【3】anchor-base/ anchor-free简述

目标检测算法一般可分为anchor-based、anchor-free、两者融合类,区别就在于有没有利用anchor提取候选目标框
tips:
anchor(也被称为anchor box)是在训练之前,在训练集上利用k-means等方法聚类出来的一组矩形框,代表数据集中目标主要分布的长宽尺度。

在这里插入图片描述

(1) anchor-base就是通过提前设定的不同尺度的anchor-box,通过不断划窗来获取候选目标框,然后再通过与GT的对比以及IOU计算相关score。
anchor-based类算法代表是fasterRCNN、SSD、YoloV2/V3/V4等
在这里插入图片描述

(2) anchor-free则并不是通过kmeans获取图像合集的anchor,而是通过另外一种手段来解决检测问题的。同样分为两个子问题,即确定物体中心和对四条边框的预测。
anchor-free类算法代表是CornerNet、ExtremeNet、CenterNet、FCOS等
在这里插入图片描述
(3) 融合anchor-based和anchor-free分支的方法:FSAF、SFace、GA-RPN等
在这里插入图片描述

ref:
https://www.zhihu.com/question/356551927/answer/926659692
https://zhuanlan.zhihu.com/p/62372897

【4】one-stage/two-stage

在这里插入图片描述
one-stage:
SSD这类1-stage的检测模型实际上是把一张完整的图分成固定大小与长宽比的成千上万个划窗, 分别预测类别与bounding box。典型的就是SSD, YOLOV3

two-stage:
2-stage的方法, 典型的模型就是RCNN, fast-RCNN, faster-RCNN等一系列检测模型. 这个系列模型的主要分成两部分, 分两步走(2-stage):

A. 对一张图先进行区域提名(Region proposal)选取可能有物体的区域, 同时抑制掉大量的负样本(背景).
这些提名的区域称为RoI(Region of interest). 在这个阶段, 不需要知道RoI对应的物体到底是哪一类,
只要知道是否有物体(即实现前景与背景的二分类), 也不需要很精确的bounding box.

B.然后把第一步中认为是正样本(前景)的候选图片作为子图, 对这些候选的子图进行具体类别的分类以及更准确的定位(回归). 之前我们说过,
检测的思路就是把一张完整的图片, 分成多张子图分别预测, 2-stage的方法相当于先找出可能有物体的子图, 然后再把这些子图进行预测.
其完整的结构如下图所示, 其中, 红色部分表示RPN部分, 绿色表示Fast-RCNN部分:

在这里插入图片描述

【5】focal loss

用来避免正反样本分布不均衡引起的误差,代替交叉熵loss计算,新的loss计算公式如下:
在这里插入图片描述
在这里插入图片描述

这个损失函数是在标准交叉熵损失基础上修改得到的。这个函数可以通过减少易分类样本的权重,使得模型在训练时更专注于难分类的样本。为了证明focal loss的有效性,作者设计了一个dense detector:RetinaNet,并且在训练时采用focal loss训练。实验证明RetinaNet不仅可以达到one-stage detector的速度,也能有two-stage detector的准确率

ref: https://zhuanlan.zhihu.com/p/49981234

【6】label smoothing

Lable Smoothing是分类问题中错误标注的一种解决方法。

对于分类问题,特别是多分类问题,常常把向量转换成one-hot-vector(独热向量). 对于损失函数,我们需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题:

1)无法保证模型的泛化能力,容易造成过拟合;
2)全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,
而由梯度有界可知,这种情况很难适应。会造成模型过于相信预测的类别。
  • 1
  • 2
  • 3

使用下面的 label smoothing 可以缓解这个问题:

在这里插入图片描述

原理:对于以Dirac函数分布的真实标签,我们将它变成分为两部分获得(替换)。

第一部分:将原本Dirac分布的标签变量替换为(1 - ϵ)的Dirac函数;
第二部分:以概率 ϵ ,在u(k) 中份分布的随机变量(u(k)是类别分之一)
  • 1
  • 2

ref: https://blog.csdn.net/qq_43211132/article/details/100510113

【7】knowledge distillation(知识蒸馏)

在这里插入图片描述
知识蒸馏,可以将一个网络的知识转移到另一个网络,两个网络可以是同构或者异构。做法是先训练一个teacher网络,然后使用这个teacher网络的输出和数据的真实标签去训练student网络。知识蒸馏,可以用来将网络从大网络转化成一个小网络,并保留接近于大网络的性能;也可以将多个网络的学到的知识转移到一个网络中,使得单个网络的性能接近emsemble的结果

ref: https://zhuanlan.zhihu.com/p/81467832

【8】目标检测回归损失函数归纳(Smooth -> IOU -> GIOU -> DIOU -> CIOU)

1. 早期loss计算(L1/L2/SMOOTH loss)

早期计算BBOX的loss, 一般是计算4个点(测量值(x1,x2,w,h)VS ground truth (x1’, x2’, w’, h’))的L1 loss, or L2 loss, or SMOOTH Loss。

  • 假设x为预测框和真实框之间的数值差异,常用的L1/L2/SMOOTH loss定义为
    在这里插入图片描述

上面的三种Loss用于计算目标检测的Bounding Box Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box Loss,这种做法的假设是4个点是相互独立的,实际是有一定相关性的

实际评价框检测的指标是使用IOU,这两者是不等价的,多个检测框可能有相同大小的smoothL1 Loss,但IOU可能差异很大,为了解决这个问题就引入了IOU LOSS
通过4个坐标点独立回归Building boxes的缺点

  • 检测评价的方式是使用IoU,而实际回归坐标框的时候是使用4个坐标点,如下图所示,是不等价的;
  • L1或者L2 Loss相同的框,其IoU 不是唯一的。通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性。基于L1和L2的距离的loss对于尺度不具有不变性
    在这里插入图片描述
    图(a)中的三组框具有相同的L2 Loss,但其IoU差异很大;图(b)中的三组框具有相同的L1 Loss,但IoU 同样差异很大,说明L1,L2这些Loss用于回归任务时,不能等价于最后用于评测检测的IoU.
2. IOU(Intersection over Union)

IoU就是我们所说的交并比,是目标检测中最常用的指标,在anchor-based的方法中,他的作用不仅用来确定正样本和负样本,还可以用来评价输出框(predict box)和ground-truth的距离。

I O U = ( A ⋂ B ) / ( A ⋃ B )

可以说它可以反映预测检测框与真实检测框的检测效果。

还有一个很好的特性就是尺度不变性,也就是对尺度不敏感(scale invariant), 在regression任务中,判断predict box和gt的距离最直接的指标就是IoU。(满足非负性;同一性;对称性;三角不等性)

IoU Loss,其将4个点构成的box看成一个整体进行回归:
在这里插入图片描述
上图中的红色点表示目标检测网络结构中Head部分上的点(i,j),绿色的框表示Ground truth框, 蓝色的框表示Prediction的框,IoU loss的定义如上,先求出2个框的IoU,然后再求个-ln(IoU),实际很多是直接定义为IoU Loss = 1-IoU

IoU Loss 前项推理时的算法实现方式
在这里插入图片描述

3.GIOU(Generalized Intersection over Union)

IoU Loss 有2个缺点:

  • 当预测框和目标框不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况。
  • 假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其IoU值是相同时,IoU值不能反映两个框是如何相交的

在这里插入图片描述
如上图所示,三种不同相对位置的框拥有相同的IoU=0.33值,但是拥有不同的GIoU=0.33,0.24,-0.1。当框的对齐方向更好一些时GIoU的值会更高一些

GIoU的实现方式
在这里插入图片描述
其中C为A和B的外接矩形。用C减去A和B的并集除以C得到一个数值,然后再用框A和B的IoU减去这个数值即可得到GIoU的值

4. DIOU(Distance-IoU Loss)

GIOU不足:
在这里插入图片描述
基于IoU和GIoU存在的问题,作者提出了两个问题:
第一:直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。

第二:如何使回归在与目标框有重叠甚至包含时更准确、更快。

好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。基于问题一,作者提出了DIoU Loss,相对于GIoU
Loss收敛速度更快,该Loss考虑了重叠面积和中心点距离,但没有考虑到长宽比;针对问题二,作者提出了CIoU Loss,其收敛的精度更高,以上三个因素都考虑到了。

通常基于IoU-based的loss可以定义为

其中在这里插入图片描述
定义为预测框B 和目标框 B^gt的惩罚项
DIOU的惩罚项表示为
在这里插入图片描述
其中b和b^{gt} 分别表示B 和B^{gt} 的中心点,ρ(∙)表示欧式距离,c 表示B和 B^{gt}的最小外界矩形的对角线距离,如下图所示。
在这里插入图片描述
可以将DIoU替换IoU用于NMS算法当中,也即论文提出的DIoU-NMS,实验结果表明有一定的提升。
DIoU Loss function定义为:

在这里插入图片描述
在这里插入图片描述

5.CIoU Loss (Complete-IoU Loss)

在这里插入图片描述

效果提升对比
在这里插入图片描述
上表中左边是用5种不同Boudning Box Regression Loss Function的对比,右边是以IoU和GIoU来计算的2种Evaluation的结果;GIoU相对IoU会有2.49点提升,DIoU相对IoU会有3.29点提升,CIoU会有大概5.67点提升,CIoU结合DIoU-NMS使用效果最好,大概会有5.91点提升。

ref: https://zhuanlan.zhihu.com/p/104236411
相关代码实现

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/114175
推荐阅读
相关标签
  

闽ICP备14008679号