ssd网络结构_SSD的理解

ssd网络结构_SSD的理解前段时间一直在看 ssd 但是总是不太明白 今天突然明白了 就记录下自己的理解先看下 ssd 的网络结构如下 由于不想画这个结构 就盗了别人的图 非常感谢此作者 SSD 采用 VGG16 作为基础模型 然后在 VGG16 的基础上新增了卷积层来获得更多的特征图以用于检测 可以明显看到 SSD 利用了多尺度的特征图做检测 模型的输入图片大小是 300×300 还可以是 512×512 其与前者网络结构没有差别 只是最后新增

前段时间一直在看ssd,但是总是不太明白,今天突然明白了,就记录下自己的理解

先看下ssd的网络结构如下:

0756c8a54345a4007893a338a596abc4.png

由于不想画这个结构,就盗了别人的图,非常感谢此作者。

SSD采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征图以用于检测。可以明显看到SSD利用了多尺度的特征图做检测。模型的输入图片大小是300×300(还可以是512×512,其与前者网络结构没有差别,只是最后新增一个卷积层)。

采用VGG16做基础模型,首先VGG16是在ILSVRC CLS-LOC数据集预训练。然后借鉴了DeepLab-LargeFOV,分别将VGG16的全连接层fc6和fc7转换成3×3卷积层conv6和1×1卷积层conv7,同时将池化层pool5由原来的stride=2的2×2变成stride=1的3×3,为了配合这种变化,采用了一种Atrous Algorithm,其实就是conv6采用扩展卷积或带孔卷积(Dilation Conv),其在不增加参数与模型复杂度的条件下指数级扩大卷积的视野,其使用扩张率(dilation rate)参数,来表示扩张的大小,如下图所示,(a)是普通的3×3卷积,其视野就是3×3,(b)是扩张率为2,此时视野变成7×7,(c)扩张率为4时,视野扩大为15×15,但是视野的特征更稀疏了。Conv6采用3×3大小但dilation rate=6的扩张卷积

488dd410c81f2b3f21d35729ce9f824b.png

然后移除dropout层和fc8层,并新增一系列卷积层,在检测数据集上做finetuing。

其中VGG16中的Conv43层将作为用于检测的第一个特征图。conv43层特征图大小是38×38,但是该层比较靠前,其norm较大,所以在后面增加了一个L2 Normalization,以保证和后面的检测层差异不是很大,这个和Batch Normalization层不太一样,其仅仅是对每个像素点在channle维度做归一化,而Batch Normalization层是在[batch_size, width, height]三个维度上做归一化。归一化后一般设置一个可训练的放缩变量gamma。

anchor的设置

我觉得anchor的设置是一个难点,之前一直在这不是太明白,下面我就详细记录下。

SSD会为不同size的feature map设置不同大小和数目的anchor。在SSD300中,共有6个feature map,每层对应的anchor数分别为4, 6, 6,6, 4, 4。先验框的设置,包括尺度(或者说大小)和长宽比两个方面。对于先验框的尺度,其遵守一个线性递增规则:随着特征图大小降低,先验框尺度线性增加:

8eba1f90c0cddb4082b3a85523002fb5.png

其中m指的特征图的个数,但却是5,因为第一层(Conv43层)是单独设置的, 表示先验框大小相对于图片的比例,而 和 表示比例的最小值与最大值。paper里面取0.2和0.9。对于第一个特征图,其先验框的尺度比例一般设置为 /2 = 0.1,那么尺度为300×0.1 = 30。每层的feature map都有两个参数min_size和max_size,分别代表该层上anchor的最小scale和最大scale,注意这里的scale是先验框的实际尺度,不再是比例。第k层的min_size为

ssd网络结构_SSD的理解 ,第k层的maxsize为 。还有一点需要注意,就是公式中的 计算的值向下取值,即0.17。这样可以得到每个特征图上的anchor的min_size为30,60,111,162,213,264。对于长宽比,一般选取
ssd网络结构_SSD的理解
ssd网络结构_SSD的理解 {1,2,3,
ssd网络结构_SSD的理解
ssd网络结构_SSD的理解 },对于特定的长宽比,按如下公式计算先验框的宽度和高度(这里的
ssd网络结构_SSD的理解 也是指的的先验框的实际尺度,不再是比例)

