【目标检测-YOLO】YOLO_V1总结

该文深入探讨了图像分类与目标检测的任务特性及其内在关联性;详细解析了阳性与阴性样本的区别与划分标准;系统阐述了整个架构的设计思路及其实现细节。
其中:
· 阳性样本代表具有特定特征的对象实例;
· 阴性样本则代表不具备这些特征的对象实例;
· 架构设计主要围绕两者的对比关系展开;
· 最终实现了高效准确的任务识别流程。
此外:
· 该研究对模型性能优化提出了若干建议;
· 对实验结果进行了全面的数据统计;
· 得出了一系列具有参考价值的结论。
在上文中,我们已经掌握了目标检测的基础概念。本文基于这些相关背景内容,在此基础上系统性地整理YOLOv1算法的基本原理和实现机制;其中YOLOv1作为V2到V5系列模型学习的重要基石,在后续研究中起到了关键作用。
精读AI论文
精读AI论文
正如,前文所说,理解目标检测的关键在于将预测和训练分开理解 。
根据前文,先来分析v1的架构。

其中,64、192、128...表示使用多少卷积核,s为步长。
由于v1发布的较早,我们可以将 整个架构分为: Backbone + Detection head。
推理阶段:
可参考以下链接获取详细信息:[https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA pub?start=false&loop=false&delayms=3000&slide=id.g137784ab86_4_1668](https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA(pub?start=false&loop=false&delayms=3000&slide=id.g137784ab86_4_1668)])完整内容请访问此链接

Detection head 输出 7 * 7 * 30,然后进行后处理,就得到了检测结果。

需要注意的是:
- x和y属于当前grid cell,并且在[0,1]区间内。
- w和h基于整个图像,并且在[0,1]区间内。
- c是置信度参数,在预测框中存在目标时具有重要性。

在20个类别值中的某一个取值对应着条件概率P(c|g)的存在。这表示,在当前grid cell存在目标的情况下(假设当前grid cell存在目标),该类别的概率即为此条件概率。


那么为什么 置信度c 为上式中的呢?
为了弄清楚,我们不得不说明 训练阶段 中的 置信度。

在 训练阶段****grid cell 中的(x, y, w, h,c) 有三种情况:
- 当一个真实框的中心点位于某一个grid cell中时,在该grid cell中与其交集率较高的那个框b1。
- 当一个真实框的中心点位于某一个grid cell中时,在该grid cell中与其交集率较低的那个框b2。
- 当所有真实框的中心点均未落在某一个grid cell中时,则这两个框b3, b4。
YOLO can predict multiple bounding boxes per grid cell. During training, we aim to assign only one bounding box predictor to each object. Responsibility is assigned to a single predictor, who is chosen based on their highest IOU with the ground truth compared to other predictions. Such specialization enhances each predictor's ability to accurately identify objects of specific sizes, aspect ratios, or classes, thereby boosting overall recall performance.
本研究的核心在于深入理解yolov1的工作原理。我们假设每个grid cell包含两个候选框B_1和B_2。在损失函数的第一项中,仅候选框B_1被用于计算。其中,“responsible”一词在此处特指用于损失计算的候选框。在损失函数的第二项中,则包括了候选框B_2、B_3以及B_4的参与。
对于情况1 ,假设真实框为b, b₁ ,基于网络预测获得的置信度c₁ 。为了使该置信度能够反映b₁框包含目标及定位精度 ,需要对c₁进行优化处理。具体而言,在计算过程中应采用以下方法:将b₁与真实框计算出的IOU值作为标签\hat{c} ,即\hat{c} = \text{Pr}(\text{Object}) \cdot \text{IOU}(b₁, b) = \text{IOU}(b₁, b) ,其中\text{Pr}(\text{Object}) = 1 。因此,在优化过程中应使得(c₁ - \hat{c})²减小 ,从而使预测出的c₁能够更加接近于真实的\hat{c}值。
对于情况2和情况3 ,它们对应的置信度c₂ 的优化目标是将其标签设为\hat{c} = 0 。这是因为此时\text{Pr}(\text{Object}) = 0 ,也就不再考虑IOU的问题(因为此时没有真实框) 。因此,在这种情况下有(c₂ - 0)² ,随着迭代过程的发展,该值会逐渐趋近于零从而使得c₂在迭代过程中趋向于零。
所以,置信度c 有两重含义 :
对于情况1 ,因 c_hat 在坐标回归损失中被约束向 IOU=1 方向引导优化 ,导致 c1 指向该方向进行优化 ,因此能够反映定位精度。
对于情况3 ,标签值为零时 ,c2 值会趋近于零 ,这表明模型对背景区分开来的程度。
对于情况2 与真实框 b 的 IOU 比较而言 较小的情况下 置信度c2 随之往零方向优化 。此时IOU低于b1 表明b2预测效果欠佳 因此置信度c2也相应较低 。由此可见 c参数反映了定位精度。
通过将参数 置信度 c 被设定为对应于 框 b₁ 和真实目标框之间的 IOU 值后,在情况 2 的框架下, 置信度 c₁ 就被限制在与该特定区域相关联的程度上. 在损失函数 L = ∑(loss_b + loss_c) 的基础上, 同时对 框 b₁ 和其对应的 置信度 c₁ 进行优化, 进而使得 框 b₁ 的定位会变得更加精准. 当定位越精准时, 其对应的 IOU 值会逐渐趋近于 1. 这即意味着 框 b₁ 所包含的目标区域更为明确. 此时 置信度 c 也会逐渐趋近于 1, 表示当前图像区域内该位置为目标的概率乘以其对应的 IOU 值.
那么样本 是什么?
样本 我认为是 所有的 预测框的图像区域, 一共 7 * 7 * 2 个。
如何从正负样本的角度 理解?
对于情况1来说, b₁ 被归类为一个正样本,其余7×7×2−₁个则被归类为负样本.该组正样本的预测结果分别为 c₁,相应的标签标记为^c.而对于情况2和情况3,剩余的7×7×₂−₁个则被归类为主动控制单元, b₁ 被归类为主从关系单元.该组正样本的预测结果分别为 c₂,相应的标签标记均为0.
为了弄清楚置信度c的具体含义,请明确指出在训练阶段中置信度c对应的标签值是什么。因此,在经过Backbone与Detection head的有效训练后, 置信度c自然涵盖了文中提到的两个方面
为什么可以使用 MSE Loss?
- 对于情况一 ,IOU值决定了 c的取值范围位于0到1之间。
- 对于情况二及情况三 ,c的取值目标为零。

