SSD目标检测算法改进DSSD(反卷积)

article/2025/8/22 22:51:40

论文:DSSD : Deconvolutional Single Shot Detector


论文地址:https://arxiv.org/abs/1701.06659

代码:https://github.com/chengyangfu/caffe/tree/dssd

DSSD是2017年的CVPR,二作就是SSD的一作Wei Liu。另外值得一提的是,一作Cheng Yang Fu和Wei Liu大神已经合作发表

好几篇文章。

SSD的作者们对其做的改进肯定会有些方向性,毕竟他们可是深知SSD的优点和缺点啊!

个人的一些见解:

 对state of the art的算法进行改进的时候最主要的是找准方向。
大家最常用的思路就是找缺点,比如ssd算法一个比较大的缺点是对小目标不够鲁棒。
 但是这种缺点在目前基于CNN的目标检测算法都很常见。无非是有些算法相对好一些而已。
那么,知道了缺点了,如何去改进呐?改进的方法是不是具有普遍性?能不能扩展这种改进方法?

 如果能回答了以上这些问题的改进方法,是具有方向性的,就是在此基础上,再做一些工作就可以更进一步的去改进算法。

或者这类改进算法并不是只适应一种算法,比如Faster RCNN中的RPN网络和Anchor 的思想,SPPNet中的SPP layer等等,

这些改进同样适应其他算法,Fast RCNN使用了SPP layer,改进成为了ROI Pooling。


DSSD的贡献:


 本文最大的贡献,在常用的目标检测算法中加入上下文信息。通俗点理解就是,基于CNN的目标检测算法基本都是利用一层的

信息(feature map), 比如YOLO,Faster RCNN等。还有利用多层的feature map 来进行预测的,比如ssd算法。那么各层之间的信息的结合并没有 充分的利用。

DSSD算法就是为了解决这个问题的。

DSSD算法的由来:


 既然是SSD算法的改进算法,我们先看看SSD算法的一些缺点。

SSD算法的缺点众所周知了,就是对小目标不够鲁棒。我们先分析一下为什么会对小目标不够鲁棒的。

 先回忆一下YOLO算法,把检测的图片划分成14*14的格子,在每一个格子中都会提取出目标检测框,最初的时候每一个格子

只会提取出一个目标框,这时问题就很大,因为可能会有两个目标落入一个格子中,那么就会出现漏检。

顺理成章的是,在一个格子中提取出多个检测框来匹配目标,这时我们可以使用Anchor的思路,一个格子中加上6到9个不同的

检测框。 这样就可以匹配大部分目标了。这也算解决了漏检问题了。

 但是还是会有问题的,比如我们的9个Anchor比较大的话,比较小的目标就又无法匹配到了。那怎么解决呐?

SSD的思路就是我可以在更潜的一些层(feature map)上,来更好的匹配小目标。换句话说就是把图片分成的格子更小了,

一张图片分成的格子的数目变多了。那么这样再在这些格子中使用Anchor ,这样漏检的概率就会大大减小了。

所以SSD的mAP比YOLO提高了不少。

但是!


在浅层提取的feature map表征能力不够强,也就是浅层的feature map中每个格子也可以判断这个格子中包含的是哪一个

类,但是不够那么确定!

 可能会出现混淆。就是框是标对了,但是分类有可能出错,或者置信度不够高,不确定框里面的东西是什么?(有可能是分错

类,也有可能是背景误认为成目标)。

这样同样会出现误检和漏检。这种情况对于小目标出现的概率更高。所以SSD算法对小目标还是不够鲁棒。

那怎么办?

DSSD的网络结构:



 经过以上的分析我们知道,SSD算法对小目标不够鲁棒的最主要的原因是浅层feature map的表征能力不够强。

DSSD就使用了更好的基础网络(ResNet)和Deconvolution层,skip连接来给浅层feature map更好的表征能力。

这也是DSSD算法的核心思想。

具体怎么做?

 既然DSSD算法的核心思想就是提高浅层的表征能力,首先想到的肯定是将基础网络由VGG换成ResNet,

更深的网络表征能力就更强这基本成为了大家的共识了。


上表说明了在VGG和ResNet上哪些层作为最后的预测feature layer。如果不明白这张表的话,再仔细看一下SSD的网络结构图

就知道怎么回事了。

 另外值得一提的是,这些层可不是随便选的,大致要和VGG对应,且感受野也要对应,这样才能保证效果会提高,要不然反而会

变差也不好说。

看看加上ResNet的SSD的效果。


