single-shot detection(SSD)目标检测算法详解——(一看就懂系列!!!)
SSD是One-stage系列的优秀算法之一
one-stage的意思是挑选候选框和预测候选框两步是同时完成的,R-CNN家族都是two-stage。
SSD有什么创新点?
(1)基于Faster-RCNN的Anchor,提出了prior anchor(先验框)。
(2)从不同比例的特征图中预测物体(多尺度预测),并明确长宽比分离预测。
SSD的backbone是VGG,这一点和Faster R-CNN是相同的,但是将后面的全连接层(FC)换成卷积层,且直接用卷积层进行预测,多尺度预测+不同宽高比可以较好的满足检测需要,即前面卷积层负责预测小物体,后面卷积层负责预测大物体。(随着神经网络的加深,小物体特征会消失,这也就是为什么要多尺度来检测,这样不管物体的大小是什么样 ,都能得到很好的检测。)
如何设置SSD的anchor?
SSD的anchor和Faster R-CNN的anchor类似,但是Faster R-CNN只在最后一层进行取anchor box,而SSD是在不同特征层中取anchor box。(这一点是保证大小物体都可以被检测到)同时在不同的anchor box中设置不同的宽高比{1,2,3,1/2,1/3}如上图conv4_3,conv7,conv8_2,conv9_2,conv10_2,conv11_2的特征图上的每个单元取4,6,6,6,4,4个default box. 由于以上特征图的大小分别是38x38,19x19,10x10,5x5,3x3,1x1,所以一共得到38x38x4+19x19x6+10x10x6+5x5x6+ 3x3x4+1x1x4=8732个default box.对一张300x300的图片输入网络将会针对这8732个default box预测8732个边界框。
怎么对先验框进行匹配?
SSD在训练的时候只需要输入图像和图像中每个目标对应的ground truth. 先验框与ground truth 的匹配遵循两个原则:
(1)对图片中的每个ground truth, 在先验框中找到与其IOU最大的先验框,则该先验框对应的预测边界框与ground truth 匹配。
(2)对于(1)中每个剩下的没有与任何ground truth匹配到的先验框,找到与其IOU最大的ground truth,若其与该ground truth的IOU值大于某个阈值(一般设为0.5),则该先验框对应的预测边界框与该ground truth匹配。
按照这两个原则进行匹配,匹配到ground truth的先验框对应的预测边界框作为正样本,没有匹配到ground truth的先验框对应的预测边界框作为负样本。尽管一个ground truth可以与多个先验框匹配,但是ground truth的数量相对先验框还是很少,按照上面的原则进行匹配还是会造成负样本远多于正样本的情况。为了使正负样本尽量均衡(一般保证正负样本比例约为1:3),SSD采用hard negative mining, 即对负样本按照其预测背景类的置信度进行降序排列,选取置信度较小的top-k作为训练的负样本。
怎样得到预测的检测结果?
最后分别在所选的特征层上使用3x3卷积核预测不同default boxes所属的类别分数及其预测的边界框location。由于对于每个box需要预测该box属于每个类别的置信度(假设有c类,包括背景,例如20class的数据集合,c=21)和该box对应的预测边界框的location(包含4个值,即该box的中心坐标和宽高),则每个box需要预测c+4个值。所以对于某个所选的特征层,该层的卷积核个数为(c+4)x 该层的default box个数.最后将每个层得到的卷积结果进行拼接。对于得到的每个预测框,取其类别置信度的最大值,若该最大值大于置信度阈值,则最大值所对应的类别即为该预测框的类别,否则过滤掉此框。对于保留的预测框根据它对应的先验框进行解码得到其真实的位置参数(这里还需注意要防止预测框位置超出图片),然后根据所属类别置信度进行降序排列,取top-k个预测框,最后进行NMS,过滤掉重叠度较大的预测框,最后得到检测结果。
SSD优势是速度比较快,整个过程只需要一步,首先在图片不同位置按照不同尺度和宽高比进行密集抽样,然后利用CNN提取特征后直接进行分类与回归,所以速度比较快,但均匀密集采样会造成正负样本不均衡的情况使得训练比较困难,导致模型准确度有所降低。另外,SSD对小目标的检测没有大目标好,因为随着网络的加深,在高层特征图中小目标的信息丢失掉了,适当增大输入图片的尺寸可以提升小目标的检测效果。
single-shot detection(SSD)目标检测算法详解——(一看就懂系列!!!)相关推荐
- 【百度飞浆】YOLO系列目标检测算法详解
YOLO系列目标检测算法详解 1 YOLO发展史 2 YOLO v3目标检测原理 3 PaddleDetection中YOLO v3模型介绍 4 YOLO v3配置演练 1 YOLO发展史 2 YOL ...
- 【百度飞浆】RCNN系列目标检测算法详解
RCNN系列目标检测算法详解 目录 两阶段目标检测算法发展历程 R-CNN R-CNN网络结构 R-CNN网络效果 Fast R-CNN Fast R-CNN网络效果 Faster R-CNN Fas ...
- YOLOv1——YOLOX系列及FCOS目标检测算法详解
文章目录 一. 开山之作:YOLOv1 1.1. YOLOv1简介 1.2 YOLOv1 检测原理 1.3 YOLOv1网络结构 1.4 YOLOv1 损失函数 1.5 YOLOv1优缺点 二. YO ...
- YOLO系列目标检测算法详解
目录 前言 YOLO发展历程 目标检测 YOLO开山之作 ---- YOLO(v1) YOLOv2 YOLOv3 PaddleDetection中YOLOv3模型介绍 总结 前言 YOLO发展历程 F ...
- SSD目标检测 原理详解
一 SSD具有如下主要特点: 从YOLO中继承了将detection转化为regression的思路,一次完成目标定位与分类 基于Faster RCNN中的Anchor,提出了相似的Prior box ...
- A*算法详解一看就懂(python)
定义 A*算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法.算法中的距离估算值与实际值越接近,最终搜索速度越快. 定义解析 A*算法是一个 ...
- SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)
承接上一篇SSD介绍:SSD+caffe︱Single Shot MultiBox Detector 目标检测(一) 如果自己要训练SSD模型呢,关键的就是LMDB格式生成,从官方教程weiliu89 ...
- 基于Grad-CAM与KL损失的SSD目标检测算法
基于Grad-CAM与KL损失的SSD目标检测算法 人工智能技术与咨询 来源:<电子学报>,作者侯庆山等 摘 要: 鉴于Single Shot Multibox Detector (SSD ...
- 基于神经网络的目标检测论文之目标检测方法:改进的SSD目标检测算法
4.2 改进的SSD 上一章我们了解到,物体识别检测算法是在传统CNN算法基础上加上目标区域建议策略和边框回归算法得到的.前辈们的工作主要体现在目标区域建议的改进策略上,从最开始的穷举建议框,到划分图 ...
最新文章
- ECMAScript Query实例
- 自己去年用intraweb写的模仿动网论坛的原程序,用的是动网论坛的数据库
- Mac Eclipse安装lombok
- ssm使用全注解实现增删改查案例——DeptMapperImpl
- loadrunner监控linux性能指标,使用LoadRunner监控Linux系统性能.doc
- Java CharArrayWriter size()方法与示例
- linux 树型显示文件 tree ls tree 命令
- js获取当前时间戳,仿PHP函数模式
- shell提取文件中的dojo mobile类
- sklearn-python简介
- oauth样例项目【01】之 使用auth-code进行认证授权
- MySQL:零基础学数据库要看哪些书?从入门到精通全书籍推荐!
- 3D打印经验分享导航
- python爬虫遇到动态加密怎么办?爬取某点评网站内容
- C语言判断一个数是奇数还是偶数
- centos php安装 pecl,pecl是什么?如何在centos下安装pecl?
- [跟练]基于七普修正Worldpop人口栅格数据(附2020年worldpop100m人口栅格)
- 【001】基于JavaFX实现的电子图片管理系统
- NCTF 南京邮电大学网络攻防训练平台 WriteUp
- \t\t北京社保卡 问题汇总 参保人 结算问题