网站核验点查询,如何做自己官方网站,网站的建设包括,小程序商店怎么做#x1f9e0; YOLOv2 技术详解#xff1a;目标检测的又一次飞跃
一、前言
在 YOLOv1 提出后#xff0c;虽然实现了“实时性 单阶段”的突破#xff0c;但其在精度和小物体检测方面仍有明显不足。为了弥补这些缺陷#xff0c;Joseph Redmon 等人在 2017 年提出了 YOLOv2… YOLOv2 技术详解目标检测的又一次飞跃
一、前言
在 YOLOv1 提出后虽然实现了“实时性 单阶段”的突破但其在精度和小物体检测方面仍有明显不足。为了弥补这些缺陷Joseph Redmon 等人在 2017 年提出了 YOLOv2又名 YOLO9000并在论文中宣称 “It’s more accurate than other detection systems and can run at real-time speeds.” 本文将深入解析 YOLOv2 的核心技术亮点包括
引入 Anchor Boxes多尺度预测更好的主干网络 Darknet-19联合训练 COCO 和 ImageNet 二、YOLOv2 的主要改进点
改进点描述✅ 引入 Anchor Boxes借鉴 Faster R-CNN 思想使用预设宽高比例的边界框提升召回率✅ 多尺度预测Multi-Scale Training输入图像尺寸可变增强模型对不同大小目标的适应能力✅ 更强的主干网络使用 Darknet-19比 VGG 更轻量、更快✅ 联合训练 COCO ImageNet同时学习检测与分类任务实现跨数据集泛化能力 三、YOLOv2 的网络结构详解 整体架构图简化版
Input (416x416x3)
│
├─ Conv Layer (3x3, 32 filters, stride1) → BatchNorm → LeakyReLU
├─ MaxPool (2x2, stride2)
├─ Conv Layer (3x3, 64 filters, stride1) → BatchNorm → LeakyReLU
├─ MaxPool (2x2, stride2)
├─ Conv Layers ... 共19层
│
└─ Output: 13x13x(5×B C) → Bounding Box 预测 类别概率特点说明
输入图像统一为 416 × 416输出为 13 × 13 的网格单元每个单元格输出多个 bounding box默认为 5 个每个 bounding box 包含 (tx, ty)中心坐标偏移(tw, th)宽高相对于 anchor 的缩放confidence是否包含物体class probabilities类别置信度 四、YOLOv2 的关键创新点详解
✨ 1. Anchor Boxes 的引入 什么是 Anchor Boxes
Anchor Boxes 是一组预设的宽高比如 1:1、2:1、1:2 等用于作为边界框回归的参考模板。 YOLOv1 的问题
每个 grid cell 只能预测两个固定格式的边界框缺乏先验知识导致对形状变化大的目标如长条形物体表现不佳
✅ YOLOv2 的改进
每个 grid cell 预测多个 bounding box默认 5 个每个 bounding box 的宽高是基于 K-Means 聚类真实框得到的 anchors公式如下 b w a w ⋅ e t w , b h a h ⋅ e t h b_w a_w \cdot e^{t_w},\quad b_h a_h \cdot e^{t_h} bwaw⋅etw,bhah⋅eth
其中 a w , a h a_w, a_h aw,ah 是 anchor 的宽高 t w , t h t_w, t_h tw,th 是网络输出的偏移值。 Anchor Boxes 的优势
提升了小物体检测效果增加了模型对不同形状目标的适应能力提高了整体召回率。 ✨ 2. 多尺度预测Multi-Scale Training 什么是 Multi-Scale Training
YOLOv2 在训练过程中随机选择输入图像的尺寸使模型能够适应不同尺度的目标。 实现方式
输入图像尺寸在 [320, 352, …, 608] 中随机选取均为 32 的倍数模型在推理时也可适配任意尺寸的图像通过这种方式增强了模型的尺度鲁棒性。 优势
对小目标更敏感不依赖固定输入尺寸推理速度基本不变的情况下提升了精度。 ✨ 3. Darknet-19 主干网络
YOLOv2 使用了一个轻量级的卷积神经网络 Darknet-19它相比 VGG 更快、更轻量。 Darknet-19 结构简述
层类型参数说明Conv BatchNorm LeakyReLU19 层卷积网络MaxPooling下采样操作Global Average Pooling最终分类输出 优势
比 VGG 快很多准确率接近 VGG更适合嵌入式设备部署。 ✨ 4. 联合训练 COCO ImageNetYOLO9000
YOLOv2 的最大亮点之一是 YOLO9000 —— 一个可以检测 9000 类别的检测器。 实现思路
使用 WordTree 构建类别层级结构图像来源包括 COCO带位置标签和 ImageNet仅分类在 COCO 上训练检测头在 ImageNet 上训练分类头利用层次 softmax 进行联合优化。 应用价值
实现跨数据集迁移学习扩展性强可用于罕见类别检测开启了“开放词汇”检测的新方向。 五、YOLOv2 的损失函数详解
YOLOv2 的损失函数与 YOLOv1 类似但加入了对 anchor boxes 的支持。
⚙️ 损失函数公式 L λ coord ∑ i 0 S 2 ∑ j 0 B 1 i j obj [ ( x i − x ^ i ) 2 ( y i − y ^ i ) 2 ( w i − w ^ i ) 2 ( h i − h ^ i ) 2 ] \mathcal{L} \lambda_{\text{coord}} \sum_{i0}^{S^2} \sum_{j0}^{B} \mathbb{1}_{ij}^{\text{obj}} \left[ (x_i - \hat{x}_i)^2 (y_i - \hat{y}_i)^2 (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 (\sqrt{h_i} - \sqrt{\hat{h}_i})^2 \right] Lλcoordi0∑S2j0∑B1ijobj[(xi−x^i)2(yi−y^i)2(wi −w^i )2(hi −h^i )2] − ∑ i 0 S 2 ∑ j 0 B 1 i j obj log ( C i ) − ∑ i 0 S 2 ( 1 − 1 i obj ) log ( 1 − C i ) -\sum_{i0}^{S^2} \sum_{j0}^{B} \mathbb{1}_{ij}^{\text{obj}} \log(C_i) -\sum_{i0}^{S^2} (1 - \mathbb{1}_{i}^{\text{obj}}) \log(1 - C_i) −i0∑S2j0∑B1ijobjlog(Ci)−i0∑S2(1−1iobj)log(1−Ci) λ cls ∑ i 0 S 2 1 i obj ∑ c ∈ classes ( p i ( c ) − p ^ i ( c ) ) 2 \lambda_{\text{cls}} \sum_{i0}^{S^2} \mathbb{1}_{i}^{\text{obj}} \sum_{c \in \text{classes}} (p_i(c) - \hat{p}_i(c))^2 λclsi0∑S21iobjc∈classes∑(pi(c)−p^i(c))2 YOLO 将图像划分为 S × S S \times S S×S 的网格每个网格负责预测 B B B 个边界框bounding boxes每个框包括 • 位置 x , y x, y x,y • 宽高 w , h w, h w,h • 置信度 C C C • 类别概率向量 p 1 , p 2 , … p_1, p_2, \dots p1,p2,… 总体公式 L 位置误差 置信度误差 分类误差 \mathcal{L} \text{位置误差} \text{置信度误差} \text{分类误差} L位置误差置信度误差分类误差
⸻ 各部分含义
位置损失bounding box regression
由左上角位置 ( x i , y i ) (x_i, y_i) (xi,yi) 和宽高 ( w i , h i ) (w_i, h_i) (wi,hi) 构成使用的是平方差损失但对 w , h w, h w,h 使用了开方来减小大框对损失的影响 λ coord ∑ i 0 S 2 ∑ j 0 B 1 i j obj [ ( x i − x ^ i ) 2 ( y i − y ^ i ) 2 ( w i − w ^ i ) 2 ( h i − h ^ i ) 2 ] \lambda_{\text{coord}} \sum_{i0}^{S^2} \sum_{j0}^{B} \mathbb{1}_{ij}^{\text{obj}} \left[ (x_i - \hat{x}_i)^2 (y_i - \hat{y}_i)^2 (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 (\sqrt{h_i} - \sqrt{\hat{h}_i})^2 \right] λcoordi0∑S2j0∑B1ijobj[(xi−x^i)2(yi−y^i)2(wi −w^i )2(hi −h^i )2]
其中 1 i j obj \mathbb{1}_{ij}^{\text{obj}} 1ijobj 是一个指示变量表示第 i i i 个网格的第 j j j 个预测框是否负责某个目标。
⸻
置信度损失object confidence prediction
用于衡量模型对目标存在与否的预测能力分为两部分 • 对有目标的框预测 C i C_i Ci希望接近 1 • 对无目标的框预测 C i C_i Ci希望接近 0 • ∑ i 0 S 2 ∑ j 0 B 1 i j obj log ( C i ) • ∑ i 0 S 2 ( 1 − 1 i obj ) log ( 1 − C i ) • \sum_{i0}^{S^2} \sum_{j0}^{B} \mathbb{1}_{ij}^{\text{obj}} \log(C_i) • \sum_{i0}^{S^2} (1 - \mathbb{1}_{i}^{\text{obj}}) \log(1 - C_i) •i0∑S2j0∑B1ijobjlog(Ci)•i0∑S2(1−1iobj)log(1−Ci)
⸻
分类损失classification loss
用于衡量正确类别的概率预测使用的是每一类的平方差损失可替换为交叉熵 λ cls ∑ i 0 S 2 1 i obj ∑ c ∈ classes ( p i ( c ) − p ^ i ( c ) ) 2 \lambda_{\text{cls}} \sum_{i0}^{S^2} \mathbb{1}i^{\text{obj}} \sum{c \in \text{classes}} (p_i(c) - \hat{p}_i(c))^2 λclsi0∑S21iobj∑c∈classes(pi(c)−p^i(c))2 关键区别
引入了 anchor boxes 的宽高参数 a w , a h a_w, a_h aw,ah边界框预测不再直接回归绝对值而是基于 anchor 的偏移分类部分使用层次 softmax支持多数据集联合训练。 六、YOLOv2 的 NMS 优化
YOLOv2 中也使用了 NMSNon-Maximum Suppression 来去除重复预测框。
✅ 优化点
支持 Soft-NMS软抑制避免误删相邻目标使用 DIoU-NMS 替代传统 IoU支持按类别执行 NMS。 七、YOLOv2 的性能对比
模型mAPCOCOFPSYOLOv1~63.445 fpsYOLOv2~76.867 fpsSSD512~79.822 fpsFaster R-CNN (VGG)~73.27 fps ✅ YOLOv2 在保持高速的同时显著提升了精度成为当时最具性价比的目标检测方案之一。 八、YOLOv2 的局限性
尽管 YOLOv2 表现优异但仍存在一些不足
局限性说明小物体检测仍不理想虽有改进但在密集场景下依然不如两阶段方法Anchor 设计依赖聚类结果需要重新聚类 anchor 尺寸以适配新任务无特征融合机制缺少类似 FPN 的多尺度融合模块 九、总结
模块内容YOLOv2 的贡献引入 Anchor Boxes、支持多尺度训练、使用 Darknet-19、提出 YOLO9000Anchor Boxes 的作用提升召回率、提高定位精度多尺度训练的优势增强模型对不同尺寸目标的适应能力Darknet-19 的特点比 VGG 更快、更适合部署YOLO9000 的意义开启了大规模检测的新时代 欢迎点赞 收藏 关注我我会持续更新更多关于计算机视觉、目标检测、深度学习、YOLO系列等内容