two-stage与one-stage目标检测算法概览

two-stage检测算法

1、特点

1)主干网络为CNN,提取卷积特征;
2)最早由rgb提出,典型代表为R-CNN;
3)是一种端到端的目标检测算法(基于RPN网络);
4)准确度高,速度相对one-stage慢;

2、检测流程

two-stage与one-stage目标检测算法概览_第1张图片
简单来说,就是首先产生候选区域,然后提取CNN特征,再进行区域分类和位置精修。

3、常见算法

代表算法有:R-CNN,Fast R-CNN,Faster R-CNN,以及各种变体。

这里,我截了一张图,可以很清晰的看到它的各种变体算法:

two-stage与one-stage目标检测算法概览_第2张图片

4、核心组件

核心组件就是主干网络CNN,加RPN网络,关于CNN网络要遵循以下几个原则:

1)尽量去繁从简;
2)多尺度特征融合;
3)模型尽量轻量化;

再来说下RPN网络吧。

two-stage与one-stage目标检测算法概览_第3张图片
1)区域推荐

采用anchor机制,看下图;
two-stage与one-stage目标检测算法概览_第4张图片
以每个feature map的每一个像素为中心(叫做锚点),按照不同比例提取候选区域,以Fast R-CNN为例,会采用9个不同的尺度,所以最后会提取到wxhx9个候选区域;
然后利用GT来对这些候选区域进行筛选,得到正样本和负样本,这里要注意GT和候选区域的size;
具体的后面博客更新会专门讲到,今天只是概览。

2)ROI Pooling

ROI Pooling属于RPN网络的一个layer,它的输入有3部分,分别为:feature map、ROIs(1x5x1x1,这里的5指的是x,y,w,h,idx,idx索引是为了将x,y,w,h指定的ROI信息映射到feature map,因为可能会有多个ROI映射到同一个feature map)、ROI参数(缩放尺度参数等);输出则是固定尺寸的feature map;

总结的说,ROI Pooling的作用其实就是完成了抠图加resize的操作。

3)分类和回归

这部分不再介绍;

5、two-stage的改进方向

1)寻求更好的网络特征;
2)寻求更好的RPN网络;
3)更完善的ROI分类;
4)样本后处理;
5)更大的mini-batch

one-stage检测算法

1、特点

1)使用CNN卷积作为特征提取;
2)无需region proposal,直接回归目标物体的类别概率和位置坐标;
3)准确度低,但速度快;

2、常见算法

1)YOLO V1、YOLO V2、YOLO V3
2)SSD及变体
3)RetinaNet等

4、核心组件

one-stage检测算法的核心组件是CNN主干网络+回归网络;
不再细说,前面讲过SSD的原理,可以参考;

one-stage和two-stage算法对比

one-stage的优缺点:
优点:速度快、能够学到物体的泛化特征、避免背景错误产生false positive;
缺点:准确度低、对小目标检测效果不佳;

two-stage的优缺点:
优点:准确度高、anchor机制、共享计算量;
缺点:速度慢、训练时间长;

总结:一般来说,在终端产品会选择one-stage,云端会偏向选择two-stage。

你可能感兴趣的:(Computer,Vision,DL,目标检测)