机器学习基础概念
回归算法,就是让机器在多维空间中,找到一个连续的数学函数 f(x)f(x)f(x),使得输入 xxx 经过映射后,输出的 yyy 能够无限逼近真实的世界数值。
在训练阶段,模型首先通过前向传播计算预测输出,并评估与真实标签之间的损失 (Loss);随后,利用反向传播算法计算网络各层参数的梯度;最后,由优化器 (如 Adam 或 SGD) 根据梯度信息对网络权重进行参数更新,以此实现模型的不断迭代与收敛。
两阶段检测器
第一阶段:找候选区域
第二阶段:判断类别 + 修正框
先生成一批候选框,再对候选框进行分类和回归。
R-CNN
输入图像
→ Selective Search 生成约 2000 个候选区域 RoI
→ 把每个 RoI(Region of Interest,候选区域) 裁剪/拉伸成固定大小
→ 每个 RoI 单独送入 CNN 提特征
→ SVM 分类
→ bbox regression 修正框
Fast R-CNN:先整图卷积,再裁 RoI
输入图像
→ 整张图过 CNN,得到 feature map
→ 把 proposals(selective search来找) 映射到 feature map 上
→ 对每个 RoI 做 RoI Pooling(把不同大小的 RoI 特征变成固定大小)
→ 分类 + bbox regression
Faster R-CNN:让 CNN 自己生成 proposals
输入图像
→ backbone CNN 提取 feature map
→ RPN(Region Proposal Network,区域候选网络) 在 feature map 上生成 proposals
→ RoI Pooling / RoI Align(RoI Align 额外解决 RoI Pooling 的量化错位 问题,彻底打通了特征图与原图之间的像素级精确映射,产生了Mask R-CNN)
→ 分类 + bbox regression
→ 最终检测结果
单阶段检测器
在特征图上密集预测 bbox + confidence + class,没有单独的 proposal 阶段。
单阶段检测器不是完全没有候选框,而是没有 Faster R-CNN 那种"先 RPN 生成 proposal,再 RoI Head 二次处理"的独立阶段。它直接在 feature map 上密集预测框、类别和置信度。
直接预测最终候选框、类别、置信度
YOLO:快
整张图一次前向传播,就直接输出检测结果。
SSD:适配不同尺度目标
SSD(Single Shot MultiBox Detector,单阶段检测器)
在多个尺度的 feature map 上直接预测目标
为什么要多个尺度?
因为:
浅层 feature map 分辨率高,适合小目标
深层 feature map 语义强,适合大目标
SSD 会在不同 feature map 上放 default boxes,也就是类似 anchor 的预设框,然后直接分类和回归。
SSD = 多尺度特征图 + default boxes + 单次预测。
RetinaNet:解决正负样本极度不平衡
RetinaNet 的关键是:Focal Loss
Focal Loss 的作用:降低简单负样本的权重,提高困难样本的学习权重
后处理与评价
NMS(Non-Maximum Suppression,非极大值抑制)
保留最可信的框,删除重复框。
框可能都围着同一只狗,只是位置略有不同。
问题是:
同一个目标被重复检测了很多次。
所以需要后处理,把重复框删掉。
这就是 NMS。
- 按 score 从高到低排序
- 取分数最高的框作为保留框
- 删除和它 IoU 过高的其他框
- 对剩余框重复以上过程
评价指标
假设真实图像里有 3 只狗,模型预测了 4 个框。
其中:
2 个框正确检测到狗
1 个框框到了背景,却说是狗
1 只真实狗没有被检测出来
那么:
TP = True Positive = 检测正确的目标
FP = False Positive = 误检,把背景或错误目标当成目标
FN = False Negative = 漏检,真实目标没检测出来

