文章目录
一、前言
目标检测算法主要包括:【两阶段】目标检测算法、【多阶段】目标检测算法、【单阶段】目标检测算法。
什么是两阶段目标检测算法,与单阶段目标检测有什么区别?
两阶段目标检测算法因需要进行两阶段的处理:1)候选区域的获取,2)候选区域分类和回归,也称为基于区域(Region-based)的方。
与单阶段目标检测算法的区别:通过联合解码同时获取候选区域、类别。
什么是多阶段目标检测算法?
【两阶段】和【多阶段】目标检测算法统称级联目标检测算法,【多阶段】目标检测算法通过多次重复进行步骤:1)候选区域的获取,2)候选区域分类和回归,反复修正候选区域。
根据是否属于锚框分为:
- Anchor-Free:
CornerNet
FCOS
TTFNet
YOLOv1(注意)
- Anchor-based:
RetinaNet
YOLOv2-v5
PP-YOLO
SSD
主要考虑问题:
- 准确性
- 实时性
- 多尺度
- 标签方案
- 目标重叠
- 模型训练
- 重复编码
- 数据增强
- 样本不平衡
二、两阶段目标检测算法
2.1 RCNN
1、模型通过【选择性搜索算法】获取潜在的候选区域
2、截取原图每个候选区域并resize输入到模型中进行特征抽取
3、使用SVM进行分类,以及进行bounding box 回归
存在问题:
重复编码:由于候选区域存在重叠,模型需要重复进行重叠区域的特征图提取,计算冗余。
模型训练:由于特征抽取模型和区域的分类回归模型分开训练,无法进行端到端的模型训练,训练过程需要提取每个包含重叠区域的候选区域特征并保存用于分类和回归训练。
实时性差:重复编码导致实时性不佳,【选择性搜索算法】耗时严重。
2.2 Fast-RCNN
考虑到RCNN的缺点,Fast-RCNN来了!
1、模型依旧通过【选择性搜索算法】获取潜在的候选区域。
2、将原图通过特征抽取模型进行一次的共享特征图提取,避免了重复编码。
3、在特征图中找