实验结果很明显,图片大小不够的时候,ResNet的SSD和VGG的SSD效果其实相当,整体甚至还会稍微差一些。

(这里作者没有分析,我对这块也是不明白,为什么呐?欢迎讨论)。

到了512*512的尺度上时,ResNet的下过就明显要好了。尤其是标粗的小目标(bird)。

 这也印证了之前的分析,浅层更具有表征能力时,对小目标效果就会更好。

基于ResNet的实验,还没有完,在预测阶段作者同样做了一些工作就是修改一下预测模块。这个灵感作者说是来自MS-CNN指

出改善每个任务的分支网络同样可以提高准确率

作者使用了四种不同的预测模块。如下图:

Prediction Module :


这四个不同的预测模块就不细讲了,其实就是将ResNet进行到底,预测阶段同样是用这个思路。

效果确实得到了提高,如下表:
                                    

基于ResNet的实验基本做完了,下面就看这篇文章的最重要的点,Deconvolution模块的使用。

Deconvolution Module:

在第一张图片中的这个小圆就是代表了 Deconvolution Module 。它的结构如下图所示:

被红色框部分圈住的可以有两种连接方式,Eltw Product其实就是矩阵的点积,还有sum的形式就是求和。
在caffe中的可以用下面的prototxt文件来描述。

  1. layer {  
  2.   name: "fuse"  
  3.   type: "Eltwise"  
  4.   bottom: "A"  
  5.   bottom: "B"  
  6.   top: "C"  
  7.   eltwise_param {  
  8.     operation: SUM  
  9.   }  
  10. }  
operation参数表明使用哪种操作,SUM是默认操作,就是将A和B相加减。PROD表示点积,MAX求最大值。

如上表,结果是使用prod的效果会更好一点。

将ResNet,Deconvolution Module,Prediction Module结合在一起就是最终的DSSD算法了。

所有新的网络的提出,如果没有讲是如何训练的,我觉得都是在耍流氓。

训练部分作者基本沿用SSD的训练方法。

当然,ResNet要比VGG的收敛速度要快很多。

总结:提高浅层的表征能力,是可以提高类似检测器对小目标的检测能力。按照这个方向走是正确的。
参考:
DSSD:https://arxiv.org/abs/1701.06659
caffe中一些特殊的层:http://blog.csdn.net/u013989576/article/details/73294131
SSD
MS-CNN:



http://chatgpt.dhexx.cn/article/pE8kAiTI.shtml

相关文章

SSD、DSSD算法详解

SSD(Single Shot MultiBox Detector) 特点:多尺度特征图用于检测;采用了先验框,,SDD backbone采用VGG-16 SSD和YOLO一样都是采用一个CNN网络进行检测,但是采用了多尺度的特征图,如下图所示: 采用多尺度特征图用于检测 采用步长stride=2的卷积或者pool来降低特征图…

sds