明白了置信度c后,还需明确20维空间中的类别概率分布情况.根据公式可知,当grid cell存在目标时,其数值等于7×7×2个class score的总和.class score所代表的是全概率乘以IOU(见公式1).值得注意的是,IOU与grid cell中是否存在物体的信息已被融入到置信度c中,因此class score能够有效反映各类别间的分类精确度以及定位精确度的表现.
如何从正负样本的角度 理解条件概率p ?
当该grid cell包含目标(条件)时,在此条件下该grid cell被标记为正样本单元格,在其余7×7−1个相邻单元格中均被标记为负样本单元格。每个正样本单元格的预测结果是一个20维向量p(20-dimensional vector),对应的one-hot标签向量则表示为\hat{p}(a one-hot encoding vector of dimension 20)。
后处理:
yolo 输出结果是什么?
YOLO生成器输出了7×7×2个预测框,并计算出这些位置对应的置信度值以及每个预测单元中的类别概率分布向量(每个向量包含20维信息)。在后处理流程中,系统首先对这些信息进行融合处理:将所有98个向量中的类别分数低于阈值1的部分设为零,并按降序排序以便后续操作。随后应用NMS算法:通过计算最大置信度框与其他非零置信度框之间的IOU是否大于阈值2来筛选目标候选框;对于保留的目标框,则需依次与后续所有非零置信度框计算IOU并根据阈值条件进一步筛选直至目标候选区域清零。重复上述步骤对每个类别进行处理直至完成全部20类别的目标检测任务。
这里有一个幻灯片中的问题,为什么蓝色框消失了?
改写说明
训练阶段:
在预测阶段,已经说明了 置信度c 和 条件概率p 的含义。还剩下 (x, y, w, h)。

(x_hat, y_hat, w_hat, h_hat) 都是相对值,在0~1之间,表示真实框 , w_hat = w / W, h_hat = h / H。

如何从正负样本的角度 理解 (x, y, w, h)优化 ?
当假设current grid cell存在目标时,则该预测框对应的区域被标记为正样本。其余区域则被视为负样本。对于这些正样本而言其预测边界框的位置与尺寸分别为(x,y,w,h)而与之对应的 ground truth 值为(\hat{x},\hat{y},\hat{w},\hat{h})计算采用均方误差损失函数 MSE Loss。
由于v1未对图像区域施加任何限制,其定位精度相较于基于锚框的方法有所下降。具体而言,在训练过程中缺乏这种限制导致网络生成的边界框呈现出一定的随机性,并引入了额外的噪声。有趣的是,在此情况下尽管存在这些缺陷,但与Fast R-CNN相比其分类精度却更高。此外,在优化过程中采用了相对坐标系(relative coordinate system),即模型输出的目标坐标(x, y)位于grid cell内部位置,并且宽度与高度(w, h)方向上也遵循该方向上的实际比例关系进行优化。
为啥加根号?

YOLOv1的优缺点:
特点:该系统采用 MSE Loss 作为损失函数,并因此在 V1 中的目标检测问题被建模为回归任务。
优点:
- 采用全连接训练框架构建的目标检测系统
- 计算效率显著提升,在基础版本中达到45FPS以上,在30FPS及以上即可被视为实时处理。
- 相比Fast R-CNN等经典算法,在背景区域的识别能力上有明显优势。通过一次性处理整幅图像并直接推断其整体语境特征实现这一特性。
- 在艺术作品专用数据集上的泛化性能表现优异。
Fast R-CNN与YOLO(基于模型融合技术)的结合体在整体性能上优于单独使用的Faster R-CNN系统;然而,在算法运行效率方面存在明显局限性主要体现在基础级的Fast R-CNN架构上
缺点:
- mAP值偏低, recall表现较弱.
- 相比Fast R-CNN, 该方法在目标识别能力方面表现较弱.
- YOLO V1通过施加严格的宽度和高度限制实现了这一约束.
- 由于其依赖于固定宽高的特征提取网络,在面对新型宽高比时泛化能力受限.
- 尽管损失函数对大小物体一视同仁但对较小物体而言其精度下降更为明显.
如何优化YOLOv1?
改进Backbone
引入Neck
改进Detection head
引入 Anchor
- 损失函数重设计
- 添加Batch Normalization层...
YOLOv2 改进在哪里?
- BN
- 高分辨率分类网络
- 引入锚点
- 利用k均值聚类算法获取锚点位置
- 施加模型输出的限制条件
- 将模型分为低层次的细节特征和高层次的抽象特征进行融合
- 采用多尺度特征提取策略
参考:
除了文中的参考链接,请参考:
