
视频元信息
- 课程:Deep Learning Specialization - Convolutional Neural Networks - Week 3
- 主题:目标定位(Object Localization)——从图像分类到带定位的分类
- 时长:约 12 分钟
内容摘要(TL;DR)
本视频是目标检测系列的开篇,讲解带定位的图像分类:在标准分类网络基础上,让神经网络额外输出 4 个实数(bx、by、bh、bw)来参数化边界框。核心是定义 8 维目标标签向量 y = [pc, bx, by, bh, bw, c1, c2, c3],并针对"有物体"与"无物体"两种情况分别设计损失函数。这是后续目标检测(Detection)的基础。
一、课程引入与任务背景 [00:00]
- 本周主题是目标检测(Object Detection),这是计算机视觉中正在爆发式发展的领域。
- 过去几年目标检测的性能提升非常显著,远超几年前的水平。
- 为了循序渐进地讲清楚目标检测,吴恩达先引入目标定位(Object Localization) 作为铺垫。
- 学习路径:图像分类 → 带定位的分类 → 目标检测。
理解:这三步是层层递进的关系。分类只回答"是什么",带定位的分类回答"是什么 + 在哪里",检测则回答"有哪些 + 各自在哪里"。
二、三个任务的术语区分 [00:22]
- 图像分类(Image Classification):算法看一张图,判断"这是一辆车"。
- 带定位的分类(Classification with Localization):不仅标注为车,还要在图中用一个红色矩形框(bounding box)圈出车的位置。
- 目标检测(Detection):图中可能有多个物体,需要全部检测并全部定位。
考点:术语区分
- 分类问题与带定位的分类问题:通常只有一个物体,且常位于图像中央。
- 检测问题:可能包含多个物体,甚至多个不同类别的物体。
- 以自动驾驶为例:检测任务中不仅需要检测其他车辆,还可能需要检测行人、摩托车,甚至其他物体。
- 本周后续会讲解检测问题。
理解:分类学到的思路对带定位的分类有用,而定位学到的思路又会反过来对检测有用,知识是逐层复用的。
三、标准分类网络回顾 [02:15]
- 输入一张图片进入多层卷积网络(ConvNet)。
- 网络输出特征向量,接入 softmax 单元预测类别。
- 以自动驾驶为例,类别可设为:
- 行人(pedestrian)
- 汽车(car)
- 摩托车(motorcycle)
- 背景(background)——即"以上都不是"
- 因此这是一个4 类输出的 softmax。
易错点:背景类不可省略 背景类(background)代表"图中没有要检测的目标"。如果去掉背景类,网络遇到空图时会强行输出一个类别,导致误检。这是很多初学者容易忽略的设计细节。
四、从分类到定位:增加 4 个输出 [03:07]
- 要让网络同时定位物体,只需在网络输出端增加几个输出单元。
- 具体做法:让神经网络额外输出 4 个数字,记为 bx、by、bh、bw,用于参数化检测到的物体的边界框。
坐标约定
- 图像左上角为坐标 (0, 0)。
- 图像右下角为坐标 (1, 1)。
- 即所有坐标都被归一化到 [0, 1] 区间。
考点:边界框的四要素
- (bx, by):边界框的中点坐标(不是左上角!)
- bh:边界框的高度
- bw:边界框的宽度
- 注意这里用的是"中点 + 高宽"的表示法,而不是"左上角 + 右下角"。
数值示例
- bx ≈ 0.5(横向约在图像中间)
- by ≈ 0.7(纵向约在图像 70% 处)
- bh ≈ 0.3(框高约为图像总高的 30%)
- bw ≈ 0.4(框宽约为图像总宽的 40%)
理解:之所以用相对比例而非绝对像素,是为了让模型对图像尺寸不敏感,同一套参数在不同分辨率下都能适用。
五、监督学习与目标标签 y 的定义 [05:16]
- 如果训练集不仅有类别标签,还包含这 4 个边界框数字,就可以用监督学习让算法同时输出类别和位置。
- 定义目标标签 y 为一个 8 维向量:
y = [pc, bx, by, bh, bw, c1, c2, c3]
各部分含义:
- pc:是否有物体(probability of object)。若物体属于类别 1/2/3,则 pc = 1;若为背景类,则 pc = 0。
- bx, by, bh, bw:检测到的物体的边界框参数。
- c1, c2, c3:类别指示,分别对应行人、汽车、摩托车。
重点:pc 的含义 pc 可理解为"存在某个待检测类别物体的概率",即"不是背景类"的概率。
易错点:c1、c2、c3 中最多只有一个为 1 因为本问题是"带定位的分类",假设图像中只有一个物体,所以 c1、c2、c3 之间是互斥的(one-hot 形式)。
六、训练样本的两个案例 [07:09]
案例 1:图中有一辆车
- pc = 1(有物体)
- bx, by, bh, bw 给出边界框
- 因为这是一辆车(类别 2):
- c1 = 0(不是行人)
- c2 = 1(是汽车)
- c3 = 0(不是摩托车)
- 完整标签:y = [1, bx, by, bh, bw, 0, 1, 0]
案例 2:图中没有目标物体
- pc = 0
- 其余元素为 "don't care"(不关心),转录中用问号 ? 表示。
- 原因:如果图中没有物体,那么网络输出什么边界框、认为属于哪一类都无所谓。
重点:don't care 的设计思想 这是本视频最巧妙的地方之一。用"不关心"标记无效分量,可以避免网络在空图上被迫学习无意义的边界框标签(这些标签本身就不存在)。
易错点 当 pc = 0 时,bx、by、bh、bw 以及 c1、c2、c3 的取值在训练中不应产生损失。若错误地对它们计算损失,会污染梯度,损害模型性能。
七、损失函数的设计 [08:47]
设真实标签为 y,网络输出为 ŷ。视频以平方误差为例说明。
情况 1:y1 = 1(图中有物体)
- 损失为所有 8 个分量的平方误差之和:
L = (ŷ1 − y1)² + (ŷ2 − y2)² + ... + (ŷ8 − y8)²
- 因为此时所有分量都有意义,都要参与惩罚。
情况 2:y1 = 0(图中无物体)
- 损失只计算第一项:
L = (ŷ1 − y1)²
- 因为其余分量是 don't care,只需关注网络对 pc 的估计是否准确。
推导:为什么情况 2 只算第一项 当 pc = 0 时,边界框和类别标签在训练集中根本不存在有效值,强行计算会引入噪声。所以只保留 pc 的误差项,等价于"只要求网络正确判断图中是否有物体"。
实践中的损失选择(吴恩达的补充说明)
- 视频为简化描述使用了平方误差,但实践中可以更精细:
- c1、c2、c3:通常使用softmax 的 log-likelihood 损失(交叉熵)。
- 边界框坐标:可用平方误差或类似平方误差的损失。
- pc:可用逻辑回归损失(二分类交叉熵)。
- 不过即使全部用平方误差,通常也能正常工作。
考点:损失函数的分工
- 分类分量(c1/c2/c3)→ softmax + 交叉熵
- 存在性分量(pc)→ sigmoid + 二分类交叉熵
- 回归分量(bx/by/bh/bw)→ 平方误差 / L1 / smooth L1
八、总结与延伸 [11:22]
- 通过上述方法,可以让神经网络不仅分类物体,还能定位它。
- 核心思想:让神经网络输出一组实数,用来告诉你在图像中的位置——这是一个非常强大的想法。
- 下一视频将分享这一思想(把网络输出当作回归任务)在计算机视觉其他场景中的应用。
【拓展】目标定位 vs 目标检测的关键差异 本视频的定位方法假设图中只有一个物体。一旦图中有多个物体,8 维向量就不够用了——这正是后续 YOLO 等检测算法要解决的问题(用网格划分 + 每个格子独立预测,从而支持多目标)。
【拓展】边界框表示的常见变体
- 本视频:中心点 (bx, by) + 高宽 (bh, bw)
- 另一种常见表示:左上角 (x1, y1) + 右下角 (x2, y2)
- YOLO 系列常用中心点 + 宽高,并配合 anchor box 使用
【拓展】回归 vs 分类的混合任务 本任务本质上是"分类 + 回归"的混合:pc 和 c1/c2/c3 是分类问题,bx/by/bh/bw 是回归问题。理解这一点有助于设计合理的多任务损失(multi-task loss)。
【拓展】容易踩坑的点
- 忘记归一化坐标,导致损失尺度不平衡。
- 对 don't care 分量仍计算损失,训练不稳定。
- 混淆 bx/by 是中心点还是左上角,导致预测框整体偏移。
- 忽略背景类,导致空图误检。
关键标签/关键词
目标定位、目标检测、图像分类、边界框(bounding box)、bx/by/bh/bw、pc、c1/c2/c3、don't care、监督学习、平方误差、softmax、逻辑回归损失、多任务损失、自动驾驶、卷积神经网络(ConvNet)、吴恩达深度学习、CNN 第三周
生成时间:2026-10-11 00:09:06 生成平台:VideoNote www.xygy.top