目标检测:SSD系列

SSD:Single Shot MultiBox Detector
DSSD: Deconvolutional Single Shot Detector
FSSD:Feature Fusion Single Shot Multibox Detector
RefineDet: Single-Shot Refinement Neural Network for Object Detection
RfbNet:Receptive Field Block Net for Accurate and Fast Object Detection
M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network

Pelee:Pelee: A Real-Time Object Detection System on Mobile Devices

序:SSD系列属于one_stage基于回归的目标检测方法。多尺度特征开创者。

SSD(2016):

  1. 主要创新点
    利用多尺度特征图进行目标检测
  2. 效果
    74.3mAP、59FPS ( on VOC2007 test )
  3. 网络结构


如图所示,SSD的backbone采用VGG-16,将VGG-16的两个全连接层FC6和FC7换成conv6和con7。

  • 特征层选取:选取VGG-16的conv4_3层和后面的conv7、conv8_2、conv9_2、conv10_2和conv11_2作为特征层进行目标检测,针对inputs为300*300的图像对应这六个尺度分别为scale=[38,19,10,5,3,1]。

  • 先验框选择:对所选特征层的每个像素生成多个anchor box(prior box/default box),先验框长宽比例为h/w=[1,2,1/2,3,1/3]以及宽高比例为1对应两个尺寸,针对此网络中,对应所选六个特征层每个像素对应特征框数为[4,6,6,6,4,4],先验框数量为4时对应比例为[1,2,1/2],不同特征层对应不同scale_ratio。
    最终得到先验框数为:
    8732=38∗38∗4+19∗19∗6+10∗10∗6+5∗5∗6+3∗3∗4+1∗1∗48732=38*38*4+19*19*6+10*10*6+5*5*6+3*3*4+1*1*48732=38∗38∗4+19∗19∗6+10∗10∗6+5∗5∗6+3∗3∗4+1∗1∗4
    每个先验框得到(num_class+1)+4个参数,物体类别数+1个背景类+4个位置参数

  • 先验框尺寸:
    不同特征层对应先验框尺寸不同,相对于原图像尺寸,smin=0.2,smax=0.9,conv4_2层尺寸单独计算,其他尺寸计算如下,m为选取的特征层数:
    sk=smin+smax−sminm−1(k−1),k∈[1,m]s_k=s_{min}+\frac{s_{max}-s_{min}}{m-1}(k-1),k\in{[1,m]}sk​=smin​+m−1smax​−smin​​(k−1),k∈[1,m]
    每层的anchor box宽高比例为1的另一个特殊尺寸为:smin×smax\sqrt{s_{min}\times{s_{max}}}smin​×smax​​

  • ground_truth:将每个先验框与label框进行IOU,选择最大的IOU类别作为anchor box的类别,当最大IOU小于规定的IOU_threshold时则anchor box标定为背景。得到最终的ground_truth。

  • 样本不均衡问题:
    ground_truth中大部分都是背景,属于负例negative sample。样本极度不均衡,这里采用难例挖掘并将正负样例比例控制在1:3。

  • 损失函数:
    类别损失:使用softmax函数,采用8732个anchor中被选取的部分做损失
    loc损失:采用8732个anchor中包含目标的正例做回归损失。采用smooth_l1函数。

