1. Two-Stage基本介绍、流程与常见算法
1.1Two-stage基本介绍
- CNN卷积特征;
- R. Girshick et al., 2014提出R-CNN到faster RCNN;
- 端到端的目标检测(RPN网络);
- 准确度高、速度相对one-stage慢;
Two-stage的目标检测算法主要是通过一个完整的卷积神经网络来完成目标检测的过程,进行目标检测时用到的特征就是CNN的特征,也就是通过一个CNN来提取对候选区域目标的特征的描述;
1.2 Two-stage基本流程
1.3 Two-stage核心组件
- 核心组件
- CNN网络(主干网络);
- RPN网络;
- CNN网络设计原则
- 从简到繁再到简的卷积神经网络;
- 多尺度特征融合的网络;
- 更轻量级的CNN网络;
- RPN网络
- 区域推荐(Anchor机制);
- ROI Pooling;
- 输入:特征图、rois(1x5x1x1)以及ROI参数;
- 输出:固定尺寸的feature map;
- 分类和回归;
2. 基于One-stage的目标检测算法
2.1 One-stage基本介绍
- 使用CNN卷积特征;
- 直接回归物体的类别概率和位置坐标值(无region proposal);
- 准确度低、速度相对two-stage快;
2.2 One-stage基本流程
- One-stage和Two-stage的区别就在于是否包含了候选区域推荐的过程;
2.3 One-stage常见算法
2.4 One-stage的核心组件
- One-stage的核心组件
- CNN网络;
- 回归网络;
- CNN网络设计原则
- 从简到繁再到简的卷积神经网络;
- 多尺度特征融合的网络;
- 更轻量级的CNN网络;
- 回归网络
- 区域回归(置信度、位置、类别);
- Anchor机制(SSD);
3. One-stage与Two-stage优缺点对比
- One-stage
- 优点:
- 速度快;
- 避免背景错误,产生false positives;
- 学到物体的泛化特征;
- 缺点:
- 精度低(定位、检出率);
- 小物体的检测效果不好;
- 优点:
- Two-stage
- 优点:
- 精度高(定位、检出率);
- Anchor机制;
- 共享计算量;
- 缺点:
- 速度慢;
- 训练时间长;
- 误报高;
- 优点:
4. SSD系列算法原理介绍
4.1 SSD系列算法介绍(主干网络、多尺度Feature Map预测)
- SSD算法介绍:
- Single Shot MultiBox Detector(One-stage方法);
- Wei Liu在ECCV 2016提出;
- 直接回归目标类别和位置;
- 不同尺度的特征图上进行检测;
- 端到端的训练;
- 图像的分辨率比较低,也能保证检测的精度;
- 原理介绍
- 主干网络:
- VGG、ResNet、MobileNets等,各种卷积神经网;
- 将VGG最后两个FC改成卷积,并增加4个卷积层;
- 多尺度Feature Map预测;
- 不同层的feature map;
- Prior box:类别概率和坐标(x,y,w,h);
- Default bounding boxes的类别分数、偏移量;
- 首先,SSD会包含一个主干网络,VGG16为SSD目标检测的主干网络,这里的主干网络主要作用到了第五层卷积,也就是第五个尺度上的第三个卷积层的输出结果。这里的输出结果也作为了下几个卷积层的输入,这里采用多尺度的feature map预测,也就是在进行预测的时候,会针对接下来的六个不同的尺寸来分别进行预测,这六个尺度分别包括上图的六个连线,也包含了6个feature map尺寸。19 * 19 到 10 *10通过下采样得到。最后通过NMS对检测结果进行分类和筛选。
- 主干网络:
4.2 Prior Box Layer、样本构造、损失函数介绍
- Prior Box Layer:
- m x n个cell (每个点都作为一个cell);
- 每个cell上生成固定scale和aspect ratio的box(尺寸和长宽比例);
- 假设一个feature map有m x n个cell,每个cell对应k个default box,每个default box预测c个类别score和4个offset;
- ( c +4)* k * m * n个输出;
- 构造样本
- 正样本
- 从GT box出发找到最匹配的prior box放入候选正样本集;
- 从prior box集出发,寻找与GT box满足IOU>0.5的最大prior box放入候选正样本集;
- 负样本
- 难例挖掘;
- 正负样本比: 1:3;
- 正样本
- 难例挖掘
- 损失函数:
- 分类loss + 回归loss;
- 分类loss:Softmax Loss;
- 回归loss:Smooth L1 loss;
4.3 DSSD、DSOD算法
- SSD系列算法优化及扩展
- DSSD
- SSD算法对小目标不够鲁棒的最主要的原因是浅层feature map的表征能力不够强;
- 加入上下文信息;
- 更好的基础网络(ResNet)和Deconvolution层,skip连接来给浅层feature map更好的表征能力;
- SSD算法对小目标不够鲁棒的最主要的原因是浅层feature map的表征能力不够强;
- DSOD
- 2017年的ICCV2017;
- DSOD可以从0开始训练数据,不需要预训练模型,而且效果可以和fine-tune的模型媲美;
- SSD + DenseNet = DSOD;
- 可以从零开始训练得到一个好的目标检测网络么;
- 如果可以,设计这样的网络有没有什么原则可以遵循;
- 预训练模型优点:
- 开源模型多,可以直接将它们用于目标检测;
- 可以快速得到:最终的模型,需要的训练数据也相对较少;
- 预训练模型缺点:
- 预训练模型大,参数太多,模型结构灵活性差,难以改变网络结构,计算量大,限制其应用场合;
- 分类和检测任务的损失函数和类别分布式不一样的,优化空间存在差异;
- 尽管微调可以减少不同目标类别分布的差异性,但是差异太大时,微调效果依然不理想;
- DSOD设计原则
- 基于候选区域提取的方法无法从零开始训练,不收敛,只有proposal-free方法可以从零开始训练并收敛(ROI Pooling);
- DenseNet中更多的skip connections 实现supervised signals传递;
- 增加dense blocks数量区别原先固定数量;
- Stem Block优化(3个3 *3卷积层和1个2 *2最大池化层);
- 6个尺度特征图进行目标检测,再融合(如何利用特征图);
4.4 FSSD、RSSD算法
- FSSD设计原则
- 借鉴了FPN的思想,重构了一组pyramid feature map,使得算法的精度有了明显的提升,速度也没有太降;
- 把网络中某些feature调整为同一size再contact,得到一个像素层,以此层为base layer来生成pyramid feature map;
- Feature Fusion Module;
- RSSD设计原则
- rainbow concatenation方式(pooling加deconvolution)融合不同层的特征,在增加不同层之间feature map关系的同时也增加了不同层的feature map个数;
- 这种融合方式不仅解决了传统SSD算法存在的重复框问题,同时一定程度上解决了small object的检测问题;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。