精华内容
下载资源
问答
  • SSD算法理论
    千次阅读
    2022-04-05 14:41:34

    SSD算法

    SSD(Single Shot MultiBox Detector)是one-stage目标检测方法,one-stage算法就是目标检测和分类是同时完成的,其主要思路是利用CNN提取特征后,均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,物体分类与预测框的回归同时进行,整个过程只需要一步,所以其优势是速度快。

    SSD网络模型

    在这里插入图片描述
    输入图像shape为300x300x3(将图像输入网络之前会进行缩放);
    在这里插入图片描述
    将图像输入到VGG16的backbone中,贯穿Conv5_3(即虚线前的网络结构):

    1、conv1,经过两次3x3卷积网络,输出的特征层为64,输出为(300,300,64),再2X2最大池化,该最大池化步长为2,输出net为(150,150,64)。
    2、conv2,经过两次3x3卷积网络,输出的特征层为128,输出net为(150,150,128),再2X2最大池化,该最大池化步长为2,输出net为(75,75,128)。
    3、conv3,经过三次3x3卷积网络,输出的特征层为256,输出net为(75,75,256),再2X2最大池化,该最大池化步长为2,输出net为(38,38,256)。
    4、conv4,经过三次3x3卷积网络,输出的特征层为512,输出net为(38,38,512),再2X2最大池化,该最大池化步长为2,输出net为(19,19,512)。
    5、conv5,经过三次3x3卷积网络,输出的特征层为512,输出net为(19,19,512),再3X3最大池化,该最大池化步长为1,输出net为(19,19,512)。

    利用卷积代替全连接层,进行了一次3x3卷积网络和一次1x1卷积网络,分别为fc6和fc7,输出的通道数为1024,因此输出的net为(19,19,1024);

    通过在backbone后添加一系列的卷积层得到其他的预测特征层

    Conv8,经过一次1x1卷积网络,调整通道数,一次步长为2的3x3卷积网络,输出的通道数为512,因此输出的net为(10,10,512)。

    Conv9,经过一次1x1卷积网络,调整通道数,一次步长为2的3x3卷积网络,输出的通道数为256,因此输出的net为(5,5,256)。

    Conv10,经过一次1x1卷积网络,调整通道数,一次padding为valid的3x3卷积网络,输出的通道数为256,因此输出的net为(3,3,256)。

    Conv11,经过一次1x1卷积网络,调整通道数,一次padding为valid的3x3卷积网络,输出的特征层为256,因此输出的net为(1,1,256)。

    然后将:

    conv4的第三次卷积的特征;
    fc7卷积的特征;
    conv6的第二次卷积的特征;
    conv7的第二次卷积的特征;
    conv8的第二次卷积的特征;
    conv9的第二次卷积的特征。

    作为预测特征层,进行不同大小的目标检测,要进行两个操作:

    • 一次num_anchors x 4的卷积,用于预测该特征层上 每一个网格点上 每一个先验框的变化情况。
    • 一次num_anchors x num_classes的卷积,用于预测该特征层上 每一个网格点上 每一个预测对应的种类。
      在这里插入图片描述

    先验框虽然可以代表一定的框的位置信息与框的大小信息,但是其是有限的,无法表示任意情况,因此还需要调整,ssd利用num_anchors x 4的卷积的结果对先验框进行调整。

    num_anchors x 4中的num_anchors表示了这个网格点所包含的先验框数量,其中的4表示了x_offset、y_offset、h和w的调整情况。

    x_offset与y_offset代表了真实框距离先验框中心的xy轴偏移情况。
    h和w代表了真实框的宽与高相对于先验框的变化情况。

    SSD解码过程可以分为两部分:
    将每个网格的中心点加上它对应的x_offset和y_offset,加完后的结果就是预测框的中心;
    利用h和w调整先验框获得预测框的宽和高。

    最后对每一个预测框进行得分排序与非极大抑制筛选,获得最终的预测结果。

    参考文献:
    SSD算法理论
    睿智的目标检测23——Pytorch搭建SSD目标检测平台

    更多相关内容
  • SSD算法

    2022-03-04 16:12:09
    目录SSD算法SSD网络结构backboneextra部分loc和clsPriorBox层先验框的生成方法loc的预测结果模型训练正负样本标记损失函数困难样本挖掘模型预测总结 SSD算法 学习目标 知道SSD的多尺度特征图的网络 知道SSD中先验框...

    SSD算法

    学习目标

    • 知道SSD的多尺度特征图的网络
    • 知道SSD中先验框的生成方式
    • 知道SSD的损失函数的设计

    目标检测算法主要分为两类:

    • Two-stage方法:如R-CNN系列算法,主要思路就是通过Selective Search或者CNN网络产生一系列的稀疏矩阵的候选区域,然后对这些候选区域进行分类和回归,two-stage的方法优势在于准确率度高;
    • One-stage方法:如YOLO系列方法,主要思路就是均匀地在图片上不同位置进行密集采样,采样时使用不同尺度和长宽比box,然后利用CNN提取特征后直接进行分类和回归,整个过程只需要一步,所以优势在于速度快。我们接下来介绍的SSD方法也是单阶段的算法。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2g6laIOq-1646381518232)(笔记图片/image-20200924145753617.png)]

    SSD算法的全名是Single Shot MultiBox Detector,Single shot指明了SSD算法属于one-stage方法,MultiBox指明了SSD是多框预测。对于Faster R-CNN,先通过CNN得到候选框,然后进行分类和回归,而YOLO和SSD可以一步完成检测,SSD的特点是:

    • SSD提取了不同尺度的特征图来做检测,大尺度特征图可以用来检测小物体,而小特征图用来检测大物体;
    • SSD采用了不同尺度和长宽比的先验框,在faster r-cnn和yoloV2,V3中称为Anchors。

    SSD网络结构

    SSD是YOLO V1出来后,YOLO V2出来前的一款One-stage目标检测器。SSD用到了多尺度的特征图,在之后的YOLO V3的darknet53中,也是用到了多尺度特征图的思想。较浅层的特征图上,每个cell的感受野不是很大,所以适合检测较小的物体,而在较深的特征图上,每个cell的感受野就比较大了,适合检测较大的物体。

    SSD采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征图以用于检测。如下图所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dnJlkVxr-1646381518232)(笔记图片/image-20200924152411286.png)]

    整个特征图分为三部分:

    • backbone: VGGnet用于图片特征提取的网络
    • Extra: 用于引出多尺度特征图的网络
    • Loc和cls: 用于框位置回归和目标分类的网络

    backbone

    网络采用VGG16作为基础模型,使用imagenet数据进行预训练后,将conv4-1前一层的maxpooling中池化模式padding改为same(图中对应pytorch中的ceil_mode),使得输出为38x38,Conv4-3就是多尺度特征中的第一个38x38的特征图,因为该层比较靠前,所以在其后面增加了一个L2 Normalization层,对每个像素点在channle维度做归一化。VGG16最后的两个全连接层转换成 3x3 卷积层 conv6和 卷积层conv7,同时将最后的池化层由原来的stride=2的 2x2 变成stride=1的 3x3的池化层。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cG3r2SzU-1646381518233)(笔记图片/image-20200925094446776.png)]

    其中conv6使用的Dilated Convolutions,可以翻译为扩张卷积或空洞卷积。与普通的卷积相比,增加了一个扩张率(dilation rate)参数,主要用来表示扩张的大小。扩张卷积与普通卷积的相同点在于,卷积核的大小是一样的,在神经网络中参数数量不变,区别在于扩张卷积具有更大的感受野。如下图所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ESv2J7W9-1646381518234)(笔记图片/image-20200924161215689.png)]

    (a) 普通卷积,1-dilated convolution,卷积核的感受野为3×3=93×3=9。 (b) 扩张卷积,2-dilated convolution,卷积核的感受野为7×7=497×7=49。 © 扩张卷积,4-dilated convolution,卷积核的感受野为15×15=22515×15=225。

    扩张卷积的感受野的计算方法是:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4POXUrzl-1646381518234)(笔记图片/image-20200924160950347.png)]

    在tensorflow中实现使用的是:(与普通卷积不同的是指定dilation_rate即可)

    layers.Conv2D(1024, 3, padding='same',dilation_rate=6, activation='relu'),
    

    从上图中可以看出,卷积核的参数个数保持不变,感受野的大小随着“dilation rate”参数的增加呈指数增长。

    extra部分

    为了进行后续的多尺度特征提取,在Backbone后面添加了卷积网络,如下图所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rxnGcZ7g-1646381518234)(笔记图片/image-20200925093742990.png)]

    新增的Conv8_2,Conv9_2,Conv10_2,Conv11_2提取用于检测的特征图,特征图的大小如下表所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NmAXuiDy-1646381518235)(笔记图片/image-20200925094021645.png)]

    红框中的内容是进行多尺度分析的特征图,在加上backbone部分的Conv4_3和Conv7获取的特征图,共提取了6个特征图,其大小分别是 (38, 38), (19, 19), (10, 10), (5, 5), (3, 3), (1, 1),我们将其送入到loc和cls中进行目标检测。

    loc和cls

    在backbone和 Extras 在提取的6个特征图的基础上,进行位置信息和分类信息的提取,其结构如下图所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NuzNT3Ru-1646381518236)(笔记图片/image-20200925101902085.png)]

    该部分主要有3个支路构成,

    • PriorBox层,用来生成先验框,也就是在fasterRCNN中的anchorbox,假设先验框种类有3个(一个单元上有3个先验框),一共产生5x5x3=75个先验框
    • Localization: 采用一次3×3卷积来进行完成,每个先验框有四个坐标,共有5x5x3x4个预测结果
    • 类别置信度confdence:采用一次3×3卷积来进行完成,每个先验框有21个类别预测结果(VOC数据集),共有5x5x3x21个预测结果

    整个过程如下图所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qMGHwEUN-1646381518236)(笔记图片/image-20200925112434246.png)]

    PriorBox层先验框的生成方法

    在这里我们着重介绍PriorBox层先验框的生成方法:

    SSD一共有6个不同尺度的特征图,每个特征图上设置的先验框数量不同的(同一个特征图上每个单元设置的先验框是相同的,这里的数目指的是一个单元的先验框数目)。

    先验框的设置:包括尺度(或者说大小)和长宽比两个方面。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RKMQcCVu-1646381518237)(笔记图片/image-20200925111218652.png)]

    • 先验框的尺度

    先验框的尺度遵守一个线性递增规则:随着特征图大小降低,先验框尺度线性增加,每个先验框的尺度有下式决定:

    s k = s min ⁡ + s max ⁡ − s mi ⁡ m − 1 ( k − 1 ) , k ∈ [ 1 , m ] s_{k}=s_{\min }+\frac{s_{\max }-s_{\operatorname{mi}}}{m-1}(k-1), k \in[1, m] sk=smin+m1smaxsmi(k1),k[1,m]

    其中:

    m 指的特征图个数,这里设为5 ,因为第一层(Conv4_3层)是单独设置的。sk表示先验框大小相对于图片的比例,而 smin 和 smax表示比例的最小值与最大值,取值为0.2和0.9。

    1、对于第一个特征图,其先验框的尺度比例一般设置为 smin/2=0.1 ,尺度为 300×0.1=30。

    2、对于后面的特征图,先验框尺度按照 sk 线性增加,增长步长为:

    ⌊ ⌊ s max ⁡ ⌋ − ⌊ s min ⁡ ⌋ m − 1 ⌋ = 0.17 \left\lfloor\frac{\left\lfloor s_{\max }\right\rfloor-\left\lfloor s_{\min }\right\rfloor}{m-1}\right\rfloor=0.17 m1smaxsmin=0.17

    3、根据上式,我们可以计算出各个尺度 sk 的取值为0.20, 0.37,0. 54, 0.71, 0.88

    4、然后再乘以原图的大小300,再综合第一个特征图的先验框尺寸,则可得各个特征图的先验框尺寸为30,60,111, 162,213,264。

    • 先验框的长宽比

    一般选取 ar∈1,2,3,12,13,对于特定的长宽比,按如下公式计算先验框的宽度与高度(后面的 sk均指的是先验框实际尺度,而不是尺度比例):

    w k a = s k a r , h k a = s k / a r w_{k}^{a}=s_{k} \sqrt{a_{r}}, h_{k}^{a}=s_{k} / \sqrt{a_{r}} wka=skar ,hka=sk/ar

    默认情况下,每个特征图会有一个 ar=1且尺度为 sk 的先验框,除此之外,还会设置一个尺度为 s k ′ = s k s k + 1 s_{k}^{\prime}=\sqrt{s_{k} s_{k+1}} sk=sksk+1 且 ar=1的先验框,这样每个特征图都设置了两个长宽比为1但大小不同的正方形先验框。

    因此,每个特征图一共有 6 个先验框 1 , 2 , 3 , 1 2 , 1 3 , 1 ′ 1,2,3, \frac{1}{2}, \frac{1}{3}, 1^{\prime} 1,2,3,21,31,1,但是在实现时,Conv4_3,Conv10_2和Conv11_2层仅使用4个先验框,它们不使用长宽比为 3 , 1 3 3, \frac{1}{3} 3,31 的先验框。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPGtXmUH-1646381518238)(笔记图片/image-20200925101351649.png)]

    令 nknk为该特征图所采用的先验框数目,那么类别置信度需要的卷积核数量为 nk,而边界框位置需要的卷积核数量为 nk×4。由于每个先验框都会预测一个边界框,

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eNcKYA7a-1646381518238)(笔记图片/image-20201022110012877.png)]

    所以SSD一共可以预测 38×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4=8732个边界框,对于一个300x300的图像就有8732个预测结果,是非常的多的,所以说SSD本质上是密集采样。

    loc的预测结果

    网络预测输出的边界框与真实的边界框之间存在转换关系,具体如下:

    • 先验框位置:

    l = ( l c x , l c y , l w , l h ) l=\left(l^{c x}, l^{c y}, l^{w}, l^{h}\right) l=(lcx,lcy,lw,lh)

    • 真实框的位置:

    p = ( p c x , p c y , p w , p h ) p=\left(p^{c x}, p^{c y}, p^{w}, p^{h}\right) p=(pcx,pcy,pw,ph)

    那么网络输出结果d与边界框的位置存在关系:

    p c x = l w d c x + l c x , p c y = l y d c y + l c y p w = l w exp ⁡ ( d w ) , p h = l h exp ⁡ ( d h ) \begin{array}{l} p^{c x}=l^{w} d^{c x}+l^{c x}, p^{c y}=l^{y} d^{c y}+l^{c y} \\ p^{w}=l^{w} \exp \left(d^{w}\right), p^{h}=l^{h} \exp \left(d^{h}\right) \end{array} pcx=lwdcx+lcx,pcy=lydcy+lcypw=lwexp(dw),ph=lhexp(dh)

    模型训练

    正负样本标记

    在训练过程中,首先需要确定训练图片中的 ground truth 与哪一个先验框来进行匹配,与之匹配的先验框所对应的边界框将负责预测它。

    SSD的先验框和ground truth匹配原则:

    • 正样本

    1、对于图片中的每个gt,找到与其IOU最大的先验框,该先验框与其匹配,这样可以保证每个gt一定与某个先验框匹配。

    2、对于剩余未匹配的先验框,若某个gt的IOU大于某个阈值(一般0.5),那么该先验框与这个gt匹配

    • 负样本

    其它的先验框标记为负样本

    注意:

    1、某个gt可以和多个先验框匹配,而每个先验框只能和一个gt进行匹配
    
    2、如果多个gt和某一个先验框的IOU均大于阈值,那么先验框只与IOU最大的那个进行匹配
    

    损失函数

    SSD的损失函数是位置损失( loc)与类别置信度损失(conf)的加权和:

    L ( x , c , l , g ) = 1 N ( L conf  ( x , c ) + α L loc  ( x , l , g ) ) L(x, c, l, g)=\frac{1}{N}\left(L_{\text {conf }}(x, c)+\alpha L_{\text {loc }}(x, l, g)\right) L(x,c,l,g)=N1(Lconf (x,c)+αLloc (x,l,g))

    其中N是先验框的正样本数量,c为类别置信度预测值, l为先验框的所对应边界框的位置预测值,而 g是ground truth的位置参数,权重系数 α 设置为1。

    1. 位置损失函数:

    针对所有的正样本,采用 Smooth L1 Loss损失

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9xZk12gc-1646381518239)(笔记图片/image-20200925115259125.png)]

    1. 分类损失函数

    对于分类损失,与fasterRCNN一样采用交叉熵损失。

    困难样本挖掘

    困难样本挖掘的思想是使用网络对样本进行处理,把其中预测错误的负样本(hard negative)放入负样本集合再继续训练网络模型。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g0F8Yvjg-1646381518239)(笔记图片/image-20200925120543740.png)]

    在SSD中处理方式是:

    • 使用1:3的正负样本比例训练网络,
    • 对输入的预测结果按照类别置信度进行降序排序,取出前k个负样本
    • 将这k个负样本加入下次迭代的负样本中对网络进行训练。

    模型预测

    预测过程比较简单,

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bWw0zjCX-1646381518240)(笔记图片/image-20200925120120452.png)]

    主要步骤如下:

    • 对于每个预测框,首先根据类别置信度确定其类别(置信度最大者)与置信度值,并过滤掉属于背景的预测框。
    • 然后根据置信度阈值(如0.5)过滤掉阈值较低的预测框。
    • 对于留下的预测框进行解码,根据先验框得到其真实的位置参数(解码后一般还需要做clip,防止预测框位置超出图片)。
    • 解码之后,一般需要根据置信度进行降序排列,然后仅保留top-k(如400)个预测框。
    • 进行NMS算法,过滤掉那些重叠度较大的预测框。
    • 最后剩余的预测框就是检测结果了。

    总结

    • 知道SSD的多尺度特征图的网络

    SSD提取了6个不同特征图进行目标检测

    • 知道SSD中先验框的生成方式

    SSD在不同尺度的特征图上生成的先验框的尺度和长宽比是不一样的

    • 知道SSD的损失函数的设计

    分类和回归损失函数的加权和

    展开全文
  • SSD算法相关合集,收纳了以SSD算法为基础的改进目标检测算法
  • 针对以Faster R-CNN为代表的基于候选框方式的遥感影像目标检测方法检测速度慢,而现有SSD算法在小目标检测中性能低的问题,提出一种改进的SSD算法,综合利用现有基于候选框方式和一体化检测方式的优势,提升检测性能。...
  • 文档内介绍了如何在ubuntu上使用SSD算法,介绍了从安装环境到编译caffe到运行SSD的全过程,欢迎下载讨论。
  • SSD算法解析

    千次阅读 2022-04-15 11:39:22
    目标检测算法主要分为两类: Two-stage方法:如R-CNN系列算法,主要思路就是通过Selective Search或者CNN网络产生一系列的稀疏矩阵的候选区域,然后对这些候选区域...我们接下来介绍的SSD方法也是单阶段的算法。 SS

    目标检测算法主要分为两类:

    • Two-stage方法:如R-CNN系列算法,主要思路就是通过Selective Search或者CNN网络产生一系列的稀疏矩阵的候选区域,然后对这些候选区域进行分类和回归,two-stage的方法优势在于准确率度高;
    • One-stage方法:如YOLO系列方法,主要思路就是均匀地在图片上不同位置进行密集采样,采样时使用不同尺度和长宽比box,然后利用CNN提取特征后直接进行分类和回归,整个过程只需要一步,所以优势在于速度快。我们接下来介绍的SSD方法也是单阶段的算法。

    SSD算法的全名是Single Shot MultiBox Detector,Single shot指明了SSD算法属于one-stage方法,MultiBox指明了SSD是多框预测。对于Faster R-CNN,先通过CNN得到候选框,然后进行分类和回归,而YOLO和SSD可以一步完成检测,SSD的特点是:

    • SSD提取了不同尺度的特征图来做检测,大尺度特征图可以用来检测小物体,而小特征图用来检测大物体;
    • SSD采用了不同尺度和长宽比的先验框,在faster r-cnn和yoloV2,V3中称为Anchors。

    1 SSD网络结构

    SSD是YOLO V1出来后,YOLO V2出来前的一款One-stage目标检测器。SSD用到了多尺度的特征图,在之后的YOLO V3的darknet53中,也是用到了多尺度特征图的思想。较浅层的特征图上,每个cell的感受野不是很大,所以适合检测较小的物体,而在较深的特征图上,每个cell的感受野就比较大了,适合检测较大的物体。

    SSD采用VGG16作为基础模型,然后在VGG16的基础上新增了卷积层来获得更多的特征图以用于检测。如下图所示:
    在这里插入图片描述
    整个特征图分为三部分:

    • backbone: VGG16用于图片特征提取的网络
    • Extra: 用于引出多尺度特征图的网络
    • Loc和cls: 用于框位置回归和目标分类的网络

    1.1 backbone

    网络的backbone采用VGG16作为基础模型,并在此基础上做了稍微的改动。使用imagenet数据进行预训练后,将conv4-1前一层的maxpooling中池化模式padding改为same(图中对应pytorch中的ceil_mode=True,即向上取整),使得输出为38x38,Conv4-3得到的特征图就是多尺度特征中的第一个38x38的特征图 (即第一个用于后续目标检测网络进行位置回归和分类的计算的特征图),因为该层比较靠前,所以在其后面增加了一个L2 Normalization层,对每个像素点在channle维度做归一化。VGG16倒数第3个和倒数第2个全连接层分别转换成 3x3 卷积层 conv6和 卷积层conv7,把最后一个全连接层删除,同时将最后的池化层由原来的stride=2的 2x2 变成stride=1的 3x3的池化层。(卷积层conv7得到的特征图是第二个用于后续目标检测网络进行位置回归和分类计算的特征图))

    下图为原始的VGG16网络和SSD中的VGG16的差别:
    在这里插入图片描述
    其中conv6使用的Dilated Convolutions,可以翻译为扩张卷积或空洞卷积。与普通的卷积相比,增加了一个扩张率(dilation rate)参数,主要用来表示扩张的大小。扩张卷积与普通卷积的相同点在于,卷积核的大小是一样的,在神经网络中参数数量不变,区别在于扩张卷积具有更大的感受野。如下图所示:(下图中红点代表卷积核大小,这三幅图中卷积核大小均为3x3,蓝绿色代表感受野大小,相当于这里对应的卷积核参数为0)
    在这里插入图片描述
    (a) 普通卷积,1-dilated convolution,卷积核的感受野为3×3=9。 (b) 扩张卷积,2-dilated convolution,卷积核的感受野为7×7=49。 © 扩张卷积,4-dilated convolution,卷积核的感受野为15×15=225。

    空洞卷积的好处

    • 扩大感受野,且不丢失分辨率:在deep net中为了增加感受野且降低计算量,总要进行降采样(pooling或s2/conv),这样虽然可以增加感受野,但空间分辨率降低了。为了能不丢失分辨率(即可以不改变图像输出特征图的尺寸),且仍然扩大感受野,可以使用空洞卷积。这在检测,分割任务中十分有用。一方面感受野大了可以检测分割大目标,另一方面分辨率高了可以精确定位目标。
    • 捕获多尺度上下文信息:空洞卷积有一个参数可以设置dilation rate,具体含义就是在卷积核中填充dilation rate-1个0,因此,当设置不同dilation rate时,感受野就会不一样,也即获取了多尺度信息。当然这样的操作不影响特征图的尺寸,又避免下采样造成信息损失,同时也利用到多尺度信息。
      • 知识补充:我们知道,神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次。

    潜在问题 :远距离获取的信息没有相关性:由于空洞卷积稀疏的采样输入信号,使得远距离卷积得到的信息之间没有相关性,影响分类结果。

    普通卷积和扩张卷积的直观区别:
    在这里插入图片描述
    扩张卷积的感受野的计算方法是:
    在这里插入图片描述

    所以对于图b,F=2*(2-1)(3-1)+3=7,即卷积核的感受野为7x7
    对于图c,F=2
    (4-1)*(3-1)+3=15,即卷积核的感受野为15x15

    1.2 extra部分

    为了进行后续的多尺度特征提取,在Backbone后面添加了卷积网络,如下图所示:

    新增的Conv8_2,Conv9_2,Conv10_2,Conv11_2得到的特征图都会送到后续的目标检测网络中用于位置的回归和分类的计算,特征图的大小如下表所示:
    在这里插入图片描述
    红框中的内容是进行多尺度分析的特征图,再加上backbone部分的Conv4_3和Conv7获取的特征图,共提取了6个特征图,其大小分别是 (38, 38), (19, 19), (10, 10), (5, 5), (3, 3), (1, 1),我们将其送入到loc和cls中进行目标检测,从而实现多尺度目标检测。

    下图是SSD网络的框架:

    在这里插入图片描述
    注意:

    图中的红框部分是对应的预测特征层,这里共有6个预测特征层,分别是:Conv4_3, Conv7,Conv8_2, Conv9.2,Conv10_2, Conv11_2

    图中的Conv6 (FC6)表示图像的卷积层Conv6对应着原来VGG模型的全连接层FC6的位置,FC6是VGG16中的第一个全连接层

    图中的Conv7 (FC7)表示图像的卷积层Conv7对应着原来VGG模型的全连接层FC7的位置,FC7是VGG16中的第二个全连接层

    1.3 loc和cls

    在backbone和 Extras 在提取的6个特征图的基础上,进行位置信息和分类信息的提取,其结构如下图所示(这里选取其中一个特征图进行分析,其余5个特征图的分析过程与之类似):
    在这里插入图片描述
    该部分主要有3个支路构成,

    • 分支一:Default Box层,用来生成先验框,也就相当于fasterRCNN中的anchorbox,假设先验框种类有6个(一个单元上有6个先验框),而特征的大小是5x5,所以一共产生5x5x6=150个先验框
    • 分支二:Localization: 采用一次 3×3 卷积来进行完成,每个先验框有四个坐标,共有5x5x6x4个预测结果
    • 分支三:类别置信度confdence:采用一次 3×3 卷积来进行完成,每个先验框有21个类别预测结果(VOC数据集,共20个类别加一个背景),共有5x5x6x21个预测结果

    最后经过修正边界,分类和NMS过滤就得到最终的预测结果

    注意:在原论文中,将anchor称作Default Box,其实它们都是一个意思,都表示先验框的意思

    整个过程如下图所示:
    在这里插入图片描述

    1.3.1 Default Box层先验框的生成方法

    在这里我们着重介绍Default Box层先验框的生成方法:

    SSD一共有6个不同尺度的特征图,不同特征图上设置的先验框数量,尺度,宽高比都是不同的(即同一个特征图上每个单元设置的先验框是相同的,但是不同特征图上每个单元是不同的,这里的数目指的是一个单元的先验框数目)。

    先验框的设置:包括尺度(或者说大小)和长宽比两个方面。
    在这里插入图片描述

    • 先验框的尺度

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    所以对于送入网络中的一幅图像,SSD一共可以预测 38×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4=8732个边界框(先验框),网络需要对这些边界框进行分类和回归,即对于一个300x300的图像就有8732个预测结果,是非常的多的,所以说SSD本质上是密集采样。
    下图是6个预测特征图的先验框尺寸核数目:
    在这里插入图片描述
    但是在github实现的SSD源码中,先验框尺寸与论文中有所不同

    在这里插入图片描述
    在这里插入图片描述

    1.3.2 loc的预测结果

    网络输出的结果是回归偏移量,而不是我们真正想要的结果(即预测框的真正位置,也就是修正后的先验框位置),这里还需要进行转换,具体的转换转换关系如下所示:
    在这里插入图片描述

    2.模型训练

    2.1 正负样本标记

    在训练过程中,首先需要确定训练图片中的 ground truth 与哪一个先验框来进行匹配,与之匹配的先验框所对应的边界框将负责预测它。

    SSD的先验框和ground truth匹配原则:

    • 正样本

    1、对于图片中的每个gt,找到与其IOU最大的先验框,该先验框与其匹配,这样可以保证每个gt一定与某个先验框匹配。

    2、对于剩余未匹配的先验框,若与某个gt的IOU大于某个阈值(一般0.5),那么该先验框与这个gt匹配

    SSD中正样本的选取标准和Faster RCNN中的相同

    • 负样本

    除了正样本外,其余的先验框标记为负样本,但是在很多情况下,正样本的数量要远小于负样本的数量,为了避免在训练过程中正负样本严重不平衡情况,在训练的过程中,我们并不是拿所有的负样本进行训练,而是对负样本进行抽样,抽样时按照 置信度误差进行降序排列,选 取误差的较大的top-k作为训练的负 样本,以保证正负样本比例接近1:3

    负样本的置信度损失越大,那么网络就会将该负样本预测为包含目标的概率越大,所以它属于困难样本,故使用这些困难样本来训练网络的效果更好

    注意:

    1、某个gt可以和多个先验框匹配,而每个先验框只能和一个gt进行匹配

    2、如果多个gt和某一个先验框的IOU均大于阈值,那么先验框只与IOU最大的那个进行匹配

    2.2 损失函数

    SSD的损失函数和Faster RCNN中的损失函数基本一致,它包括位置损失( loc)与类别置信度损失(conf)的加权和:

    在这里插入图片描述

    这里的N是先验框的正样本数量,权重系数 α 设置为1。

    其中类别损失如下所示:它其实就是多类别 softmax loss

    在这里插入图片描述
    其中的定位损失如下所示;定位损失只针对正样本进行损失计算
    在这里插入图片描述

    3 模型输出部分

    SSD模型一共有6个预测特征图,对于其中一个尺寸为mxn,通道为p的预测特征图,假设其每个像素点会产生K个anchor,每个anchor会对应c个类别(这里的类别包括背景类别)和4个回归偏移量,那么我们会使用使用(4+c)k个 尺寸为3x3,通道为p的卷积核对该预测特征图进行卷积操作,得到尺寸为mxn,通道为(4+c)k的输出特征图, 它包含了预测特征图上所产生的每个anchor的回归偏移量和各类别概率分数。所以对于尺寸为mxn的预测特征图,总共会产生(4+c)kmn个结果

    如下图所示,输出特征图上a点所包含的预测信息:包括目标类别分数和边界框回归参数,由于每个像素点上会参数K个anchor(本例中k=4),所以a点会预测出cxk个目标类别分数和4xk个边界回归参数,一共产生(c+4)xk个结果。

    在这里插入图片描述

    4 模型预测

    预测过程比较简单,
    在这里插入图片描述
    主要步骤如下:

    • 对于每个预测框,首先根据类别置信度确定其类别(置信度最大者)与置信度值,并过滤掉属于背景的预测框。
    • 然后根据置信度阈值(如0.5)过滤掉阈值较低的预测框。
    • 对于留下的预测框进行解码 (解码的意思是网络输出的结果是对先验框的修正量,并不是修正后的先验框的位置结果,所以还需要进行转换),根据先验框得到其真实的位置参数(解码后一般还需要做clip,防止预测框位置超出图片)。
    • 解码之后,一般需要根据置信度进行降序排列,然后仅保留top-k(如400)个预测框。
    • 进行NMS算法,过滤掉那些重叠度较大的预测框。
    • 最后剩余的预测框就是检测结果了。
    展开全文
  • ssd算法测试程序

    2019-03-07 12:49:30
    使用caffe版本的ssd目标检测算法测试训练好的模型效果,主要测试视频或者图片目录
  • 摘要:针对通用目标检测方法在复杂环境下检测小目标时效果不佳、漏检率高等问题,本文对SSD小目标检测算法进行改进。利用训练损失的反馈作为判断条件,结合数据增强提高模型对复杂环境的抗干扰能力,降低小目标的漏检...

    人工智能技术与咨询

    点击蓝字 · 关注我们

    来源:《 计算机科学与应用》 ,作者刘洋等

    关键词: SSD;深度学习;小目标检测

    摘要:

      摘要: 针对通用目标检测方法在复杂环境下检测小目标时效果不佳、漏检率高等问题,本文对SSD小目标检测算法进行改进。利用训练损失的反馈作为判断条件,结合数据增强提高模型对复杂环境的抗干扰能力,降低小目标的漏检率,在网络中引入注意力机制,增加SENet (Squeeze-and-Excitation)模块,对模型中的特征通道进行权重重分配,对无效的特征权重进行抑制,提升有用的特征权重占比。实验结果表明,相比原SSD算法,改进的SSD算法在不引入过多计算量的情况下,能够有效弥补训练过程中小目标监督不到位的不足,在VOC数据集和工地安全帽佩戴数据集上,精度都得到了明显提升。

    1. 引言

    目标检测是计算机视觉中最具有挑战性的任务,目的是在图像的复杂背景下找到若干目标,并对每一个目标给出一个精确的目标包围盒并判断包围盒中的目标所属的类别 [1]。深度学习的兴起使得目标检测得到加速发展,准确性和实时性都得到了提升,如Girshick等人提出的R-CNN、Fast R-CNN算法 [2] [3]、Ren等人提出的Faster R-CNN算法 [4]、Joseph等人提出的YOLO算法 [5] 以及Liu等人提出的SSD (Single Shot MultiBox Detector)算法 [6] 等。其中,小目标检测是目标检测领域中一个重要的难点问题,实际应用场景复杂、小目标信息不充分,导致小目标的检测效果始终不是很好。小目标检测因而成为计算机视觉领域中的一项具有巨大挑战性的任务。

    上述方法仅对常规的目标检测问题效果较好,但所提取出的特征对小目标的表示能力较差,检测效果不佳。MS COCO数据集中将尺寸小于32 × 32像素的目标定义为小目标 [7],大于32 × 32像素小于96 × 96像素的目标定义为中目标,大于96 × 96像素的目标为大目标。Huang等人 [8] 对现阶段的检测器进行调研发现,现阶段的目标检测系统的精度,在小目标上的精度普遍比大目标低10倍,原因主要是由于样本中的小目标分辨率太低,虽然卷积神经网络的特征提取能力对于大中目标已经足够,但是对于小目标还是力不从心,小目标能提供给模型的信息过少也是制约目标检测发展的瓶颈之一。对此,一系列针对小目标检测的方法应运而生,小目标检测因而成为热点研究领域。

    Fu等人 [9] 提出DSSD算法,利用ResNet [10] 替换SSD中的VGG [11] 模型,同时为了减少小目标的漏检率,加入反卷积层(Deconvolution),将图像分为更小的格子,但因为ResNet中引入残差连接等,算法的额外开销较大,比SSD算法的速度略慢。Singh等人 [12] 从训练角度切入,在数据层面思考,对数据集进行分析,发现训练样本中的小目标在待检测的图像中占比较小,于是采用一种多尺度的训练方式——图像的尺度归一化(SNIP),在金字塔模型的每一个尺度上进行训练,高效利用训练数据,检测效果得到显著提升,但是计算成本巨大。Lin等人 [13] 利用特征金字塔网络(FPN)融合模型高低层语义信息,增强模型提取的特征对小目标的表达能力。虽然上述方法都在一定程度上提升了小目标的检测精度,由于网络模型冗余导致的算法实时性不足、模型轻量化导致的精度不够、数据量不平衡导致训练不充分等因素,上述方法在实际场景下的检测效果仍然不理想。

    本文基于SSD方法,利用数据增强和注意力机制设计一种小目标检测算法,在增加计算量可近似忽略的前提下,提升检测精度。首先,对训练过程进行优化,采用数据增强的方法加强模型对小目标的监督,以每次迭代过程中的各项目标损失占比为判断依据,确定是否在下次迭代过程中增强输入数据,若在当前迭代中小目标贡献的损失占比小于给定阈值,则下次迭代输入为增强图像,反之输入原图像;此外加入SENet模块,提升有效的特征信息权重,抑制作用较小的特征信息权重。实验结果表明,改进后的SSD算法优于原SSD算法,在实际场景下也能有很好的检测效果。

    2. SSD算法

    2.1. 网络模型

    SSD的主要特点是在不同尺度上进行检测与识别,其网络模型分为基础网络和附加网络,在基础网络的末端添加了几个特征层作为附加网络用于预测不同尺度目标以及包围盒的偏移量和置信度。该算法以VGG-16模型作为特征提取网络并将其全连接层替换为卷积层,网络输入RGB三通道图像,附加网络附加4个卷积层。为提高目标检测精度,SSD算法在不同的尺度上进行检测,如图1所示,图像输入网络后从左至右得到6层不同尺寸的特征图(feature map) Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2,尺寸分别为38 × 38、19 × 19、10 × 10、5 × 5、3 × 3、1 × 1,借鉴Faster RCNN算法中的锚点思想,在特征图上生成不同尺度不同宽高比的先验框,而后通过非极大抑制(NMS)等方法输出最终目标类别和定位结果。

    Figure 1. SSD network model

    图1. SSD网络模型

    2.2. SSD优缺点分析

    作为单步检测器,SSD算法以回归的方式进行分类和定位,并结合Faster RCNN中的锚点思想进行预测,其算法中的先验框可以使得模型更快的收敛,降低训练成本。若没有采用锚点,则直接回归预测目标的坐标位置,模型难以收敛且计算成本巨大。同时SSD算法选取了模型中的六个特征图进行多尺度检测,各个卷积层所输出的特征图包含的信息是不同的,深层特征尺寸小,包含的语义信息更丰富,适合检测大目标,而浅层特征尺寸大,细节纹理特征信息更为丰富,对小目标的检测很有帮助,其采用的多尺度检测一定程度上是有利于提升小目标的检测精度的。

    虽然SSD采用了多尺度的检测机制,利用VGG-16作为网络模型,通过Conv4_3的大尺度特征图来预测小目标,但是该层离顶层距离仍然较远,一个32 × 32的目标经过卷积后在Conv4_3特征图上大小仅为4 × 4,如此少的像素信息难以对目标进行预测。另一方面,虽然采用了六个特征图进行预测,但是特征与特征之间都是独立的,实际上,模型的底层高分辨率特征由于经过的卷积运算较少,包含更多的纹理和细节信息,但包含的语义信息不足,难以区分目标和背景,而高层低分辨率特征语义信息丰富,但卷积下采样过程中丢失了大量细节信息。同时,浅层特征图中包含大量通道,不同通道对于网络的判断也有差别,有些通道包含的信息更为丰富,有些则不那么重要,SSD算法并没有在通道上进行注意力关注。综上,SSD算法在实际应用场景下,对于小目标的检测效果并不理想。

    3. 算法改进

    3.1. 数据增强

    Mosaic方法 [14] 是由Bochkovskiy等人提出的一种数据增强方法,可以当作是Cutmix [15] 方法的改进版。Cutmix算法对一张图像进行操作,在待增强图像上随机生成一个裁剪框,在裁剪框内填充训练集中其它数据中相应的位置像素,可以提高训练的效率。而Mosaic方法在Cutmix基础上再加入两张图像,如图2所示,采用4张图像进行混合,极大程度地丰富了训练图像的背景以及上下文信息,可以一定程度降低小目标的漏检率,同时4张图像的混合使得mini-batch不需要太大,可降低硬件需求。

    Figure 2. Mosaic data enhancement example

    图2. Mosaic数据增强示例

    3.2. 训练优化

    目标在现实生活中其实是随处可见的,比如远距离的交通标志,空中大背景下的小鸟等。MS COCO数据集中设定小于32 × 32大小的目标即为小目标,小目标虽然是很常见的,但其分布却是不可预测的。MS COCO数据集中,有41.43%的目标是小目标,远远高于其他两种尺度的目标。然而,包含小目标的图像只占训练集所有图像的51.82%,而包含大尺度目标和中等尺度目标的图像占比分别为70.07%和82.28%。也就是说,现有的环境下,待检测的大部分目标都是小目标,但是几乎一半的图像是不包含小目标的。这种训练样本的不平衡,也就导致训练的不平衡,严重阻碍了训练过程的推进。因此,考虑结合数据增强的策略从训练过程中去改善这种不平衡。模型在训练过程中大中小目标都是会反馈一定的损失进行优化驱动的,而在这一过程中,小目标所贡献的损失往往偏低,这样一来,训练好的模型对于大中目标的检测效果自然更好,这里提出一种优化方法,根据小目标所贡献的损失占总损失的比例来进行训练优化,如图3所示。假定某次迭代d中,来自小目标贡献的损失占总损失的比例小于给定阈值μ(即表示这次迭代小目标受到的监督不足),则第d + 1次迭代采用数据增强后的图像输入,反之,则采用原常规训练图像(此处阈值根据经验设置,经过多次不同阈值的设置对比,取0.1最为合适)。对于目标o,其面积So可以近似于它的包围盒宽高之积ho × woS表示第d次迭代中的小目标,MS COCO数据集规定面积小于32 × 32的目标即为小目标, LdSLSd 为第d次迭代下小目标的总损失, LdLd 为第d次迭代下的总损失, μdSμSd 为小目标的损失比。这种优化方法能够损失分布不均匀以及训练样本不平衡的问题。

    Figure 3. Training optimization pipeline

    图3. 训练优化流程图

    3.3. 模型优化

    SENet (Squeeze-and-Excitation Networks) [16] 是Hu等人结合注意力机制提出的一种网络结构,Hu等人曾凭借该结构夺得ImageNet2017竞赛图像分类任务冠军。该网络的核心思想在于,通过学习的方式,自动获取网络中每一个特征通道的重要程度,而网络也可以依据这个重要程度去提升有用的特征通道重要性并且抑制对于当前任务用处不大的通道重要性。输入特征X,经过一系列卷积池化操作得到特征通道数为C的特征U。首先对特征U进行压缩(Squeeze)操作,沿着空间维度进行特征压缩,得到通道级的全局特征,这个特征某种程度上具备全局感受野,且输出的维度与输入的特征通道数相匹配,表示在特征通道上响应的全局分布,可以让较浅的层获得更为全面的感受野。而后进行激励(Excitation)操作,学习各个通道之间的关系,通过参数w为每个特征通道生成权重。最后再进行权重的重新分配,完成在通道维度上对于特征的重标定,使得模型对于各个通道的特征更有判别能力。

    因此,考虑到SSD算法模型中不同的通道对于小目标的检测也有着不同影响,也可以通过增强有效通道的特征权重,抑制无效通道的特征权重,从而提升SSD算法对于小目标检测的精度。所以选择在Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2层之后加入SE模块对特征图的特征通道进行权重重分配,改进后的结构图如图4所示。

    4. 实验

    实验平台采用如下配置:Ubuntu18.04操作系统,基于Pytorch1.3框架搭建实验,GPU显卡型号为RTX2080ti,为充分展现实验效果,采用两套数据集,分别为Pascal VOC数据集以及SHWD数据集(工地场景安全帽数据集),其中,为避免产生过拟合等由于数据量不充足造成的问题,选用VOC2007和VOC2012数据集的训练集作为训练集,在VOC2012数据集的测试集上进行测试。SHWD数据集提供了用于安全帽佩戴和人头检测的数据,包括7581张图像,其中9044个佩戴安全帽的样本和111514个正常头部样本。

    实验采用VOC2007数据集和VOC2012数据集进行训练,选取目前几个比较流行的目标检测方法进行对比,包括YOLO系列、SSD系列、RCNN系列,可以看出算法的平均精度得到了有效的提高,如表1所示。

    Figure 4. Improved network structure diagram

    图4. 改进后的网络结构图

    Table 1. Comparison of mAP indexes of several target detection algorithms

    表1. 几种目标检测算法mAP指标对比

    具体各类的精度如表2所示,在VOC2007验证集上进行验证,将本文改进的SSD算法与原算法对比。可以得知,改进后的模型在bird、bottle、plants、chair等不同小目标类别上相比于原SSD算法均有着不同程度的提高。

    算法名称

    数据集

    mAP(%)

    aero

    bike

    bird

    boat

    bottle

    bus

    car

    cat

    chair

    SSD

    07 + 12

    77.6

    79.9

    85.1

    76.1

    71.7

    54.0

    85.6

    85.9

    87.1

    58.6

    Ours

    07 + 12

    80.6

    83.8

    87.7

    79.1

    75.2

    59.2

    88.9

    87.7

    88.3

    64.2

    cow

    table

    dog

    horse

    motorbike

    person

    plant

    ship

    sofa

    train

    tv

    SSD

    83.6

    76.3

    85.2

    87.3

    86.2

    79.1

    50.3

    78.9

    77.6

    87.5

    77.1

    Ours

    85.0

    77.6

    86.4

    88.6

    86.8

    81.9

    57.9

    81.7

    82.1

    88.7

    81.2

    Table 2. Comparison of different types of AP indexes

    表2. 不同类别的AP指标对比

    图5是原SSD算法与本文改进算法的效果对比,可以看出,原SSD算法对于chair、bottle、plant等小尺寸目标检测效果较差,漏检率较高,而改进后的SSD算法一定程度上降低了小目标的漏检率,并且提升了检测小目标的精度。

    Figure 5. Comparison of SSD algorithm and improved SSD algorithm

    图5. SSD算法效果与改进SSD算法效果对比

    除了在标准公共数据集下进行比较,为了进一步探究算法的实际应用有效性,在相同的实验环境下,通过SHWD数据集中的安全帽佩戴进行训练,将训练完成后的模型进行测试,测试指标如表3所示,可以看出改进后的算法在该数据集上的平均精度是要高于SSD算法的,同时在识别安全帽是否佩戴的两种情况下,精度都是要高于原SSD算法的。如图6所示,图6左侧代表改进SSD算法的效果,图6右侧表示原SSD算法效果。由图6可以看出,工地场景下遮挡情况较多,原SSD算法容易因为遮挡而没有检测到相应目标,甚至可能因为环境光线等因素而出现误判,而改进SSD算法在遮挡情况下仍然成功检测到相应目标。

    综合上述实验可得,本文提出的改进SSD算法相较改进前的算法,一定程度上降低了小目标的漏检率,同时精度得到有效提高,对于小目标以及遮挡目标的检测效果也更好,在实际的应用场景下如文中选用的工地环境下,也能得到充分应用,具有一定的实用价值。

    算法名称

    AP (%)

    mAP(%)

    佩戴安全帽

    未佩戴安全帽

    SSD300

    86.5

    87.6

    87.1

    SSD512

    87.7

    88.5

    88.1

    Ours

    90.6

    91.1

    90.9

    Table 3. Comparison of two methods in construction site

    表3. 工地场景下两种方法对比

    Figure 6. Comparison of two methods in construction site

    图6. 工地场景下两种方法效果对比

    5. 结语

    本文针对小目标检测效果不佳、漏检率高等问题,对SSD算法进行改进,从小目标的训练损失占比切入,对每次迭代过程中的损失占比进行监督,结合一些数据增强方法增强了小目标的训练效果,在计算量增加成本可以忽略不计的情况下提高了检测效果。并在模型中引入SENet模块,筛选通道间的注意力并学习通道之间的相关性,对每层的特征通道进行权重重分配,最终改进的SSD算法在小目标的检测效果上得到了很大的改善,同时在安全帽佩戴数据集上表现优异,在实际场景下也具备一定的应用价值。未来将继续研究训练过程的优化和网络结构的调整以及从多尺度的方面入手,争求进一步提高精度。

    赶紧长按上面图片添加关注!

    转发,点赞,在看,安排一下

    展开全文
  • 基于SSD算法与PYNQ-Z2平台的智能收银系统.pdf
  • SSD 算法解析

    2021-12-31 09:25:10
    SSD算法详解 SSD网络解析之PriorBox层 postprecess: ssd caffe PriorBox参数计算box 个数 SSD框架详细解读 训练时修改对应分辨率的同时需要修改参数中的min_dim、max_dim对应的值,通过此组值计算min_size、max_...
  • SSD算法详解

    千次阅读 2019-06-05 11:00:43
    转载:https://blog.csdn.net/ytusdc/article/details/86577939 SSD github : https://github.com/weiliu89/caffe/tree/ssd SSD paper :&nb...
  • 2014年的算法,不是SSA和SVD
  • SSD算法分析

    千次阅读 2020-06-06 23:38:52
    本文通过SSD论文,对SSD算法进行详细分析;并给出tensorflow与keras实现代码
  • SSD算法简单介绍

    千次阅读 2020-05-14 16:09:54
    SSD算法 论文连接SSD: Single Shot MultiBox Detector SSD,全称Single Shot MultiBox Detector,是目前主要的检测框架之一,其基于将detection转化为regression的思路,可以一次完成目标定位与分类。该算法基于...
  • 目录一、前言二、实现细节1、前提条件2、数据标注2.1 Labelme2.1.1 工具...SSD运行环境5、修改代码训练网络5.1 代码架构详解5.2 修改网络配置参数5.3 修改VOC类别参数5.4 下载模型5.5 训练模型5.6 Loss和Accuracy可视...
  • 点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达SSD(Single Shot Detection)是一个流行且强大的目标检测网络,网络结构包含了基础网络(Base ...
  • 基于SSD算法的人脸目标检测的研究.pdf
  • 目标检测:SSD 算法

    2020-03-28 17:14:03
    日萌社 人工智能AI:Keras PyTorch ...5.9 SSD算法原理 学习目标 目标 知道SSD的结构 说明Detector & classifier的作用 说明SSD的优点 应用 无 5.9.1 SSD 5.9.1.1 简介 SSD算法源于2016年发表...
  • CV_01 SSD算法的简单理解(入门级别) 一. 写这篇博文的初衷 其实在很多论坛也好,贴吧也罢已经有了很多关于SSD算法的剖析与理解,但大部分都比较学术和深奥,博主在初学的时候也是遇到了不少难以理解的问题,在反复...
  • 一、SSD算法的介绍 1、SSD算法: 是One-stage目标检测算法中的一种,不需要region proposal阶段,可以直接产生物体的类别概率和位置坐标值,经过单词检测即可直接得到最终的检测结果,具有检测速度快的特点。 2...
  • 深度学习-SSD算法

    2021-10-17 14:45:03
    文章目录一、SSD网络结构算法细节 详细解析:https://blog.csdn.net/ytusdc/article/details/86577939 一、SSD网络结构 图1 SSD网络架构(精简版) 图2 SSD网络架构(细节版) 图3 VGG16网络架构 SSD采用VGG16作为...
  • SSD算法简单解析

    2020-05-15 13:25:29
    今天学习SSD目标检测算法SSD,全称Single Shot MultiBox Detector,是2016年提出的算法,今天我们还是老规矩,最简单的做算法解析,力求让像我一样的小白也可以看得懂。 算法初识 1》算法能干什么? 答:可以检测...
  • 前言 目标检测近年来已经取得了很重要的进程,主流算法主要分成两个类型: (1)Two-stage方法:如R-CNN系列算法,其主要思路就是通过...(2)One-stage方法:如YOLO、SSD,其主要思路就是均匀地在图片上不同位置进行
  • 基于VGG网络的SSD算法

    2021-06-09 11:41:15
    与之相对的是 one-stage 检测,可以理解为一步到位,不需要单独寻找候选区域,典型的有SSD/YOLO。 作者:HRain 链接:https://www.jianshu.com/p/468e08f739bd 来源:简书 著作权归作者所有。商业转载请联系作者...
  • 目标检测->SSD算法

    千次阅读 2022-04-24 10:49:12
    目标检测算法总体分为:基于区域的算法和基于回归的算法 1)基于区域的算法: RCNN, Fast RCNN, Faster RCNN, Mask RCNN 等。整个检测过程分为两个阶段。在第一个阶段,检测器需要找到一些假设的区域 (ROI);在第二...
  • 针对目前隧道内的漏缆卡具检测数据量...将改进后的模型应用于隧道漏缆卡具图像的检测,实验结果表明,该方法检测的平均准确率达到了86.6%,检测速度达到了26.6fps,相比于原始SSD算法和MobileNet SSD算法具有明显优势。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,750
精华内容 13,500
关键字:

ssd算法

友情链接: 24-IIC-读写PCF8591.rar