SSD系列1——网络结构

SSD在VGG16基础上增加卷积模块以检测不同尺度的目标,使用300x300的输入图像,通过改变池化层和应用空洞卷积来维持特征图尺寸并扩大感受野。深层卷积层用于获取更高维度的语义信息,1x1卷积降低通道数后再进行3x3卷积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SSD系列:
SSD系列1——网络结构
SSD系列2——PriorBox
SSD系列3——损失计算

SSD网络结构概述

  SSD在VGGNet的基础上,增加了4个卷积模块,这些卷积模块获得的特征图具有不同的感受野,可以较好地检测不同尺度的目标。

在这里插入图片描述

VGG16

  SSD网络使用VGG16作为基础网络,输入图像的尺寸为 300 × 300 × 3 300×300×3 300×300×3,首先经过VGG16网络的前13个卷积层,然后使用一个 3 × 3 3×3 3×3的卷积和一个 1 × 1 1×1 1×1的卷积代替原来的全连接网络。

在这里插入图片描述

  • 原始VGG16的池化层统一大小为 2 × 2 2×2 2×2,步长为2,而在SSD中,Conv5后接的MaxPooling层池化大小为3,步长为1。这样做可以在增加感受野的同时,维持特征图的尺寸不变。
  • Conv6中使用了空洞数为6的空洞卷积,其padding也为6。这样做也可以在增加感受野的同时,维持特征图的尺寸不变。

深层卷积层

  SSD在VGG16的基础上增加了4个卷积层,用以获取更高维度的语义信息。为了降低通道数,这4个卷积层都是先使用 1 × 1 1×1 1×1卷积降低通道数,然后再使用 3 × 3 3×3 3×3的卷积进行特征提取。

在这里插入图片描述

### SSD目标检测网络结构概述 SSD(Single Shot MultiBox Detector)是一种高效的目标检测算法,其核心思想是在多个特征图上同时进行边界框的分类和回归操作。以下是SSD网络的主要组成部分及其功能: #### 1. 基础网络 SSD通常基于预训练的卷积神经网络(如VGG16),通过迁移学习提取图像的基础特征[^4]。基础网络负责生成初始的高分辨率特征图。 #### 2. 额外卷积层 为了捕获多尺度的信息,SSD在网络末端增加了额外的卷积层(`conv8_2`, `conv9_2`, `conv10_2`, 和 `conv11_2`)。这些层逐步降低空间维度并增加通道数,从而捕捉更深层次的语义信息[^3]。最终得到一系列不同大小的特征图,具体如下: - **Conv4_3**: 尺寸为 \(38 \times 38\) - **Conv7**: 尺寸为 \(19 \times 19\) - **Conv8_2**: 尺寸为 \(10 \times 10\) - **Conv9_2**: 尺寸为 \(5 \times 5\) - **Conv10_2**: 尺寸为 \(3 \times 3\) - **Conv11_2**: 尺寸为 \(1 \times 1\) 每张特征图上的每个位置都会生成一组默认框(Default Boxes 或 Anchor Boxes),用于匹配真实物体的位置[^1]。 #### 3. 默认框(Default Boxes) 默认框是预先定义的一组矩形框,覆盖了输入图像的不同比例和宽高比。它们的作用是对齐到可能存在的目标对象,并作为候选区域参与后续的分类和回归计算[^1]。SSD通过对这些默认框进行调整来定位目标。 #### 4. 多边框层(MultiBox Layers) 在每一层特征图上应用两个卷积核分别完成类别预测和坐标偏移估计的任务。具体来说: - 类别预测:使用一个卷积核输出每个默认框属于各个类别的概率分布; - 边界框回归:另一个卷积核则用来修正默认框的位置参数使其更好地贴合实际目标。 ```python def multibox(vgg, extra_layers, cfg, num_classes): loc_layers = [] conf_layers = [] # Add localization and confidence layers based on configuration. for k, v in enumerate(extra_layers[1::2]): loc_layers += [nn.Conv2d(v.out_channels, cfg[k]*4, kernel_size=3, padding=1)] conf_layers += [nn.Conv2d(v.out_channels, cfg[k]*num_classes, kernel_size=3, padding=1)] return (vgg[:23], extra_layers), (loc_layers, conf_layers) if __name__ == '__main__': from collections import namedtuple Config = namedtuple('Config', ['num_classes']) config = Config(num_classes=21) # VOC dataset has 20 classes plus background. base, extras = add_extras(extras['300'], 1024) _, heads = multibox(base, extras, [4, 6, 6, 6, 4, 4], config.num_classes) ``` 以上代码展示了如何构建用于预测的头部模块——即定位分支(`loc`)与置信度分支(`conf`)。 --- ### 结构简图解释 尽管无法直接提供图片形式的结构简图,可以文字描述如下层次关系帮助理解整个架构布局: 1. 输入一张固定大小(比如\(300\times300\))的RGB三通道彩色图片进入模型; 2. 经过基干网(VGG或者MobileNet等轻量化版本),逐级缩小尺寸直至最后几层保留下来的高层次抽象特性表示; 3. 接着附加若干自定义设计的小型卷积单元继续挖掘细粒度模式直到最底层只剩下一个像素点范围内的全局视野; 4. 并行于上述流程,在选定的关键中间阶段截取部分激活响应矩阵送入专门定制好的bounding box producer组件里执行两步走战略—先粗略划定疑似感兴趣区再精细校准确切轮廓边缘界限; 综上所述便构成了完整的单发式多盒探测器工作链条[^2]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓shuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值