YOLOv2算法全方位解析:从BatchNorm到聚类先验框的九大改进
YOLOv2 在 v1 的基础上引入了 BatchNorm、高分辨率分类器、Anchor Box、K-means 聚类先验框、直接位置预测、细粒度特征与多尺度训练等多项关键改进彻底解决了 v1 在小目标检测和定位精度方面的痛点。本文逐层拆解 YOLOv2 的设计细节与实现逻辑带你系统掌握这款经典实时检测器。一、YOLO系列v2YOLOv2又称 YOLO9000是 YOLO 系列的第二代版本由 Joseph Redmon 和 Ali Farhadi 于 2016 年提出。它在 YOLOv1 的基础上引入了BatchNorm、高分辨率分类器、Anchor Box、聚类先验框等一系列改进措施并在保持实时性的前提下大幅提升了检测精度。1、YOLO v1与v2对比与 YOLOv1 相比YOLOv2 的主要改进点如下改进点YOLOv1YOLOv2归一化方法❌ 无✅ BatchNorm每层卷积后都接分类器分辨率224×224预训练448×448预训练 微调骨干网络GoogLeNetDarkNet-19全连接层✅ 有❌ 无全卷积先验框生成手动设置的 2 个K-means 聚类生成的 5 个多尺度训练❌ 不支持✅ 支持320~608细粒度特征❌ 无✅ 拼接浅层特征26×262、BatchNorm批次归一化Batch Normalization批次归一化是 YOLOv2 引入的第一个重要改进。具体操作是在每个卷积层之后、激活函数之前加入 BatchNorm 层对网络每一层的输入进行归一化处理使其均值为 0、方差为 1。BatchNorm 带来的三大收益大幅提升收敛速度归一化后的数据分布更加稳定可以使用更大的学习率来加速训练起到正则化作用BatchNorm 引入了轻微的噪声能够替代 Dropout因此在 YOLOv2 中舍弃了 Dropout提升检测精度引入 BatchNorm 后YOLOv2 的 mAP 提升了约2%如今BatchNorm 已是绝大多数计算机视觉模型的标准配置但它的开创性应用最早正是在 YOLOv2 中得以验证。3、YOLO v2 更大的分辨率在 YOLOv1 中训练时的输入分辨率为224×224而测试时却需要用448×448。这种训练与测试分辨率的不一致会导致模型在测试时产生不适应即所谓的水土不服从而影响检测效果。YOLOv2 对此进行了彻底改进分两步走阶段分辨率说明预训练224×224先在 ImageNet 上训练分类网络约 160 轮微调448×448再以 448×448 的分辨率微调 10 轮让模型适应高分辨率输入这种高分辨率分类器微调的策略使得 YOLOv2 的 mAP 相较于 v1 提升了约4%。简单来说这一步改进让模型在训练阶段就适应了高分辨率输入避免训练与测试的割裂。4、YOLO v2网络结构1YOLO v2网络结构YOLOv2 不再沿用 YOLOv1 的 GoogLeNet 结构而是设计了全新的DarkNet-19骨干网络。该网络借鉴了 VGG 的思想大量使用 3×3 卷积核并在每个卷积层后都接入 BatchNorm 层。关键参数输入尺寸416×416而不是 YOLOv1 的 448×448降采样次数5 次每次步长为 2最终特征图尺寸13×13416 ÷ 2⁵ 13全连接层全部移除网络为全卷积结构为什么输入是 416×416因为经过 5 次降采样后特征图的尺寸为 13×13。13 是奇数使得最终的特征图有一个唯一的中心单元格。这对于检测占据图像中心的大目标非常有利因为大目标的中心点往往落在中心网格内。2传统的卷积神经网络系统为了更好地理解 YOLOv2 设计全卷积网络的意义我们先回顾传统 CNN 架构在传统的卷积神经网络中如 AlexNet、VGG网络最后通常会接入全连接层。假设某分类网络的卷积部分输出特征图尺寸为 13×13×128接着将其展平后送入全连接层得到 2048 个输出。此时全连接层的权重参数数量为13×13×128 × 2048 ≈4425 万。这是一个非常庞大的数字。关键问题如果输入图片的大小发生变化全连接层的权重数量会随之改变无法复用。这就是传统 CNN 无法接受任意尺寸输入的根本原因。3YOLO v2结构局限性YOLOv2 采用全卷积结构并在最后使用全局平均池化Global Avg Pooling来替代全连接层。无论输入特征图的尺寸是多少全局平均池化都会将其压缩为一个固定长度的向量从而支持多尺度输入。注意局限由于网络进行了 5 次步长为 2 的降采样2⁵ 32因此输入图片的尺寸必须能被 32 整除。这是 YOLOv2 多尺度输入的最小约束条件。5、YOLO v2聚类提取先验框YOLOv1 中每个网格只有 2 个固定大小的先验框这种粗放的设计难以适应不同尺度和形状的目标。YOLOv2 参考 Faster R-CNN 中 Anchor 的设计思路将先验框的数量增加到5 个但并没有像 Faster R-CNN 那样手动设置 9 种长宽比而是通过 K-means 聚类算法从训练数据集的所有真实标注框中自动学习出 5 种最具代表性的先验框尺寸。1k-means聚类K-means 聚类是一种经典的无监督学习算法能够将数据点划分为 K 个簇使得同一簇内的数据点彼此相似不同簇之间的数据点差异较大。YOLOv2 中的距离度量传统 K-means 通常使用欧氏距离来衡量数据点之间的差异。但在 YOLOv2 中我们关心的是预测框与真实框之间的重叠程度而不是它们中心点的绝对距离。因此YOLOv2 将聚类距离函数定义为d(box, centroid) 1 - IOU(box, centroid)这个设计的精妙之处在于IOU 越大说明两个框重叠程度越高距离越小聚类出的先验框与真实框的 IOU 更高更利于模型学习2YOLO v2聚类流程YOLOv2 聚类提取先验框的整体流程如下数据准备从训练集中提取所有真实标注框记录每个框的宽度 w 和高度 h形成一个二维坐标点集合执行 K-means使用上述距离公式将所有标注框聚为 K 个簇实验中 K 取 5计算聚类中心对每个簇内的所有框的宽高取平均值得到 K 个簇中心点得出先验框将这 K 个聚类中心作为先验框的尺寸用于后续的 Anchor Box 机制3YOLO v2聚类框个数由来YOLOv2 最终选择了5 个先验框。这个数字并非随意拍板而是基于以下考虑先验框数量IOU 表现计算开销2~3较低不能很好地覆盖各种目标形状小5平衡覆盖大多数目标且聚类 IOU 接近 9 个框适中9最好如 Faster R-CNN大选择 5 个是在召回率和计算效率之间做的一个精巧的平衡——既能够覆盖常见的目标形状又不会带来过多的计算负担。6、YOLO v2 Anchor Box聚类先验框引入聚类先验框后YOLOv2 预测的边界框总数大幅增加YOLOv17×7×2 98 个YOLOv213×13×5 845 个这意味着 YOLOv2 对每个图像区域提供了更密集的候选框覆盖显著提升了对小目标和重叠目标的检测能力。二、Directed Location Prediction直接位置预测1、概念在引入 Anchor Box 机制后如何稳定地预测边界框的位置成为了一个新的挑战。如果预测的偏移量过大边界框的位置很容易偏离目标位置导致训练发散或产生大量的无效框。Directed Location Prediction直接位置预测是 YOLOv2 提出的一种解决方案。它与传统 Anchor Box 的偏移预测方式不同通过 sigmoid 函数将预测偏移量约束在有限的范围内使得预测框的中心点始终落在一个特定的网格内从而大大提升了训练的稳定性。2、计算YOLOv2 的位置预测公式如上图所示符号含义如下符号含义t_x, t_y, t_w, t_h网络直接输出的原始坐标值未经约束b_x, b_y, b_w, b_h经过约束计算后得到的最终预测框坐标c_x, c_y预测框所属网格的左上角坐标即网格的位置编号p_w, p_h聚类先验框的宽度和高度σsigmoid 函数将输入值压缩到 [0, 1] 区间为什么要使用 sigmoid 函数网络输出的 t_x 和 t_y 可能会产生较大的数值直接作为偏移量会导致预测框的中心点飘移到其他网格造成收敛困难。通过 sigmoid 函数我们将 t_x 和 t_y 的值映射到 (0, 1) 区间然后再加上网格的左上角坐标 c_x、c_y从而确保预测框的中心点被强行约束在当前网格的范围内。这种设计大大降低了训练的难度也使得模型更容易收敛。示例计算三、感受野1、概念感受野Receptive Field指的是卷积神经网络中特征图上的一个像素点在原始输入图像中所对应的感知区域大小。越靠近输入层的特征图感受野越小看到的是图像的局部细节越靠近输出层的特征图感受野越大看到的是图像更大范围的上下文信息。2、作用感受野对于目标检测任务至关重要它直接影响了网络对物体位置和大小的判断能力网络层次感受野大小擅长检测的目标浅层小边缘、纹理、小物体深层大物体整体、大物体、上下文在 YOLOv2 中随着卷积层和池化层的不断堆叠特征图的尺寸逐渐减小感受野逐渐增大。较大的感受野有助于网络捕捉更大范围的语义信息但同时也可能导致小目标的特征被稀释而丢失。YOLOv1 对小目标检测效果差的根本原因之一正是其最终特征图的感受野过大缺乏来自浅层网络的细粒度特征。3、YOLO v2 Fine Grained Feature为了解决感受野过大导致小目标丢失的问题YOLOv2 引入了细粒度特征Fine Grained Features机制。操作流程如下在网络中间的某个位置具体是26×26×512的特征图额外复制一份特征图将这一特征图按照空间位置进行拆分和重新排列形成一个13×13×2048的特征图将该特征图与最后输出的 13×13×1024 特征图拼接得到 13×13×3072 的融合特征图这种跨层连接的思路与后来流行的 FPN特征金字塔网络有异曲同工之妙。通过将浅层的细粒度信息与深层的语义信息相结合YOLOv2 对小目标的检测能力得到了显著增强。4、YOLO-V2-Multi-Scale多尺度融合由于 YOLOv2 是全卷积网络不含全连接层因此它可以接受不同尺寸的输入图像。最小输入尺寸320×320速度优先最大输入尺寸608×608精度优先步长约束输入尺寸必须能被32整除在训练过程中YOLOv2 采用了多尺度训练策略每经过 10 个批次batch网络会随机从 {320, 352, 384, ..., 608} 中选择一个新的输入尺寸进行训练。这种策略的好处是增强模型的尺度不变性使模型能更好地适应不同大小的目标支持灵活部署可以根据实际应用场景在速度和精度之间做权衡提高泛化能力避免模型过拟合到单一尺度总结YOLOv2 的重要性常常被低估。它不仅是 YOLOv1 到 YOLOv3 之间的过渡产品更是一系列经典技术的集成者BatchNorm 的应用、高分辨率分类器的微调、聚类先验框的引入、直接位置预测的约束以及多尺度训练策略这些思路中的许多已经成为现代目标检测算法的标准配置。理解 YOLOv2 的设计选择能够帮助你更深刻地理解什么是一个好的 Anchor Box如何平衡感受野与分辨率怎样设计一个兼顾速度和精度的骨干网络等核心问题。如果您对 YOLO 系列后续版本YOLOv3、v4、v5 乃至 v8/v9/v10感兴趣欢迎持续关注本专栏我们下期再见
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2568294.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!