641164222ba06e5bad9e4a798210d9b6.png

默认情况下,每个特征图会有一个

ssd网络结构_SSD的理解 =1且尺度为
ssd网络结构_SSD的理解 的先验框,除此之外,还会设置一个尺度为
ssd网络结构_SSD的理解 =
ssd网络结构_SSD的理解
ssd网络结构_SSD的理解 =1的先验框,这样每个特征图都设置了两个长宽比为1但大小不同的正方形先验框。注意最后一个特征图需要参考一个虚拟
ssd网络结构_SSD的理解 =300×105/100 = 315来计算
ssd网络结构_SSD的理解 。每个点长方形的anchor的个数,由每层anchor的数目决定。每个特征图一共有
ssd网络结构_SSD的理解个先验框
ssd网络结构_SSD的理解,但是在实现时,Conv4_3,Conv10_2和Conv11_2层仅使用4个先验框,它们不使用长宽比为
ssd网络结构_SSD的理解的先验框每个单元的先验框的中心点分布在各个单元的中心,即
ssd网络结构_SSD的理解,其中
ssd网络结构_SSD的理解为特征图的大小。计算好anchor的位置之后,我们还需要判断anchor是否超出图片的边缘,对于超出图片边缘的anchor,我们需要进行clip,如下图所示:

6633c9c4a901008c55e573a364548d9b.png

目前先记录到这里

参考链接:

小小将:目标检测|SSD原理与实现​zhuanlan.zhihu.com

77250cd53a5a05bbb77f2417931b6931.png

Jacqueline:【目标检测】SSD​zhuanlan.zhihu.com

ssd网络结构_SSD的理解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211931.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:15
下一篇 2026年3月18日 下午9:15


相关推荐

  • springboot 事务配置

    springboot 事务配置1、全局配置@EnableTransactionManagement@Aspect@ConfigurationpublicclassGlobalTransactionConfig{//写事务的超时时间为10秒privatestaticfinalintTX_METHOD_TIMEOUT=10;//restful包下所有service包或者service的子包的任意类的任意方法privatestaticfinalStringAOP

    2022年5月17日
    57
  • Spring源代码由浅入深系列五 GetBean

    Spring源代码由浅入深系列五 GetBean

    2022年1月30日
    43
  • IDEA打包jar包详尽流程

    IDEA打包jar包详尽流程打包流程1.打开菜单栏File-ProjectStructure2.点击Artifacts3.点击”+”-JAR-Frommodulewithdepenencies4.后弹出如下界面,自此开始,各种问题就来了首先Module中,我SocketDemo的Module含有SocketDemo、SocketDe…

    2022年6月30日
    88
  • Glance介绍

    Glance介绍一 Glance 服务介绍在传统 IT 环境下 安装一个系统是 要么从安装 CD 从头安装 要么用 Ghost 等克隆工具恢复 这两种方式有如下几个问题 1 如果要安装的系统多了效率就很低 2 时间长 工作量大 3 安装完成还要进行手动配置 比如安装其他的软件 设置 IP 等 4 备份和恢复系统不灵活二关于 Image1 云环境下需要更高效的解决方案 这就是 Image Image 是一个模板 里面包含了基本的操作系统和其他软

    2026年3月19日
    2
  • 单例模式的要点(写出一个单例模式)

    目录一、单例模式的定义和应用场景(一)定义及基本要点(二)应用场景二、饿汉式单例模式(一)基本代码展示分析(二)基本分析和建议三、懒汉式单例模式(双重检查锁)(一)基本代码展示分析(二)基本分析和建议四、静态内部类实现单例模式(一)基本代码展示分析(二)基本分析和建议五、注册式单例模式(一)枚举式单例模式代码及分析:(EffectiveJa…

    2022年4月18日
    133
  • 空格的正则表达式

    空格的正则表达式在正则表达式想使用空格的时候不能采用\s的方法,因为\s指的是空白,就是所有空白。如果想表示单纯的空格的话可以采用:[]方括号本身就是匹配其中的字符,那么其中放空格就是匹配空格;如果有其他正则表达式问题可以查看:https://blog.csdn.net/cao849861802/article/details/102505834…

    2025年11月28日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号