双向链表(adlist.h/adlist.c) 链表(list)是Redis中最基本的数据结构,由adlist.h和adlist.c定义。 数据结构 typedef struct listNode {//指向前一个节点struct listNode *prev;//指向后一个节点struct listNode *next;//值void *value; } listNode;listNode是最基本的结构,表示…

xSSD: DSSD,FSSD,ESSD,MDSSD,fireSSD

1 DSSD title :DSSD : Deconvolutional Single Shot Detector conf & anthor: arXiv, Cheng-Yang Fu arXiv:https://arxiv.org/abs/1701.06659 intro:Deconvolutional 主要内容: DSSD使用ResNet-101代替VGG作为主干网络,在‘SSD layers‘后面添加了…

redis SDS介绍

Redis面试中经常被问到,Redis效率为什么这么快,很多同学往往回答: ① Redis基于内存操作② Redis是单线程的,采用了IO多路复用技术③ Redis未使用C语言字符串,使用了SDS字符串然而,很少有人能说清楚SDS字符…

DSSD: Deconvolutional Single Shot Detector 论文笔记

论文地址:DSSD : Deconvolutional Single Shot Detector 项目地址:Github 概述 这篇论文应该算是SSD: Single Shot MultiBox Detector的第一个改进分支,作者是Cheng-Yang Fu, 我们熟知的Wei Liu大神在这里面是第二作者&#xf…

DSSD(Deconvolutional Single Shot Detector)算法理解

论文地址:https://arxiv.org/abs/1701.06659 Github 源码(caffe版):https://github.com/chengyangfu/caffe/tree/dssd 1、文章概述 DSSD(Deconvolutional Single Shot Detector)是SSD算法改进分支中最为著名的一个,SS…

DSSD : Deconvolutional Single Shot Detector

参考 DSSD : Deconvolutional Single Shot Detector - 云社区 - 腾讯云 目录 一、简介 二、相关工作 三、反卷积的单阶段检测器DSSD 3.1、SSD 3.2、用VGG代替Residual-101 预测模型 反卷积SSD 反卷积模块 训练 四、实验 基本网络 PASCAL VOC 2007 在VOC2007上的消…

DDS 介绍

​DDS,全称 Data Distribution Service (数据分发服务),由对象管理组(OMG)发布和维护,是一个中间件协议和API标准,采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,以保障数…

目标检测系列:SSD系列SSD、FSSD、DSSD、DSOD

SSDDSSDFSSDDSOD SSD 动机 目前目标检测的一些算法包括基于深度学习的,都是先假定一些候选框,接着对候选框内容进行特征提取再分类,然后再对边框的位置进行修正这一系列的计算,最典型的例如Faster RCNN,虽然准确&…

计算机保密dss是啥,什么是DSS?

什么是DSS 上线时间:2020年9月4日 以下引用猪弟写的设计文档: DFS的存款系统: DSS (DFS Saving System) 原名DSR,你也可以把它称作,DFS的银行或DFS的余额宝。 它是专门为DFS量身定做的DFS币本位无风险保障性收入系统。 特征&#…

DDS介绍

DDS(Data Distribution Service) 数据分发服务 什么是DDS 数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。采用分布式发布/订阅体系架构,以中间件的形…

SS, DSDS, DR-DSDS,DSDA 区别与理解

1.首先简单解释一下SS, DSDS, DSDA都是什么意思 SS(single standby):单卡单待 DSDS(Dual SIM Dual Standby) :双卡双待 DSDA(Dual SIM dual active):双卡双通 2.双卡双待/双卡双通主要区别 双待 : 两个卡都处于待机状态&#…

DSSD

目录 1. 概述2. DSSD2.1 overview2.2 Prediction module2.2 Deconvolution Module 论文:DSSD : Deconvolutional Single Shot Detector 来源:CVPR 2017 1. 概述 DSSD是对SSD的改进,虽然SSD直接在多尺度特征上进行预测的做法提升了目标检测的…

目标检测(六):DSSD

SSD 的提出为目标检测领域带来了一大改进,无论是准确性还是速度都要优于先前的检测模型,美中不足的是 SSD 对图像中的小目标不太友好,检测效果一般,可能是因为小目标在高层没有足够的信息。为解决该问题,出现了以下几种…

目标检测算法DSSD的原理详解

论文地址:https://arxiv.org/abs/1701.06659 Github 源码(caffe版):https://github.com/chengyangfu/caffe/tree/dssd 1、文章概述 DSSD(Deconvolutional Single Shot Detector)是SSD算法改进分支中最为著名的一个,SSD…

【每日一网】Day30:DSSD(Deconvolutional Single Shot Detector)简单理解

DSSD:Deconvolutional Single Shot Detector 算法背景 本文的主要贡献在于将上下文索引和残差网络加到了SSD算法中,然后在反卷积层上增加SSD和residual-101,以在目标检测中提高对小目标的准确性。DSSD将SSD的VGG网络用Resnet-101进行了替换…

【压测指南|压力测试核心性能指标及行业标准】

文章目录 压力测试核心性能指标及行业标准指标1:响应时间指标2:吞吐量(TPS)指标3:失败率总结: 压力测试核心性能指标及行业标准 在做压力测试时,新手测试人员常常在看报告时倍感压力:这么多性能…

CSDN做测试的老师教你Jmeter生成压力测试报告

根据各大招聘网站上的需求来看,熟悉Jmeter做性能测试已经几乎成为必要条件了。 那么今天在这个给大家安利一波。 怎么使用Jmeter生成压力测试报告呢? 条件准备: 1、Jmeter3.2(推荐使用,比较稳定) 2、J…

性能压测报告

文章目录 业务接口性能压测报告一、说明二、调优1、slb2、内核3、nginx4、php 三、盘古单节点压测数据四、盘古单代理节点压测数据五、集群压测数据1、每秒2000并发,总计5分钟压测数据2、每秒3000并发,总计5分钟压测数据 六、结论1、说明2、结果3、瓶颈 …

压力测试相关概念与性能指标以及压测实例

压力测试 压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。压测都 是为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。 使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。有两种错误类…