• 目标检测—SSD系列算法原理介绍


    一、SSD系列算法原理介绍

    1.1 SSD算法介绍:

            ➢Single Shot MultiBox Detector (one-stage方法)
                     ●Wei Liu在ECCV 201 6提出
                     ●直接回归目标类别和位置
                     ●不同尺度的特征图上进行预测
                     ●口端到端的训练
                     ●图像的分辨率比较低,也能保证检测的精度

    1.2 SSD系列算法原理介绍

             ●主干网络: VGGNet
            ●多尺度Feature Map预测
            ●Default bounding boxes的类别分数、偏移量

            ➢主干网络介绍:
                    ●VGG、 ResNet、 MobileNets等 ,各种卷积神经网
                    ●将VGG最后两个FC改成卷积,并增加4个卷积层.

            ➢多尺度FeatureMap预测:
                     ●不同层的feature map
                     ●Prior box :类别概率和坐标(x,y,w,h)

    1.3 算法细节介绍

    ●Prior Box Layer:
            ➢m*n个cell
            ➢每个cell. 上生成固定scale和aspect ratio的box
                    ●假设- 个feature Map有mxn个cell,每个cell对应k 个default box,每个default box预测c个类别score和4个offset
                    ●(C+4) *k * m*n个输出

    ●Prior Box Layer        步骤:

            

    ●Prior Box Layer特点:

            ➢shape数量越多,效果越好
            ➢Anchor

            ➢38*38*4 + 19*19*6 + 10*10*6 + 5*5*6 + 3*3*4+1*1*4= 8732个prior box

     ●Prior Box Layer实现 :
            ➢每一个feature map cell 不是k个default box都取
            ➢prior box与GT box做匹配, IOU>阈值为正样本
            ➢训练:确保prior box的分类准确且尽可能回归到GT box

    ●样本构造:
            ➢正样本
                    从GT box出发给找到最匹配的prior box放入候选正样本集
                    从prior box集出发,寻找与GT box;满足lOU> 0.5的最大prior,box放入候选正样本集
            ➢负样本
                    难例挖掘
                    正负样本比: 1:3

                            ●难例挖掘流程

     ●数据增强:
            ➢随机采样多个path,与物体之间最小的jaccard overlap为: 0.1,0.3, 0.5, 0.7与0.9
            ➢采样的patch比例是[0.3, 1.0], aspect ratio在0.5或2
            ➢GT box中心在采样patch中且面积大于0
            ➢Resize到固定大小
            ➢以0.5 的概率随机的水平翻转

    ●损失函数:
            ➢分类loss +回归loss
            ➢分类loss: Softmax Loss
            ➢回归loss: Smooth L1 Loss

    L\left ( x,c,lg \right )=\frac{1}{N}\left ( L_{conf}\left ( x,y \right )+\alpha L_{loc}\left ( x,l,g \right ) \right )

    SSD系列网络结构

    SSD系列算法损失函数计算
    基本思路:
            让每一个prior box回归到GT box,这个过程的调控我们需要损失层的帮助,它会计算真实值和预测值之间的误差,从而指导学习的走向

    ●使用细节:
            ➢数据增强时,Crop采样大小
            ➢多任务网络的权重
            ➢正负样本比例
            ➢难例挖掘方式默认只取64个最高predictions loss来从中寻找负样本

    SSD系列算法性能比较分析

    在PASCAL VOC2007 数据集对比结果:

    Table 1: PASCAL VOC2007 test detection results. Both Fast and Faster R-CNN

    use input images whose minimum dimension is 600. The two SSD models have exactly the same settings except that they have different input sizes (300 X 300 vs.500 X 500).It is obvious that larger input size leads to better results.

    在PASCAL VOC2012数据集上的对比结果:

     在MS COCO数据集上的对比结果:

      

              对SSD算法而言其整体的FPS 相对YOLO来说,有所降低,速度有所损失;相比与Fast R-CNN而言SSD算法有了一个性能上的提升,mAP值也有所提升。

        ●数据增强对于结果的提升非常明显
            ●使用更多的feature maps对结果提升更大
            ●使用更多的default boxes,结果也越好
            ●Atrous 使得SSD又好又快

            如果输入图像的尺寸越大对应SSD算法性能也会有一个比较大的提升,而输入图像的尺寸增大也意味着处理速度地下降。 

    SSD系列算法效果

    二、SSD系列算法优化及扩展

    2.1 优化算法一——DSSD

     ●DSSD:
            ➢201 7年的CVPR,WeiLiu
            ➢SSD算法对小 目标不够鲁棒的最主要的原因是浅层feature map的表征能力不够强。
                    加入上下文信息
                    更好的基础网络(ResNet) 和Deconvolution层, skip连接来给浅层feature map更好的表征能力

    DSSD改进点:
            ➢主干网络:ResNet
            ➢Deconv

            使用RestNet作为主干网络,针对后续的prior box的输入会分别使用反卷积来获取更多的特征表示,再进行回归后会得到更加鲁棒的特征。

     DSSD VS SSD:

    ●DSOD总结:
            ➢2017年的ICCV201 7
            ➢DSOD可以从0开始训练数据, 不需要预训练模型,而且效果可以和fine-tune的模型媲美
            ➢SSD+ DenseNet= DSOD
                    可以从零开始训练得到一个好的目标检测网络吗?
                    如果可以,设计这样的网络有没有什么原则可以遵守?

    预训练模型优点:
            开源模型多,可以直接将他们用于目标检测
            可以快速得到最终的模型,需要的训练数据也相对较少

    预训练模型缺点:
            预训练模型大,参数太多,模型结构灵活性差,难以改变网络结构,计算量也大,限制其应用场合
            分类和检测任务的损失函数和类别分布是不一-样的,优化空间存在差异
            尽管微调可以减少不同目标类别分布的差异性,但是差异太大时,微调效果依然不理想

    ●DSOD设计原则:
            ➢基于候选区域提取的方法无法从零开始训练,不收敛,只有proposal-free方法可以从零开始训练并收敛(ROI Pooling)
            ➢DenseNet中更多的skip connections实现supervised signals传递.
            ➢增加dense blocks数量区别原先的固定数量
            ➢Stem Block优化(3个3x 3卷积层和1个2x2最大池化层)
            ➢6个尺度特征图进行目标检测,再融合(如何利用特征图)

    DSOD网络结构: 

    2.2 优化算法二——FSSD

    ●FSSD设计原则:
            ➢借鉴了FPN的思想,重构了- -组pyramid feature map,使得算法的精度有了明显的提升,速度也没有太降
                    把网络中某些feature调整为同一-szie再contact,得到一-个像素层,以此层为base layer来生成pyramid feature map
                      Feature Fusion Module

    FSSD网络结构:

    SSD:

    FSDD:

     FSSD实验结果对比:

     2.3 优化算法三——RSSD

    ●RSSD设计原则:
            ➢rainbow concatenation方式(pooling加deconvolution) 融合不同层的特征,在增加不同层之间feature map关系的同时也增加了不同层的feature map个数。
            ➢这种融合方式不仅解决了传统SSD算法存在的重复框问题,同时一定程度上解决了'small object的检测问题。

    RSSD网络结构:

     RSSD实验效果:        Pooling、deconvolution

     SSD系列算法应用场景

            ●人脸检测与识别任务
            ●ADAS场景目标检测与识别(车、行人、非机动车)
            ●通用物体检测与识别
            ●自然场景下文本检测与识别等等

  • 相关阅读:
    【微信公众号开发】1.3 编辑模式之自动回复
    R语言使用glm函数构建逻辑回归模型(logistic)、使用subgroupAnalysis函数进行亚组分析并可视化森林图
    JAVA 从入门到起飞 面向对象 day08 P2
    【http协议】Content-Type 超详细介绍
    python基于django的网上商品拍卖系统 毕业设计
    H3C 防火墙策略
    解决redis从服务器未配置主服务器密码导致数据未同步&磁盘爆满问题
    【RocketMQ】sendDefaultImpl call timeout 问题及其解决办法
    MyBatis处理CLOB/BLOB类型数据,解决读取问题
    【沐风老师】3DMAX路径拖尾光线刀光效果插件GhostTrails教程
  • 原文地址:https://blog.csdn.net/qingxiao__123456789/article/details/125459505