心得:

  • 全部采用卷积层,因此允许输入不同尺寸图片,但不要低于300,影响检测精度,图片尺寸不同导致最终anchor box数量不同。
  • VGG-16作为backbone,现在可以选择其他如Resnet101,Densenet等网络增加识别精度。
  • 多尺寸特征可以关注到多尺寸目标,但多尺寸分布在网络结构的不同层数,语义程度不同。浅层网络包含语义信息少,导致对小目标检测不是很准,另一个方面,最大特征图尺寸为38,相较原图300,已经缩小了近8倍,所以8个像素大的目标还是无法分辨。
  • 神游:
    目标检测是建立在目标识别的基础上,目标的特征跟目标的位置无关,但在图像中,anchor不同得到的目标置信度不同,可以根据此对各anchor间得到的位置参数一个数学关系,得到最终的目标位置。否则,训练好网络是如何对输入图片得到其目标位置的呢,只有推理过程没有反馈。
    神经网络以结果为导向,设计网络,并训练使之完成任务,而如何根据实际问题设计一个合适的网络(包括精度和速度两个方面)这很重要。
    基础网络中,VGG,MobileNet都是改变了卷积方式,减少计算量和参数量。而NIN和inception系列是从不同尺寸来获取多层信息。Resnet和Densenet又是从长时记忆和短时记忆的角度进行改进,信息长时间的传递会导致信息扭曲等问题,但不用记忆所有内容只需要记忆内容间的不同,就大大减轻了负担。
    早期机器学习中使用的是人工提取的特征,即人工给出具有现实意义的特征,如边缘,面积,形状等。图像只是一堆像素组成的,所利用的只有像素值(空间相关如三维可以利用相机内外参数),专家们提出,灰度直方图,傅立叶变换,小波理论等,后期,又根据像素及其周围之间的关系得到SIFT算子,为方便使用进一步得到SURF算子等,基于梯度的直方图统计出来的,SIFT算子有128维,足以表达所有特征,只是需要计算每个像素的SIFT耗费太大,而且太精细不足以表达整体,或者太注重细节。
    网络实际构建和训练及最终使用,充分利用矩阵计算,注意数据类型。了解硬件也是任务之一。

DSSD(2017):

在SSD基础上进行了以下几点改进:

  • 使用Resnet101和VGG-16作为backbone,分别实验,相比较而言VGG_16 层数不足,语义信息不足。
  • 借鉴FPN,使用特征融合,深层特征利用反卷积进行上采样与浅层特征融合,加强浅层网络的语义信息,提高小目标检测准确性。
  • 训练时使用多个预测分支,类似于inception系列,提升浅层网络的表达能力。
  • 借鉴YOLOv2在anchor box比例的选取,聚类分析样本目标框的长款比例,在原来的[1,2,1/2,3,1/3]基础上增加了1.6。
  • 分开训练,三个阶段训练。

网络结构

效果

小目标检测能力加强,但是速度不及SSD。

心得

  • resnet101和特征融合提高小目标的检测能力,浅层网络的细节融合深层网络的语义信息。

FSSD(2017):

在SSD基础上做了以下改进:

  • 使用特征融合。一次性融合后再生成不同尺度的特征图。

效果

提升小目标检测能力,减少同一物体的部位重复检测

RefineDet(2018):

结合了two_stage的region proposal和feature merge
主要包含三个部分:anchor refinement module (ARM) 、object detection module (ODM)、transfer connection block (TCB)。

结合了SSD、FPN和RPN技术,保持one_stage效率的情况下,提高了精度。
先通过ARM部分得到anhor并进行尺寸和位置的微调,并判断出前景,作用跟RPN类似。经过TCB,在TCB完成特征融合,再传送给ODM进一步检测和分类。

RfbNet(2018):

解决的问题:
使用轻量级网络作为backbone,结合Rfb提取高表达性特征,提高目标检测精度,并保持较高的效率。
之前的DSSD,RentinaNet使用Resnet101作为backbone,精度提升了但是效率降低了。

