第 9 课
← 返回系列列表

Course 4:目标检测与分割

Deep Learning Specialization — 深度学习专项课程

YOLO、SSD、语义分割等视觉检测技术。

Course 4:目标检测与分割

课程简介

YOLO、SSD、语义分割等视觉检测技术。

🎬 本课程视频:Deep Learning Specialization — 深度学习专项课程


一、目标检测基础

目标检测任务不同于图像分类——它不仅要知道图像中有什么物体,还要知道它们在哪里。输出是用边界框(Bounding Box)标注的物体位置和类别。

1.1 目标定位

对于包含单个物体的图像,神经网络可以同时输出类别和边界框:

$$y = [p_c, b_x, b_y, b_h, b_w, c_1, c_2, ..., c_n]^T$$

其中 $p_c$ 表示是否存在物体,$(b_x, b_y)$ 是边界框中心坐标,$b_h, b_w$ 是高度和宽度,$c_i$ 是类别概率。

损失函数可以使用平方误差或更鲁棒的变体。

1.2 滑动窗口检测

传统的滑动窗口方法:使用不同大小的窗口在图像上滑动,对每个窗口区域进行分类。

缺点:计算量大、窗口尺寸选择困难、定位不精确。

1.3 YOLO算法

YOLO(You Only Look Once)由Joseph Redmon在2016年提出,将目标检测视为回归问题,一次性预测所有边界框和类别。

核心思想
1. 将输入图像划分为 $S \times S$ 的网格
2. 每个网格负责检测中心落在该网格的物体
3. 每个网格预测 $B$ 个边界框和 $C$ 个类别的概率

输出张量维度:$S \times S \times (B \times 5 + C)$

其中5表示:$p_c, b_x, b_y, b_h, b_w$。

YOLO的损失函数包含三个部分:
- 坐标误差(边界框位置)
- 置信度误差(是否存在物体)
- 分类误差(物体类别)

YOLOv3的改进:
- 多尺度检测(3个不同尺度)
- 使用Darknet-53骨干网络
- 使用逻辑回归预测物体置信度
- 跨越残差连接的FPN结构

1.4 SSD算法

SSD(Single Shot MultiBox Detector)在YOLO基础上引入了多参考框(Anchor Boxes)和金字塔特征图:

1.5 R-CNN系列

R-CNN(Region-based CNN):
1. 使用选择性搜索(Selective Search)生成约2000个候选区域
2. 对每个候选区域裁剪和缩放
3. 使用CNN提取特征
4. 使用SVM分类器和边界框回归器

缺点:训练分阶段、速度慢(每张图几十秒)。

Fast R-CNN
- 整张图只过一次CNN,共享卷积计算
- 使用ROI Pooling从特征图中提取固定大小的特征
- 多任务损失(分类+边界框回归)

Faster R-CNN
- 使用区域提议网络(RPN)替代选择性搜索
- RPN和Fast R-CNN共享卷积特征
- 真正实现端到端训练

速度对比:
- R-CNN:几十秒/张
- Fast R-CNN:~2秒/张
- Faster R-CNN:~0.2秒/张
- YOLO/SSD:~0.02秒/张

1.6 语义分割

语义分割为图像中的每个像素分配一个类别标签。

全卷积网络(FCN)
- 将全连接层替换为卷积层
- 使用转置卷积(上卷积)恢复到原始分辨率
- 跳连接结合浅层和深层特征

U-Net
- 编码器-解码器结构
- 跳连接将编码器的特征直接传给解码器对应层
- 在医学图像分割中表现优异

1.7 目标检测评估指标

IoU(交并比)

$$\text{IoU} = \frac{\text{Area of Overlap}}{\text{Area of Union}}$$

IoU > 0.5 通常认为检测正确。

mAP(Mean Average Precision)
对所有类别的AP取平均,是目前最常用的评估指标。

延伸阅读

← Course 4:经典 CNN 架构 Course 4:人脸识别与神经风格迁移 →