机器学习基础概念

回归算法,就是让机器在多维空间中,找到一个连续的数学函数 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。

  1. 按 score 从高到低排序
  2. 取分数最高的框作为保留框
  3. 删除和它 IoU 过高的其他框
  4. 对剩余框重复以上过程

评价指标

假设真实图像里有 3 只狗,模型预测了 4 个框。
其中:
2 个框正确检测到狗
1 个框框到了背景,却说是狗
1 只真实狗没有被检测出来

那么:
TP = True Positive = 检测正确的目标
FP = False Positive = 误检,把背景或错误目标当成目标
FN = False Negative = 漏检,真实目标没检测出来
在这里插入图片描述
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