YOLO系列

您所在的位置:网站首页 yolov5 iou阈值 YOLO系列

YOLO系列

2024-07-05 10:05| 来源: 网络整理| 查看: 265

文章目录 1 Max-IoU matching(YOLOv1~V3)2 Multi-Anchor策略(YOLOv4)3 基于宽高比的领域匹配策略(YOLOv5)4 simOTA(Simple Optimal Transport Assignment)匹配策略(YOLOX, YOLOv6)5 领域匹配+simOTA(YOLOv7)6 TaskAlignedAssigner匹配策略(YOLOv8, YOLOv9)参考资料

1 Max-IoU matching(YOLOv1~V3)

选取与gt的IOU最大的bounding box或者anchor,作为真样本,剩余的都是负样本。

YOLOv1:grid cell不包含目标,只计算置信度误差;有目标,选取与gt最大IOU的bbox计算分类、回归误差;YOLOv2:5个anchor box;选择与gt最大IOU的anchor来计算分类和回归误差;YOLOv3:9个anchor box,3个尺度检测头,每个尺度3个anchor box;选择与gt最大IOU的anchor来计算分类和回归误差;

存在的问题:正样本太少,负样本太多。

2 Multi-Anchor策略(YOLOv4)

YOLOv4:只要anchor与gt的IOU大于某个阈值,都可以作为正样本。

注意:yolov4的GT需要利用max iou原则分配到指定的检测头上,然后再与指定检测头上的3个anchor box计算正负样本和忽略样本。不存在某个GT会分配到多个层进行预测的可能性,而是一定是某一层负责的。

3 基于宽高比的领域匹配策略(YOLOv5)

v5在v4的基础上引入自适应anchor box(Auto Learning Bounding Box Anchors)和领域正负样本分配策略

自适应anchor box: 训练前,针对不同的训练数据,聚类anchor box基于宽高比的领域正负样本分配策略: 增加高质量正样本检测框可以显著加速收敛,v5的领域正负样本分配策略: 宽高匹配: 将ground truth与当前feature map中的anchor box进行比较,如果ground truth与anchor box的宽高比例都处在[1/4, 4]那么这个ground truth就能与当前featuer map相匹配。领域匹配: 将当前feature map中的ground truth分配给对应的grid cell。将这个grid cell分为四个象限,针对与当前feature map匹配的ground truth,会计算该ground truth处于四个象限中的哪一个,并将邻近的两个grid cell中的检测框也作为正样本。如下图所示,若ground truth偏向于右上角的象限,就会将ground truth所在grid cell的上面和右边的grid cell中的检测框也作为正样本。 在这里插入图片描述 比起yolov4中一个ground truth只能匹配一个正样本,YOLOv5能够在多个grid cell中都分配到正样本,有助于训练加速和正负样本平衡。 4 simOTA(Simple Optimal Transport Assignment)匹配策略(YOLOX, YOLOv6)

YOLOX和YOLOv6都采用了anchor-free+检测头解耦为分类cls(N)、置信度obj(1)和bbox(4)三个部分。 在这里插入图片描述 simOTA样本匹配流程如下,假设网络最后输出的size为hxw:

将所有位于gt内的点标记为:in_box以gt为中心,落在5x5区域内的点标记为:in_centerin_box与in_center取并集,作为前景信息fg_mask 计算iou_loss矩阵: 计算gt与fg_mask中预测box的IoU,取log作为iou_loss计算cls_loss矩阵: 先使用置信度矩阵乘以分类矩阵,再与gt计算BCE损失 在这里插入图片描述 Source: YOLOX-SimOTA图文详解 in_box与in_center取交集,,在fg_mask中标记,作为in_box_and_center计算simOTA的cost矩阵: c o s t = c l s l o s s + 3.0 ∗ i o u l o s s + 100000 ∗ (   i n b o x a n d c e n t e r ) ,其中 100000 ∗ (   i n b o x a n d c e n t e r ) cost = cls_loss + 3.0 * iou_loss + 100000 * (~in_box_and_center),其中100000 * (~in_box_and_center) cost=clsl​oss+3.0∗ioul​oss+100000∗( inb​oxa​ndc​enter),其中100000∗( inb​oxa​ndc​enter),表示给位于center外且在box内的其他点给一个非常大的loss,在最小化cost的过程中就会优先选择center内的样本。cost的大小为N(gt的数量)xM(fg_mask内点的数量)dynamic_k_matching: 针对每个gt,取iou最大的10个anchor点对应的iou并求和,将其和值向下取整得到dynamic_k;针对每个gt,从cost中挑选dynamic_k个最小的loss,如果一个anchor被多个gt匹配上,则选取cost最小的作为匹配; 在这里插入图片描述 在这里插入图片描述 Source: YOLOX中的SimOTA正负样本分配策略

YOLOv5的正负样本分配策略是基于邻域匹配,并通过跨网格匹配策略增加正样本数量,从而使得网络快速收敛,但是该方法属于静态分配方法,并不会随着网络训练的过程而调整。YOLOx使用的SimOTA能够算法动态分配正样本,进一步提高检测精度。而且比起OTA由于使用了Sinkhorn-Knopp算法导致训练时间加长,SimOTA算法使用Top-K近似策略来得到样本最佳匹配,大大加快了训练速度。

5 领域匹配+simOTA(YOLOv7)

yolov7也仍然是anchor base的目标检测算法,yolov7将yolov5和YOLOX中的正负样本分配策略进行结合,流程如下:

yolov5:使用yolov5正负样本分配策略分配正样本。YOLOX:计算每个样本对每个GT的Reg+cls loss(Loss aware)YOLOX:使用每个GT的预测样本确定它需要分配到的正样本数(Dynamic k)YOLOX:为每个GT取loss最小的前dynamic k个样本作为正样本YOLOX:人工去掉同一个样本被分配到多个GT的正样本的情况(全局信息)

其实主要是将simOTA中的第一步“使用中心先验”替换成“yolov5中的策略”。

6 TaskAlignedAssigner匹配策略(YOLOv8, YOLOv9)

YOLOv8和v9的检测头为目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based 换成了 Anchor-Free。且不再有objectness分支,只有解耦的分类和回归的分支,并且回归分支使用了distribution focal loss中提出的积分形式表示法。 在这里插入图片描述 Source: YOLOV8 原理和实现全解析

TaskAlignedAtasssigner的匹配策略 :根据分类与回归的分数加权的分数去选择正样本。 t = s α + u β t = s^{\alpha} + u^{\beta} t=sα+uβ 针对每一个gt,其中s是每个点对应的gt类别的分类置信度,u是每个点对应预测的回归框与gt的IoU,两者相乘就可以衡量对齐程度alignment metrics。再直接基于alignment metrics选取topk作为正样本。

参考资料

[1] Yolov3-v5正负样本匹配机制 [2] YOLOX-SimOTA图文详解 [3] yolov7正负样本分配详解 [4] Yolov8标签匹配算法TaskAlignedAssigner原理及代码注解



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3