1.简介主要改进现有的一些trick的集合以及模块重参化和动态标签分配策略最终在 5 FPS 到 160 FPS 范围内的速度和准确度都超过了所有已知的目标检测 器。当前目标检测主要的优化方向更快更强的网络架构更有效的特征集成方法更准确的检测方法更精确的损失函数 更有效的标签分配方法更有效的训练方法。2.网络结构1input整体复用YOLO V5的预处理方式和相关源码唯一需要注意的是官方主要是在640×640和1280×1280这样的相对较大的图片上进行的训练和测试。2backbone主要是使用ELAN该版本模型并没有使用论文里提到的最复杂的E-ELAN结构 和 MP 结构。该版本模型的激活函数使用的是Silu。a.ELAN结构通过控制最短最长的梯度路径更深的网络可以有效地学习和收敛。作者提出ELAN结构。基于ELAN设计的E-ELAN 用expand、shuffle、merge cardinality来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。论文中相关的图如下其中的cross stage connection 其实就是1×1卷积简化如下MP 结构需要注意backbone中的MP前后通道数是不变的。3neck head检测头整体结构和YOLOV5类似仍然是anchor based 结构仍然没有使用YOLOX 和YOLOV6 的解耦头分类和检测思路。3.损失函数整体和YOLOV5 保持一致分为坐标损失、目标置信度损失GT就是训练阶段的普通iou和分类损失三部分。其中目标置信度损失和分类损失采用BCEWithLogitsLoss带log的二值交叉熵损失坐标损失采用CIoU损失。4.样本匹配策略主要是参考了YOLOV5 和YOLOV6使用的当下比较火的simOTA.训练前会基于训练集中gt框通过k-means聚类算法 先验获得9个从小到大排列的anchor框。(可选)将每个gt与9个anchor匹配Yolov5为分别计算它与9种anchor的宽与宽的比值较大的宽除以较小的宽比值大于1下面的高同样操作、高与高的比值在宽比值、高比值这2个比值中取最大的一个比值若这个比值小于设定的比值阈值这个anchor的预测框就被称为正样本。一个gt可能与几个anchor均能匹配上此时最大9个。所以一个gt可能在不同的网络层上做预测训练大大增加了正样本的数量当然也会出现gt与所有anchor都匹配不上的情况这样gt就会被当成背景不参与训练说明anchor框尺寸设计的不好。扩充正样本。根据gt框的中心位置将最近的2个邻域网格也作为预测网格也即一个groundtruth框可以由3个网格来预测可以发现粗略估计正样本数相比前yolo系列增加了三倍此时最大27个匹配。图下图浅黄色区域其中实线是YOLO的真实网格虚线是将一个网格四等分如这个例子中GT的中心在右下虚线网格则扩充右和下真实网格也作为正样本。获取与当前gt有top10最大iou的prediction结果。将这top10 5-15之间均可并不敏感iou进行sum就为当前gt的k。k最小取1。根据损失函数计算每个GT和候选anchor损失前期会加大分类损失权重后面减低分类损失权重如1:5-1:3并保留损失最小的前K个。去掉同一个anchor被分配到多个GT的情况。
YOLO v7(学习笔记)
发布时间:2026/7/2 16:07:24
1.简介主要改进现有的一些trick的集合以及模块重参化和动态标签分配策略最终在 5 FPS 到 160 FPS 范围内的速度和准确度都超过了所有已知的目标检测 器。当前目标检测主要的优化方向更快更强的网络架构更有效的特征集成方法更准确的检测方法更精确的损失函数 更有效的标签分配方法更有效的训练方法。2.网络结构1input整体复用YOLO V5的预处理方式和相关源码唯一需要注意的是官方主要是在640×640和1280×1280这样的相对较大的图片上进行的训练和测试。2backbone主要是使用ELAN该版本模型并没有使用论文里提到的最复杂的E-ELAN结构 和 MP 结构。该版本模型的激活函数使用的是Silu。a.ELAN结构通过控制最短最长的梯度路径更深的网络可以有效地学习和收敛。作者提出ELAN结构。基于ELAN设计的E-ELAN 用expand、shuffle、merge cardinality来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。论文中相关的图如下其中的cross stage connection 其实就是1×1卷积简化如下MP 结构需要注意backbone中的MP前后通道数是不变的。3neck head检测头整体结构和YOLOV5类似仍然是anchor based 结构仍然没有使用YOLOX 和YOLOV6 的解耦头分类和检测思路。3.损失函数整体和YOLOV5 保持一致分为坐标损失、目标置信度损失GT就是训练阶段的普通iou和分类损失三部分。其中目标置信度损失和分类损失采用BCEWithLogitsLoss带log的二值交叉熵损失坐标损失采用CIoU损失。4.样本匹配策略主要是参考了YOLOV5 和YOLOV6使用的当下比较火的simOTA.训练前会基于训练集中gt框通过k-means聚类算法 先验获得9个从小到大排列的anchor框。(可选)将每个gt与9个anchor匹配Yolov5为分别计算它与9种anchor的宽与宽的比值较大的宽除以较小的宽比值大于1下面的高同样操作、高与高的比值在宽比值、高比值这2个比值中取最大的一个比值若这个比值小于设定的比值阈值这个anchor的预测框就被称为正样本。一个gt可能与几个anchor均能匹配上此时最大9个。所以一个gt可能在不同的网络层上做预测训练大大增加了正样本的数量当然也会出现gt与所有anchor都匹配不上的情况这样gt就会被当成背景不参与训练说明anchor框尺寸设计的不好。扩充正样本。根据gt框的中心位置将最近的2个邻域网格也作为预测网格也即一个groundtruth框可以由3个网格来预测可以发现粗略估计正样本数相比前yolo系列增加了三倍此时最大27个匹配。图下图浅黄色区域其中实线是YOLO的真实网格虚线是将一个网格四等分如这个例子中GT的中心在右下虚线网格则扩充右和下真实网格也作为正样本。获取与当前gt有top10最大iou的prediction结果。将这top10 5-15之间均可并不敏感iou进行sum就为当前gt的k。k最小取1。根据损失函数计算每个GT和候选anchor损失前期会加大分类损失权重后面减低分类损失权重如1:5-1:3并保留损失最小的前K个。去掉同一个anchor被分配到多个GT的情况。