Lab 2 · 人脸检测系统
本实验对应第 3 讲:搭建一条检测数据管线,训练一个能在一张图里定位并识别人脸的模型,再用对抗样本检验它的鲁棒性,并讨论隐私与偏见。检测比Lab 1的分类多了「在哪儿」这一维。
1. 从分类到检测
分类回答「这张图是什么」,检测回答「图里哪里有什么」。第 3 讲的 CNN 给出一张图的整体标签;检测要给出一组框 + 类:。
两条主流路线(第 3 讲 3.6):
| 路线 | 做法 | 代表 | 特点 |
|---|---|---|---|
| 两阶段 | 先产生候选区域,再对每个区域分类 + 回归框 | R-CNN 系列 | 精度高、速度较慢 |
| 单阶段 | 直接在网格上预测框与类 | YOLO 类 | 速度快、适合实时 |
| 滑动窗口(本 Lab 起点) | 用固定大小的窗口在图上逐位置扫 | 经典方法 | 直观,能看清感受野与步幅的作用 |
2. 用滑动窗口理解检测
最朴素的检测器:拿一个小 CNN(输入如 ),在图上以固定步幅滑动,每个窗口输出“有人脸 / 没人脸“。这正好把第 3 讲的感受野和步幅用上了。
在每个位置都跑一次 CNN,计算重复且昂贵。但这个笨办法把检测的本质摊开了:检测 = 在位置和尺度上搜索"分类器认为这里有个目标吗"。理解了它,再看 YOLO 的"一次前向在特征图上密集预测",就知道它只是把搜索共享了——卷积本身已经在所有位置滑动,何必再手动循环。
多尺度:人脸大小不一,窗口也需多尺度——图像金字塔或特征金字塔(在不同下采样层级上检测)。这正是「池化带来的一定平移不变性」(第 3 讲 3.3)在检测里的用途。
3. 数据管线
检测数据是「图 + 一组框」,比分类多两步:
- 读入与归一化:像素缩放到 或标准化。
- 框的坐标变换:标注常给 ,模型常预测 加偏移——训练时需要在这两种表示间转换(这是检测最容易出 bug 的地方)。
- 匹配正负样本:对滑动窗口版本,窗口与某个人脸框的 IoU 超过阈值记为正,低于另一阈值记为负(背景)。
。它同时用作正负样本的匹配准则与评价指标。IoU 越大,预测框与真值框越重合;一般 视为命中。
4. 训练与评估
- 损失:分类用交叉熵(第 1 讲 1.4),框回归用平滑 L1 或 IoU 类损失。
- 评估:不要只看准确率(背景远多于人脸,全判背景也能“高准确率“)。用 Precision / Recall 与 mAP(各类别 Precision–Recall 曲线下面积的平均),NMS(非极大值抑制)去掉重叠的重复框。
一个检测集里 99% 的窗口是背景。若模型全部判为背景,准确率是多少?为什么这个数字没有意义?
准确率 ——但它一个人脸都框不出来(召回率 = 0)。类别极不平衡时准确率是坏指标,必须看 Precision / Recall 或 mAP。
∎5. 对抗样本:人眼看不出,模型却错
在输入上加一个人眼几乎不可察的小扰动 ,使模型出错:
这就是 FGSM(快速梯度符号法):沿让损失上升的方向推一小步。它和训练用的是同一个梯度(第 1 讲的反向传播),只是这次求的是对输入的梯度,而不是对参数。
它说明模型的决策不等于人的决策:模型的"人脸"是特征空间里一个高维区域,沿某些方向挪一点点就跨过边界,而这些方向对人不敏感。这既是安全风险(攻击),也是理解模型(它的边界长什么样)的工具。第 3 讲 3.7 讨论的伦理问题在这里变成可实验的对象。
6. 隐私与偏见(讨论题)
- 偏见:若训练数据里某种肤色/性别的样本偏少,检测器对该群体的召回率会系统性偏低。列出如何在数据集层面发现这一点。
- 隐私:人脸是可识别身份的生物特征。讨论:这类系统在部署时应当有哪些默认约束(数据留存、用途限制、知情同意)?(参见第 7 讲三条法则。)
7. 排错清单
- 框坐标用错表示(像素 vs 归一化、中点+宽高 vs 两角)——检测最常见的 bug;
- 正负样本比例:负样本过多会让模型全判背景,需要采样/加权;
- NMS 阈值:太小→漏框,太大→重复框;
- 图像与标注不同步:增强(翻转/裁剪)时必须同等地变换框;
- 评估集泄漏:别用训练里见过的图评估。
8. 提交与自检
- 一张带检测框的可视化结果;
- 一份 Precision / Recall(或 mAP)报告;
- 一个对抗样本演示:原图 + 扰动放大图 + 误判结果。
自检:能说清「卷积共享」如何把滑动窗口变高效;能解释 IoU、NMS、mAP 各自解决什么问题;能演示一个对抗样本并说明它为何“欺骗“了模型。
9. 代码 ↔ 讲次对照表
| 代码 / 步骤 | 对应结论 |
|---|---|
| 用 CNN 替代逐窗口前向 | 3.1 归纳偏置:权值共享把滑动窗口变成一次前向 |
| 输出尺寸与参数量计算 | 3.2 卷积运算: |
| 加载预训练骨干并冻结 | 3.6 迁移学习:小数据先迁移,别从零训 |
| 正负样本采样与加权 | 3.7 检测与分割:类别不平衡是检测的主要陷阱 |
| IoU / NMS / mAP | 3.7:匹配、去重与评估口径 |
| FGSM / PGD 对抗样本 | 3.9 伦理与安全:微小扰动翻转预测 |
| 按人群切分评估 | 7.4 公平与责任:平均指标会掩盖群体差异 |