图像检测:SSD系列相关推荐

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

    一.SSD系列算法原理介绍 1.1 SSD算法介绍: ➢Single Shot MultiBox Detector (one-stage方法)                  ●Wei Liu在EC ...

  2. JavaCV进阶opencv图像检测识别:摄像头图像人脸检测

    JavaCV免费教程目录: JavaCV入门教程(免费JavaCV教程) javacv实战专栏目录(2016年更新至今): JavaCV实战专栏文章目录(2016年更新至今) 2022年最新JavaC ...

  3. JavaCV进阶opencv图像检测识别:ffmpeg视频图像画面人脸检测

    JavaCV免费教程目录: JavaCV入门教程(免费JavaCV教程) javacv实战专栏目录(2016年更新至今): JavaCV实战专栏文章目录(2016年更新至今) 2022年最新JavaC ...

  4. 目标检测方法系列:R-CNN, SPP, Fast R-CNN, Faster R-CNN, YOLO, SSD

    本文转载自: http://www.cnblogs.com/lillylin/p/6207119.html 目标检测方法系列--R-CNN, SPP, Fast R-CNN, Faster R-CNN ...

  5. 深度学习:图像检测概述rcnn, fastrcnn, fasterrcnn,yolo,ssd

    RCNN,Fast RCNN ,faster Rcnn :https://www.cnblogs.com/dudumiaomiao/p/6560841.html 一文看懂目标检测 rcnn fast ...

  6. 计算机视觉目标检测算法总结4——其他SSD系列算法

    RSSD算法 rainbow concatenation方式(pooling加deconvolution)融合不同层的特征,在增加不同层之间feature map关系的同时也增加了不同层的featur ...

  7. 图像检测系列之(12)异常检测(13)拼接伪造(14)deepfake | ICCV2021生成对抗GAN汇总梳理...

    (1)GAN改进系列 | 最新ICCV2021生成对抗网络GAN论文梳理汇总 图像编辑系列之(2)基于StyleGAN(3)GAN逆映射(4)人脸 (5)语义生成 | ICCV2021生成对抗GAN梳 ...

  8. YOLO系列代码解读(图像检测)

    1.YOLO v1 yolo v1源码解析 - 筱 - CSDN博客  https://blog.csdn.net/baidu_27643275/article/details/82794559 [D ...

  9. anchor free 目标检测_《目标检测》系列之二:目标检测中的Anchor机制回顾

    前段时间,YOLOv4&v5大火,很多人忽视了yolov5在anchor上的一些细节变化,因此,本文从Faster RCNN着手,逐步分析SSD.YOLOv4&v5的anchor机制. ...

最新文章

  1. 【Smart_Point】C/C++ 中共享指针 shared_ptr
  2. C#Winform+WindowsAPI做个剪贴板无缝自动保存器(视频截图利器)
  3. 4月13日学习笔记——jQuery动画
  4. 传统的线性降维方法效果不佳。_高压断路器机械故障诊断与定位的新思路:KPCA-SoftMax诊断方法...
  5. java1002java,疯狂java学习笔记1002---抽象类及接口
  6. aspose.cells html excel导出,C#使用Aspose.Cells导出Excel简单实现
  7. Python 为啥不建议使用 thread模块?
  8. OpenGL之矩阵变换的原理分析与数学推导
  9. wemosD1_WIFI模块 与 arduino
  10. jvm需要多长时间才能进行转义分析? 可能比您想象的要长。
  11. web开发软件,HTML如何添加锚点,成功入职阿里
  12. tableau示例超市数据在哪儿_Tableau | 超市销售数据可视化分析
  13. php获取客户端的真实IP的方法
  14. SugarNMS 工业交换机网管软件
  15. 如何减小电压跟随器输出电阻_河南安全型耦合器生产厂家-作用_华锐矿机
  16. 矩形波导中TE波和TM波的截止波数截止波长和截止频率
  17. 纽约客:变态连环杀手正在被算法迅速围剿
  18. 秋招选择题(二)图形推理题
  19. 【Java源码解析】如何严谨地重写 equals 方法、getClass 方法与 instanceof 关键词用法比较
  20. Python 解决execjs._exceptions.ProgramError: ReferenceError: document is not defined报错问题

热门文章

  1. 表单html中加减数字按钮,纯CSS实现数字加减按钮的最佳方案
  2. linux下使用百度云以及酷我音乐
  3. vue打包时semver.js版本报错
  4. Hive Sql 大全(hive函数,hive表)
  5. 【瑞模网】3dmax如何贴图
  6. 嵌入式软件工程师养成记-基本功能篇之c语言编程规范
  7. 探索银行的的IT架构
  8. 抖音小程序分享 onShareAppMessage 例子
  9. Android 关于8.0的Service问题(Not allowed to start service Intent)
  10. C0-COBOL 概述