精华内容
下载资源
问答
  • SSD原文分析

    2018-10-24 22:44:18
    SSD 相比较于其他单结构模型(YOLO),SSD 取得更高的精度,即是是在输入图像较小的情况下。如输入   大小的 PASCAL VOC 2007 test 图像,在 Titan X 上,SSD 以 58 帧的速率,同时取得了   的 mAP。 如果...

    转载博客:http://blog.csdn.net/u010167269/article/details/52563573

    Preface

    这是今年 ECCV 2016 的一篇文章,是 UNC Chapel Hill(北卡罗来纳大学教堂山分校) 的 Wei Liu 大神的新作,论文代码:https://github.com/weiliu89/caffe/tree/ssd 

    目前 voc 2012 的榜单 如下: 

    这里写图片描述

    做目标检测这块的多关注哦~


    Abstract

    这篇文章在既保证速度,又要保证精度的情况下,提出了 SSD 物体检测模型,与现在流行的检测模型一样,将检测过程整个成一个 single deep neural network。便于训练与优化,同时提高检测速度。

    SSD 将输出一系列 离散化(discretization) 的 bounding boxes,这些 bounding boxes 是在 不同层次(layers) 上的 feature maps 上生成的,并且有着不同的 aspect ratio

    在 prediction 阶段

    • 要计算出每一个 default box 中的物体,其属于每个类别的可能性,即 score,得分。如对于 PASCAL VOC 数据集,总共有 20 类,那么得出每一个 bounding box 中物体属于这 20 个类别的每一种的可能性。

    • 同时,要对这些 bounding boxes 的 shape 进行微调,以使得其符合物体的 外接矩形

    • 还有就是,为了处理相同物体的不同尺寸的情况,SSD 结合了不同分辨率的 feature maps 的 predictions。

    相对于那些需要 object proposals 的检测模型,本文的 SSD 方法完全取消了 proposals generation、pixel resampling 或者 feature resampling 这些阶段。这样使得 SSD 更容易去优化训练,也更容易地将检测模型融合进系统之中。

    在 PASCAL VOCMS COCOILSVRC 数据集上的实验显示,SSD 在保证精度的同时,其速度要比用 region proposals 的方法要快很多。

    SSD 相比较于其他单结构模型(YOLO),SSD 取得更高的精度,即是是在输入图像较小的情况下。如输入  大小的 PASCAL VOC 2007 test 图像,在 Titan X 上,SSD 以 58 帧的速率,同时取得了  的 mAP。

    如果输入的图像是 ,SSD 则取得了  的 mAP,比目前最 state-of-art 的 Faster R-CNN 要好很多。


    Introduction

    现金流行的 state-of-art 的检测系统大致都是如下步骤,先生成一些假设的 bounding boxes,然后在这些 bounding boxes 中提取特征,之后再经过一个分类器,来判断里面是不是物体,是什么物体。

    这类 pipeline 自从 IJCV 2013, Selective Search for Object Recognition 开始,到如今在 PASCAL VOCMS COCOILSVRC 数据集上取得领先的基于 Faster R-CNN 的 ResNet 。但这类方法对于嵌入式系统,所需要的计算时间太久了,不足以实时的进行检测。当然也有很多工作是朝着实时检测迈进,但目前为止,都是牺牲检测精度来换取时间。

    本文提出的实时检测方法,消除了中间的 bounding boxes、pixel or feature resampling 的过程。虽然本文不是第一篇这样做的文章(YOLO),但是本文做了一些提升性的工作,既保证了速度,也保证了检测精度。

    这里面有一句非常关键的话,基本概括了本文的核心思想:

    Our improvements include using a small convolutional filter to predict object categories and offsets in bounding box locations, using separate predictors (filters) for different aspect ratio detections, and applying these filters to multiple feature maps from the later stages of a network in order to perform detection at multiple scales.

    本文的主要贡献总结如下:

    • 提出了新的物体检测方法:SSD,比原先最快的 YOLO: You Only Look Once 方法,还要快,还要精确。保证速度的同时,其结果的mAP 可与使用 region proposals 技术的方法(如 Faster R-CNN)相媲美。

    • SSD 方法的核心就是 predict object(物体),以及其 归属类别的 score(得分);同时,在 feature map 上使用小的卷积核,去predict 一系列 bounding boxes 的 box offsets

    • 本文中为了得到高精度的检测结果,在不同层次的 feature maps 上去 predict objectbox offsets,同时,还得到不同 aspect ratio的 predictions。

    • 本文的这些改进设计,能够在当输入分辨率较低的图像时,保证检测的精度。同时,这个整体 end-to-end 的设计,训练也变得简单。在检测速度、检测精度之间取得较好的 trade-off

    • 本文提出的模型(model)在不同的数据集上,如 PASCAL VOCMS COCOILSVRC, 都进行了测试。在检测时间(timing)、检测精度(accuracy)上,均与目前物体检测领域 state-of-art 的检测方法进行了比较。


    The Single Shot Detector(SSD)

    这部分详细讲解了 SSD 物体检测框架,以及 SSD 的训练方法。

    这里,先弄清楚下文所说的 default box 以及 feature map cell 是什么。看下图:

    • feature map cell 就是将 feature map 切分成  或者  之后的一个个 格子

    • 而 default box 就是每一个格子上,一系列固定大小的 box,即图中虚线所形成的一系列 boxes。

    这里写图片描述


    Model

    SSD 是基于一个前向传播 CNN 网络,产生一系列 固定大小(fixed-size) 的 bounding boxes,以及每一个 box 中包含物体实例的可能性,即 score。之后,进行一个 非极大值抑制(Non-maximum suppression) 得到最终的 predictions。

    SSD 模型的最开始部分,本文称作 base network,是用于图像分类的标准架构。在 base network 之后,本文添加了额外辅助的网络结构:

    • Multi-scale feature maps for detection 
      在基础网络结构后,添加了额外的卷积层,这些卷积层的大小是逐层递减的,可以在多尺度下进行 predictions。

    • Convolutional predictors for detection 
      每一个添加的特征层(或者在基础网络结构中的特征层),可以使用一系列 convolutional filters,去产生一系列固定大小的 predictions,具体见 Fig.2。对于一个大小为 ,具有  通道的特征层,使用的 convolutional filters 就是  的 kernels。产生的 predictions,那么就是归属类别的一个得分,要么就是相对于 default box coordinate 的 shape offsets。 
      在每一个  的特征图位置上,使用上面的  的 kernel,会产生一个输出值。bounding box offset 值是输出的 default box 与此时 feature map location 之间的相对距离(YOLO 架构则是用一个全连接层来代替这里的卷积层)。

    • Default boxes and aspect ratios 
      每一个 box 相对于与其对应的 feature map cell 的位置是固定的。 在每一个 feature map cell 中,我们要 predict 得到的 box 与default box 之间的 offsets,以及每一个 box 中包含物体的 score(每一个类别概率都要计算出)。 
      因此,对于一个位置上的  个boxes 中的每一个 box,我们需要计算出  个类,每一个类的 score,还有这个 box 相对于 它的默认 box 的 4 个偏移值(offsets)。于是,在 feature map 中的每一个 feature map cell 上,就需要有  个 filters。对于一张 大小的 feature map,即会产生  个输出结果。

    这里的 default box 很类似于 Faster R-CNN 中的 Anchor boxes,关于这里的 Anchor boxes,详细的参见原论文。但是又不同于 Faster R-CNN 中的,本文中的 Anchor boxes 用在了不同分辨率的 feature maps 上。

    这里写图片描述


    Training

    在训练时,本文的 SSD 与那些用 region proposals + pooling 方法的区别是,SSD 训练图像中的 groundtruth 需要赋予到那些固定输出的 boxes 上。在前面也已经提到了,SSD 输出的是事先定义好的,一系列固定大小的 bounding boxes。

    如下图中,狗狗的 groundtruth 是红色的 bounding boxes,但进行 label 标注的时候,要将红色的 groundtruth box 赋予 图(c)中一系列固定输出的 boxes 中的一个,即 图(c)中的红色虚线框。 

    这里写图片描述

    事实上,文章中指出,像这样定义的 groundtruth boxes 不止在本文中用到。在 YOLO 中,在 Faster R-CNN 中的 region proposal 阶段,以及在 MultiBox 中,都用到了。

    当这种将训练图像中的 groundtruth 与固定输出的 boxes 对应之后,就可以 end-to-end 的进行 loss function 的计算以及 back-propagation 的计算更新了。

    训练中会遇到一些问题:

    • 选择一系列 default boxes

    • 选择上文中提到的 scales 的问题

    • hard negative mining

    • 数据增广的策略

    下面会谈本文的解决这些问题的方式,分为以下下面的几个部分。 

    Matching strategy

    如何将 groundtruth boxes 与 default boxes 进行配对,以组成 label 呢?

    在开始的时候,用 MultiBox 中的 best jaccard overlap 来匹配每一个 ground truth box 与 default box,这样就能保证每一个 groundtruth box 与唯一的一个 default box 对应起来。

    但是又不同于 MultiBox ,本文之后又将 default box 与任何的 groundtruth box 配对,只要两者之间的 jaccard overlap 大于一个阈值,这里本文的阈值为 0.5。 

    Training objective

    SSD 训练的目标函数(training objective)源自于 MultiBox 的目标函数,但是本文将其拓展,使其可以处理多个目标类别。用  表示 第  个 default box 与 类别  的 第  个 ground truth box 相匹配,否则若不匹配的话,则 

    根据上面的匹配策略,一定有 ,意味着对于 第  个 ground truth box,有可能有多个 default box 与其相匹配。

    总的目标损失函数(objective loss function)就由 localization loss(loc) 与 confidence loss(conf) 的加权求和: 

    其中:

    •  是与 ground truth box 相匹配的 default boxes 个数

    • localization loss(loc) 是 Fast R-CNN 中 Smooth L1 Loss,用在 predict box( 与 ground truth box( 参数(即中心坐标位置,width、height)中,回归 bounding boxes 的中心位置,以及 width、height

    • confidence loss(conf) 是 Softmax Loss,输入为每一类的置信度 

    • 权重项 ,设置为 1


    Choosing scales and aspect ratios for default boxes

    大部分 CNN 网络在越深的层,feature map 的尺寸(size)会越来越小。这样做不仅仅是为了减少计算与内存的需求,还有个好处就是,最后提取的 feature map 就会有某种程度上的平移与尺度不变性。

    同时为了处理不同尺度的物体,一些文章,如 ICLR 2014, Overfeat: Integrated recognition, localization and detection using convolutional networks,还有 ECCV 2014, Spatial pyramid pooling in deep convolutional networks for visual recognition,他们将图像转换成不同的尺度,将这些图像独立的通过 CNN 网络处理,再将这些不同尺度的图像结果进行综合。

    但是其实,如果使用同一个网络中的、不同层上的 feature maps,也可以达到相同的效果同时在所有物体尺度中共享参数

    之前的工作,如 CVPR 2015, Fully convolutional networks for semantic segmentation,还有 CVPR 2015, Hypercolumns for object segmentation and fine-grained localization 就用了 CNN 前面的 layers,来提高图像分割的效果,因为越底层的 layers,保留的图像细节越多。文章 ICLR 2016, ParseNet: Looking wider to see better 也证明了以上的想法是可行的。

    因此,本文同时使用 lower feature maps、upper feature maps 来 predict detections。下图展示了本文中使用的两种不同尺度的 feature map, 的feature map,以及  的 feature map: 

    这里写图片描述

    一般来说,一个 CNN 网络中不同的 layers 有着不同尺寸的 感受野(receptive fields)。这里的感受野,指的是输出的 feature map 上的一个节点,其对应输入图像上尺寸的大小。具体的感受野的计算,参见两篇 blog:

     

    这里写图片描述


    Hard negative mining

    在生成一系列的 predictions 之后,会产生很多个符合 ground truth box 的 predictions boxes,但同时,不符合 ground truth boxes 也很多,而且这个 negative boxes,远多于 positive boxes。这会造成 negative boxes、positive boxes 之间的不均衡。训练时难以收敛。

    因此,本文采取,先将每一个物体位置上对应 predictions(default boxes)是 negative 的 boxes 进行排序,按照 default boxes 的 confidence 的大小。 选择最高的几个,保证最后 negatives、positives 的比例在 

    本文通过实验发现,这样的比例可以更快的优化,训练也更稳定。 

    Data augmentation

    本文同时对训练数据做了 data augmentation,数据增广。关于数据增广,推荐一篇文章:Must Know Tips/Tricks in Deep Neural Networks,其中的 section 1 就讲了 data augmentation 技术。

    每一张训练图像,随机的进行如下几种选择:

    • 使用原始的图像
    • 采样一个 patch,与物体之间最小的 jaccard overlap 为: 与 
    • 随机的采样一个 patch

    采样的 patch 是原始图像大小比例是 ,aspect ratio 在  与  之间。

    当 groundtruth box 的 中心(center)在采样的 patch 中时,我们保留重叠部分。

    在这些采样步骤之后,每一个采样的 patch 被 resize 到固定的大小,并且以  的概率随机的 水平翻转(horizontally flipped)


    Experimental Results

    Base network and hole filling algorithm

    本文的 Base network 是基于 ICLR 2015, VGG16 来做的,在 ILSVRC CLS-LOC 数据集上进行了预训练。

    与 ICLR 2015, DeepLab-LargeFOV 的工作类似,本文将 VGG 中的 FC6 layer、FC7 layer 转成为 卷积层,并从模型的 FC6、FC7 上的参数,进行采样得到这两个卷积层的 parameters。

    还将 Pool5 layer 的参数,从2*2-s2  转变成 ,外加一个 pad(1),如下图: 

    这里写图片描述

    但是这样变化后,会改变感受野(receptive field)的大小。因此,采用了 atrous algorithm 的技术,这里所谓的 atrous algorithm,我查阅了资料,就是 hole filling algorithm

    在 DeepLab 的主页上:http://liangchiehchen.com/projects/DeepLab.html,有一张如下的图: 

    这里写图片描述

    博客 1:http://www.cnblogs.com/jianyingzhou/p/5386222.html

    最早用的就是 deeplab 的文章了,Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFS 这篇文章和 fcn 不同的是,在最后产生 score map 时,不是进行upsampling,而是采用了 hole algorithm,就是在 pool4 和 pool 5层,步长由 2 变成 1,必然输出的 score map 变大了,但是 receptive field 也变小了,为了不降低 receptive field,怎么做呢?利用 hole algorithm,将卷积 weights 膨胀扩大,即原来卷积核是 3x3,膨胀后,可能变成 7x7 了,这样 receptive field 变大了,而 score map 也很大,即输出变成 dense 的了。

    这么做的好处是,输出的 score map 变大了,即是 dense 的输出了,而且 receptive field 不会变小,而且可以变大。这对做分割、检测等工作非常重要。

    博客 2:http://blog.csdn.net/tangwei2014/article/details/50453334

    既想利用已经训练好的模型进行 fine-tuning,又想改变网络结构得到更加 dense 的 score map.

    这个解决办法就是采用 Hole 算法。如下图 (a) (b) 所示,在以往的卷积或者 pooling 中,一个 filter 中相邻的权重作用在 feature map 上的位置都是物理上连续的。如下图 (c) 所示,为了保证感受野不发生变化,某一层的 stride 由 2 变为 1 以后,后面的层需要采用 hole 算法,具体来讲就是将连续的连接关系是根据 hole size 大小变成 skip 连接的(图 (c) 为了显示方便直接画在本层上了)。不要被 (c) 中的 padding 为 2 吓着了,其实 2 个 padding 不会同时和一个 filter 相连。

    pool4 的 stride 由 2 变为 1,则紧接着的 conv5_1, conv5_2 和 conv5_3 中 hole size 为 2。接着 pool5 由 2 变为 1 , 则后面的 fc6 中 hole size 为 4。 

    这里写图片描述

    本文还将 fully convolutional reduced (atrous) VGGNet 中的所有的 dropout layers、fc8 layer 移除掉了。

    本文在 fine-tuning 预训练的 VGG model 时,初始 learning rate 为 ,momentum 为 ,weight decay 为 ,batch size 为 ,learning rate decay 的策略随数据集的不同而变化。


    PASCAL VOC 2007

    在这个数据集中,与 Fast R-CNNFaster R-CNN 进行了比较,几种检测网络都用相同的训练数据集,以及预训练模型(VGG16)。

    本文训练图像是 VOC 2007 train + VOC 2007 validation + VOC 2012 train + VOC 2012 validation,共计 16551 张图像;

    测试集选取的是 VOC 2007 test,共计 4952 张图像。

    下图展示了 SSD300 model 的结构: 

    这里写图片描述

    我们用 conv4_3conv7(原先的 FC7)conv8_2conv9_2conv10_2,以及 pool11,这些 layer 来 predict location、 confidence

    在 VGG16 上新加的 convolutional layers,其参数初始化都用 JMLR 2010, Understanding the difficulty of training deep feedforward neural networks 提出的 xavier 方法。

    因为 conv4_3 的尺寸比较大,size 为  的大小,我们只在上面放置 3 个 default boxes,一个 box 的 scale 为 ,另外两个 boxes 的 aspect ratio 分别为 。但对于其他的用来做 predictions 的 layers,本文都放了  个 default boxes。

    文献 ICLR 2016, ParseNet: Looking wider to see better 指出,conv4_3 相比较于其他的 layers,有着不同的 feature scale,我们使用ParseNet 中的 L2 normalization 技术将 conv4_3 feature map 中每一个位置的 feature norm scale 到 20,并且在 back-propagation 中学习这个 scale。

    在最开始的 40K 次迭代中,本文使用的 learning rate 是 ,之后将其减小到 ,再接着迭代 20K 次。

    下面 Table 1 显示了,我们的 SSD300 model 的精度已经超过了 Fast R-CNN,当我们用 SSD 在更大的图像尺寸上, 训练得到的 model,甚至要比 Faster R-CNN 还要高出  的 mAP。 

    这里写图片描述

    为了更细节的了解本文的两个 SSD model,我们使用了 ECCV 2012, Diagnosing error in object detectors 的检测分析工具。下图 Figure 3 显示了 SSD 可以高质量的检测不同种类的物体。 

    这里写图片描述

    下图 Figure 4 展示了 SSD 模型对 bounding box 的 size 非常的敏感。也就是说,SSD 对小物体目标较为敏感,在检测小物体目标上表现较差。其实这也算情理之中,因为对于小目标而言,经过多层卷积之后,就没剩多少信息了。虽然提高输入图像的 size 可以提高对小目标的检测效果,但是对于小目标检测问题,还是有很多提升空间的。

    同时,积极的看,SSD 对大目标检测效果非常好。同时,因为本文使用了不同 aspect ratios 的 default boxes,SSD 对于不同 aspect ratios 的物体检测效果也很好。 

    这里写图片描述


    Model analysis

    为了更好的理解 SSD,本文还使用控制变量法来验证 SSD 中的每一部分对最终结果性能的影响。测试如下表 Table 2 所示: 

    这里写图片描述

    从上表可以看出一下几点:

    • 数据增广(Data augmentation)对于结果的提升非常明显 
      Fast R-CNN 与 Faster R-CNN 使用原始图像,以及 0.5 的概率对原始图像进行水平翻转(horizontal flip),进行训练。如上面写的,本文还使用了额外的 sampling 策略,YOLO 中还使用了 亮度扭曲(photometric distortions),但是本文中没有使用。 
      做了数据增广,将 mAP 从  提升到了 ,提升了 。 
      我们还不清楚,本文的 sampling 策略会对 Fast R-CNN、Faster R-CNN 有多少好处。但是估计不会很多,因为 Fast R-CNN、Faster R-CNN 使用了 feature pooling,这比人为的对数据进行增广扩充,还要更 robust。

    • 使用更多的 feature maps 对结果提升更大 
      类似于 FCN,使用含图像信息更多的低 layer 来提升图像分割效果。我们也使用了 lower layer feature maps 来进行 predict bounding boxes。 
      我们比较了,当 SSD 不使用 conv4_3 来 predict boxes 的结果。当不使用 conv4_3,mAP 下降到了 。 
      可以看见,低层的 feature map 蕴含更多的信息,对于图像分割、物体检测性能提升帮助很大的。

    • 使用更多的 default boxes,结果也越好 
      如 Table 2 所示,SSD 中我们默认使用 6 个 default boxes(除了 conv4_3 因为大小问题使用了 3 个 default boxes)。如果将 aspect ratios 为  的 boxes 移除,performance 下降了 。如果再进一步的,将  的 default boxes 移除,那么 performance 下降了近 

    • Atrous 使得 SSD 又好又快 
      如前面所描述,我们根据 ICLR 2015, DeepLab-LargeFOV,使用结合 atrous algorithm 的 VGG16 版本。 
      如果我们使用原始的 VGG16 版本,即保留 pool5 的参数为:,且不从 FC6,FC7 上采集 parameters,同时添加 conv5_3 来做 prediction,结果反而会下降 。同时最关键的,速度慢了 


    PASCAL VOC 2012

    本文又在 VOC 2012 test 上进行的实验,比较结果如下: 

    这里写图片描述


    MS COCO

    为了进一步的验证本文的 SSD 模型,我们将 SSD300、SSD500 在 MS COCO 数据集上进行训练检测。

    因为 COCO 数据集中的检测目标更小,我们在所有的 layers 上,使用更小的 default boxes。

    这里,还跟 ION 检测方法 进行了比较。

    总的结果如下: 

    这里写图片描述


    Inference time

    本文的方法一开始会生成大量的 bounding boxes,所以有必要用 Non-maximum suppression(NMS)来去除大量重复的 boxes。

    通过设置 confidence 的阈值为 ,我们可以过滤掉大多数的 boxes。

    之后,我们再用 Thrust CUDA library 进行排序,用 GPU 版本的实现来计算剩下的 boxes 两两之间的 overlap。然后,进行 NMS,每一张图像保留 top 200 detections。这一步 SSD300 在 VOC 20 类的每张图像上,需要耗时 

    下面是在 PASCAL VOC 2007 test 上的速度统计: 

    这里写图片描述
    展开全文
  • http://lib.csdn.net/article/deeplearning/53059 中文详解 http://ju.outofmemory.cn/entry/330832 代码流程解析
    展开全文
  • SSD 论文原文完整翻译

    2019-06-21 10:04:18
    我们的方法名字为SSD,将每个特征图的边界框的输出空间离散化为不同长宽比与不同大小的一组默认框。在预测时,网络会在每个默认框中为每个目标类别的出现生成置信度得分,并对框进行调整以更好地匹配目标形状。此外...

    翻译一下ssd

    文章翻译来自:arxiv.org/pdf/1512.0232

    SSD:单次检测器

    摘要:我们提出了一种使用单个深度神经网络来检测图像中的目标的方法。我们的方法名字为SSD,将每个特征图的边界框的输出空间离散化为不同长宽比与不同大小的一组默认框。在预测时,网络会在每个默认框中为每个目标类别的出现生成置信度得分,并对框进行调整以更好地匹配目标形状。此外,网络还结合了不同分辨率的多个特征映射的预测,自然地处理各种尺寸的目标。相对于需要生成先验框的方法,SSD非常简单,因为它完全消除了提出生成和随后的像素或特征重新采样阶段,并将所有计算封装到单个网络中。这使得SSD易于训练和直接集成到目标检测系统中。PASCAL VOC,COCO和ILSVRC数据集上的实验结果证实,SSD对于利用额外的目标建议(object proposal)的方法具有竞争性的准确性,并且速度更快,同时为训练和预测提供了统一的框架。对于300×300的输入,SSD在VOC2007测试中以59FPS的速度在Nvidia Titan X上达到74.3%74.3%的mAP,对于512×512的输入,SSD达到了76.9%76.9%的mAP,优于目前为止最先进的Faster R-CNN模型。与其他一步法目标检测算法相比,即使输入图像尺寸较小,SSD也具有更高的精度,代码实现:github.com/weiliu89/caf


    1. 引言

    现有的物体检测系统是下面方法的变种:边界框的假设,对每个框进行像素和特征的重采样,使用高质量的分类器。这种流程在目标检测数据集与挑战赛(benchmark)上很盛行,因为采用选择性搜索[1](Selective Search )方法搜索PASCAL VOC,MSCOCO和ILSVRC的检测结果,取得领先结果的是具有如[3]所述的更深的特征的Faster R-CNN[2]。尽管准确,这些方法对于嵌入式系统来说计算量过大,即便对高端硬件来说,对实时的应用来说太慢了。 这些方法的检测速度通常以帧每秒为单位进行测量,即使是最快的高精度检测器——Faster R-CNN,也只能达到最快仅7帧每秒(FPS)的速度运行。大量的工作已经试图通过调整处理(attack)检测流程的各个阶段(参见第4节的相关工作)创造更快的检测器,,但到目前为止,明显的速度增长只能以显著的检测精度的下降为代价。

    本文提出了第一个无需对边界框的像素或特征重取样也能保持与这种方法准确度相当的基于深度网络的物体检测器。它带来了高精度的检测同时速度获得明显的提升(在VOC2007测试集上, 速度为58 FPS, mAP是72.1%,而Faster R-CNN 速度为7 FPS ,mAP 为73.2%,YOLO 的速度为45 FPS ,mAP为 63.4%)。速度的根本性提升来源于消除候选边界框(box proposal)和之后的像素或特征重采样的步骤。我们不是第一个这么做的人(参考 [4,5]),但是通过添加一系列的改进措施,与先前人们的工作相比,我们成功的把精度大幅度提升。我们的改进点包括使用小的卷积滤波器预测边界框中的物体类别和偏移量(offset),为不同长宽比的检测配置不同的检测器(filter),并且将这些滤波器应用于网络后期的多个特征图,以便进行多尺度检测。通过这些修正,特别是使用多个层进行不同尺度大小的预测,我们以相对低分辨率的输入实现了高精度的检测,同时更大的提高检测速度。 虽然这些贡献单独看起来可能微小,我们解释系统的结果在PASCAL VOC上做实时检测,准确率从yolo的63.4%提上到我们ssd的74.3%。与近期的使用残差网络的卓越工作成果相比,我们的工作在检测精度上有相对大的进步 [3]。 而且,高精度检测器的速度的提高可以拓宽应用计算机视觉技术的设备的范围。

    我们总结我们的贡献如下:

    1. 我们介绍的SSD是一个能一次性检测多类物体检测器,比现在最先进的单步检测器(YOLO)更快更精确,事实上,它的精度相当于一些使用了候选区域和池化的慢速的算法(包括Faster R-CNN)。
    2. SSD方法的核心是在特征图上使用小卷积滤波器,预测固定的一组默认边界框的类别得分和位置偏移量。
    3. 为了获得高精度的检测,我们在不同尺寸的特征图上产生出不同尺度的预测,并且通过长宽比来明确地区分预测。
    4. 这些设计特性实现了简单的端到端训练,而且即便使用低分辨率的输入图像时也能得到高的精度,进一步提高了速度与精度的权衡,。
    5. 在PASCAL VOC,MS COCO和ILSVRC上实验并评估分析不同输入大小下模型的耗时和精度,并与一系列最先进的算法进行比较

    2.单步检测器(ssd)

    这一节介绍我们提出的目标检测SSD框架(2.1节),相关的训练策略(2.2节),提出特定数据集模型的细节和实验结果(2.3节)。

    2.1 模型

    SSD方法基于前馈卷积网络,生成固定大小的边界框集和这些框中存在物体类别的置信度,接着使用非最大化抑制产生最终的检测结果。位于网络前面的一些层是基于做高质量图像分类的标准架构(截取该框架分类层之前的层),我们将其称为基础网络。然后,我们向网络添加辅助结构来利用下边的主要特征来生成感知器:

    多尺度特征图检测:我们将卷积特征层添加到截断了的基础网络的尾端。这些层的尺寸逐渐减小并且允许多尺度的预测。用于检测的卷积模型对于每个特征层是不同的(而Overfeat [4]和YOLO[5]是在单个尺度特征图上操作的。

    用于检测的卷积预测器:每个添加的特征层(或者基础网络的特征层)使用一系列卷积滤波器(filter)可以产生一系列固定的预测。这些在图2中SSD网络架构已指出。对于p通道大小为m*n的特征层,对于一个可能的检测,它的预测参数的基本元素是一个3*3*p的核,这个核产生决定每个类别的置信度或生成相对于默认框坐标的偏移量。在m*n的特征图的每个位置均应用这个卷积核,各自产生一个输出值。边界框偏移输出值与默认框相关,而默认框位置又是与每个特征图的位置相关(参见YOLO [5]的架构,它在这个步骤使用全连接层而不是卷积滤波器)

    默认框与宽高比:我们为网络顶部的多个特征图的每个特征单元都关联固定的一组默认框。默认框以卷积形式作用于特征图,使得每个框相对于其对应的单元格的位置是固定的。我们为每个特征图单元预测相对于该单元格的默认框的偏移量,以及为每个类别预测反映框中该物体类别存在的置信度得分。具体来说,对于一个给定的位置的k个框中的每个框,我们都计算c个类的分数和相对于原始默认框的4个偏移值。这样致使总共有(c+4)k个滤波器作用于特征图中的每个位置,若特征图的大小为m*n,则会产生(c+4)*k*m*n个输出。有关默认框的说明,请参考图1。我们的默认框类似于Faster R-CNN [2]中使用的锚检查框(anchor boxes),但不同的是,我们将其应用于几个不同分辨率的特征图。在多个特征图上使用不同形状的默认框,致使有效地离散可能的输出框的形状的空间。

    2.2 训练

    训练SSD和训练使用区域候选框(region proposal)的典型分类器的主要不同点在于,真实标签需要被分配到固定的一组检测器输出中的某个特定的输出。YOLO [5]的训练阶段,Faster R-CNN [2]和MultiBox [7]的region proposal阶段也需要类似这样的操作。一旦把真实标签分配好,损失函数和反向传播就能端对端地应用。训练还包括选择一系列的默认框和用于检测的特征图尺度,以及难分样本挖掘(hard negative mining)和数据增强策略

    匹配策略:在训练时,我们需要确定哪些默认框和哪个真实标签框关联,然后据此进行训练。对于每个真实标签框,我们选择一些位置、长宽比和吃尺寸大小都不同的默认框。开始时,我们把每个真实标签框与默认框中与之具有最佳的雅可比重叠值(best jaccard overlap )(跟MultiBox [7]的方法一样)的框匹配。与MultiBox不同的是,我们之后又将默认框与所有的真实标签框( ground truth box) 配对,只要两者之间的雅可比重叠值(jaccard overlap) 大于某个阈值(本文的阈值为 0.5)。 这样做简化了学习问题,它使得网络能够为多个重叠的默认框预测高的置信度,而不是要求它只选择具有最大重叠值的那个框。

    训练目标:SSD训练的目标函数从MultiBox[7,8]中导出,但它进一步扩展到处理多个物体类别。

    v2-3610bbe3f41fdea56619abbdaa3632cf_b.jpg

    成为一个指示第i个默认框与类别p的第j个真实标签框的匹配指示器。根据上述的匹配策略,我们可以得到

    v2-0b09e32f060eec7a273ba5e396dd0d7f_b.jpg

    ,整体的目标损失函数是一个位置损失与置信度损失的加权和:


    v2-824da2b580485a29de0e901d7eb0aeb7_b.jpg


    其中,N是匹配的默认框的数目,如果N=0,我们把loss设为0,位置损失是smooth l1 loss,这是一个介于预测框与真实框之间的参数,类似于faster r-cnn我们将对默认框的中心与框的长宽进行回归。


    v2-44ef01de96872977159504afc1d5b5ce_b.jpg


    置信度损失是softmax 多类别分类损失函数


    v2-dce6e0d0ceca402476e70823375422f7_b.jpg


    选择默认框的比例和宽高比:为了处理多个尺寸的物体,有些算法[4,9]提议处理具有不同尺寸的多张图片,然后把结果综合起来。但是用一个网络的不同层的特征图,也可以得到类似的效果,同时让所有不同尺寸的物体间能共享参数。之前的工作[10,11]已经表明使用较低层的特征图可以提高语义分割的质量,因为较低层能捕获到输入目标的更精细的细节。类似地,[12]指出,增加特征图的全局上下文池化有助于平滑分割结果。受这些方法启发,我们既用低层也用高层的特征图进行检测预测。图1展现了框架中使用的两个特征图(8×8和4×4)实例。在实践中,我们可以使用更多计算开销小的特征图。

    通常网络中不同层次的特征图具有不同大小的感受野[13]。幸运的是,对于SSD框架,默认框不需要与每层的实际感受野对应。我们可以设计默认框的平铺(tiling),使得特定的特征图学习响应特定的物体尺度。假设我们要使用m个特征图做预测。每个特征图的默认框的尺寸可用下式计算:


    v2-b6e199ca6dd69604ce71468723dda66a_b.jpg


    其中Smin是0.2,Smax是0.9,意味着最底层是0.2,最高层是0.9,期间所有的层按规律递增,我们为默认的bbox应用了不同的长宽比,标记为

    v2-b6d8f4d6a8b45da45e8e738ec657c5a0_b.jpg

    {1,2,3,0.5,0.3333},我们可以计算每个默认的bbox的长度与宽度

    v2-c85a751eadecd588ef009938da85a8aa_b.jpg

    v2-091c06bafa68774bf654cfefac506cfd_b.jpg

    ,对于长宽比为1的,我们也加了一个默认的bbox,尺度为

    v2-b1c6b8c9282340fc2a4cc7b1688e6837_b.jpg

    ,特征图的每个位置有6个默认的box,我们设置每个bbox的中心为

    v2-1244157b9e02031da7e8c90c1493a8c1_b.jpg

    其中|Fk|是第k个特征图的尺寸,在实际中,为了适应特定的数据集,大家也可以设置不同尺寸与长宽比的默认框,如何最优的设计这些也是一个开放的问题。

    通过组合多个特征图在所有位置的不同尺寸和长宽比的所有默认框的预测,我们得到涵盖各种输入物体尺寸和形状的多样性的预测集。例如,图 1中的狗被匹配到4×4特征图中的某个默认框,但没有匹配到8×8特征图中的任何默认框。这是因为那些框具有不同的尺度,但都与狗的框不匹配,因此在训练期间这些框被认为是负的。

    难分样本挖掘 :在匹配步骤后,大多数默认框都是负的,特别是当可能的默认框数量很大时。这导致了正负训练样本的严重不平衡。我们没有使用所有的负样本,而是先把负样本根据置信度损失进行从大到小排序,然后为每个默认框只选择分值最高的那些样本,这样做的目的是使得正负样本的比例不超过1:3. 我们发现这样还可以使得优化更快,训练更平稳

    数据增强:为了使模型对不同大小、形状的输入目标更具鲁棒性,对每个图像通过随机采取以下策略之一进行采样:

    1. 使用整张原始输入图像
    2. 采样一个片段,使得与目标物体的最小的雅可比重叠为0.1,0.3,0.5,0.7,0.9之一。
    3. 随机采样一个部分


    每个采样部分的大小为原图的[0.1,1],长宽比在1/2和2之间。如果真实标签框的中心位于采样部分内,则保留重叠部分。在上述采样步骤之后,将每个采样片大小调整为固定大小,并以0.5的概率进行水平翻转,还有对图片做一些跟[14]所描述的光度扭曲的操作。

    3 实验结果

    基础网络 我们的实验基于在imagenet预训练的VGG16,与DeepLab-LargeFOV类似,我们也将fc6与fc7转换为卷积层,来自fc6与fc7的下采样参数,改变pool5为步长为2的卷积层,并且使用空洞卷积算法去填充空洞,一处所有的dropout操作,利用sgd进行fine-tune,初始的学习率为0.001,0.9momentum,0.0005的权重衰减,batch_size为32,学习率的下降策略每个数据集稍有不同,下文介绍:

    3.1 PASCAL VOC2007

    在这个数据集上,我们对比Fast R-CNN [6]和Faster R-CNN [2]在VOC2007的测试集(4952张图像)的结果。所有方法都是在相同的VGG16网络的预训练模型上微调的。

    图2展示了SSD300模型的架构细节。我们使用conv4_3,conv7(fc7),conv8_2,conv9_2,conv10_2和pool11来预测位置和置信度(对SSD500模型,额外增加了conv11_2用于预测),用“xavier”方法初始化所有新添加的卷积层的参数[18]。对于conv4_3、 conv10_2、 conv11_2的大我们只在其上放置4个默认框 :长宽比为0.3333与3。对于所有其他层,我们设置6个默认框,如第 2.2节。如[12]中所指出的,由于conv4_3与其他层相比具有不同的特征尺度,我们使用[12]中引入的L2正则化技术,将特征图中每个位置处的特征范数缩放为20,并在反向传播期间学习比例。我们使用0.001学习速率进行40k次迭代,然后继续分别以0.0001和0.00001的学习率训练10k次。表1显示,我们的SSD300模型已经比Fast R-CNN更准确。当以更大的500×500输入图像训练SSD,结果更准确,甚至惊人的超过了Faster R-CNN 1.9% mAP。如果我们使用更多的数据来训练ssd,我们可以看到ssd300比faster rcnn好1.1%,ssd512好3.6%,模型在coco数据集上训练,然后在voc数据集及逆行fine-tune,准确率可以达到81.6%。

    为了更详细地了解我们的两个SSD模型的性能,我们使用来自[21]的检测分析工具。图3显示SSD可以高质量检测(大、白色区域)各种目标类别。它的大部分置信度高的检测是正确的。召回率在85-90%左右,并且比“弱”(0.1 jaccard重叠)标准高得多。与R-CNN [20]相比,SSD具有较少的定位误差,表明SSD可以更好地定位目标,因为它直接回归目标形状和分类目标类别,而不是使用两个去耦步骤。然而,SSD对相似目标类别(尤其是动物)有更多的混淆,部分是因为多个类别分享了位置。图4显示SSD对边界框尺寸非常敏感。换句话说,它对较小的目标比较大的目标具有更差的性能。这毫不意外,因为小目标在最顶层可能没有任何信息保留下来。增加输入尺寸(例如从300×300到500×500)可以帮助改善检测小目标,但是仍然有很大改进空间。积极的一面是,我们可以清楚地看到SSD在大目标上表现很好。并且对于不同的目标宽高比非常鲁棒,因为我们对每个特征图位置使用各种宽高比的默认框。

    3.2 模型分析

    为了更好的理解SSD,我们进行了几个控制的实验来检测每一个部分如何影响整个模型的表现。更多的实验,我们使用了相同的设置,输入图片均为300*300,除了某些特殊的改变或者内容。

    数据增广是关键。 Fast和Faster R-CNN在训练时使用原始图像和水平翻转图像。我们使用更广泛的采样策略,类似于YOLO [5],表2显示,我们可以用这个抽样策略提高8.8%的mAP。我们不知道我们的采样策略将对Fast和Faster R-CNN提升多少,但可能效果不大,因为他们在分类期间使用了特征池化,比人为设置更鲁棒

    更多默认框形状性能更好 如第2.2节所述,默认情况下,每个位置使用6个默认框。如果我们删除具有1/3和3宽高比的框,性能下降0.9%。通过进一步移除1/2和2宽高比的框,性能再下降2.1%。使用多种默认框形状似乎使网络预测任务更容易。

    Atrous算法更好更快 如第3节所述,我们使用了VGG16的atrous版本,遵循DeepLabLargeFOV[16]。如果我们使用完整的VGG16,保持pool5与2×2-s2,并且不从fc6和fc7的采集参数,添加conv5_3,结果稍差(0.7%),而速度减慢大约20%。

    多个不同分辨率的输出层更好 ssd的主要的贡献就是利用不同尺度的特征图,为了评估这个预测的优点,我们移除了这些层并且对比结果,为了更加公平的对比,我们每次移除一层,调整默认狂的数目保证总体不变(8732),如果需要的话,通过堆叠更多不同大小的框来实现。表3显示更少的层准确率会下降,从72.3%下降到62.4%,当我们堆叠不同大小的框在某一层上时,可能边界需要谨慎的处理,我们尝试使用faster rcnn中的策略,忽略边界上的框,我们看到了一些有趣的趋势,如果我们用特别粗糙的特征图,表现力会下降,可能由于我们没有足够大的框来覆盖较大的物体,当我们用更加精细的特征图时,网络的表现开始上升,,如果我们仅仅用conv7预测,表现时最差的,更加确定了这个信息,传播不同尺度的box通过不同的特征图是非常关键的。由于我们的预测不依赖于roi pooling 因而我们没有遇到collapsing bin的问题。Ssd架构利用不同尺度的特征图混合来实现具有竞争性的结果对比faster rcnn,它是使用低分辨率的图像。

    3.3 PASCAL VOC2012

    我们采用和VOC2007上一样的设置,这次,用VOC2012的训练验证集和VOC2007的训练验证集、测试集(21503张图像)训练,在VOC2012测试集(10991张图像)测试。由于有了更多的训练数据,模型训练时以学习率 0.001进行60K次迭代,再减小到 0.0001继续迭代20K次。表4显示了SSD300和SSD512模型的结果。我们看到与我们在VOC2007测试中观察到的相同的性能趋势。我们的SSD300已经优于Fast R-CNN与faster rcnn。通过将训练和测试图像大小增加到512×512,我们比Faster R-CNN高4.5%。与YOLO相比,SSD显著更好,可能是由于使用来自多个特征图的卷积默认框和训练期间的匹配策略,当利用coco训练好的模型进行微调时,ssd512实现80.0%的map,比faster rcnn高出4.2%。

    3.4 COCO

    为了进一步验证SSD架构,我们在COCO数据集上训练了我们的SSD300和SSD512模型。由于COCO中的目标往往较小,因此我们对所有图层使用较小的默认框。我们遵循第2.2节中提到的策略,但是现在我们最小的默认框具有0.15而不是0.2的缩放比例,并且conv4_3上默认框的缩放比例是0.07(例如,对应于300×300图像的21个像素)。

    我们使用trainval35k [21]来训练我们的模型。由于COCO有更多的目标类别,开始时的梯度不稳定。我们首先用0.001学习率进行140K次迭代,再以 0.0001学习率迭代40K次,跟着是 0.00001学习率迭代40k次。表4显示了test-dev2015上的结果。与我们在PASCAL VOC数据集上观察到的类似,SSD300在mAP@0.5和mAP@[0.5:0.95]中优于Fast R-CNN,在 mAP @ [0.5:0.95]与Faster R-CNN接近。然而,mAP@0.5更糟,我们推测,这是因为图像尺寸太小,这阻止了模型精确定位许多小目标。通过将图像大小增加到512×512,我们的SSD512在两个标准中都优于Faster R-CNN。 有趣的是,注意到ssd512 比faster rcnn在mAP@0.75 高5.3%,在mAP@0.5 仅仅高出1.2%,对于较大的物体有更高的AP与AR,但是对于小物体有相对较小的提升。 对比IOU,在较大物体与较小物体上AR提升更加相似。我们猜想faster rcnn在小物体上更加有竞争力,因为它存在两步box的提炼操作。图五显示了我们ssd512模型的感知示例。

    3.5 ILSVRC的最初结果

    我们将我们用于MS COCO的相同的网络架构应用于ILSVRC DET数据集[16]。我们使用ILSVRC2014 DET train和val1来训练SSD300模型[22],我们首先以0.001的学习率迭代320K次训练模型,然后用0.0001进行80k次迭代和0.00001继续训练40k次迭代。我们可以在val2集上实现43.4mAP[20]。再一次的,它验证SSD是高质量实时检测的一般框架。

    3.6 小没有目标准确率的数据增广

    在 faster rcnn中没有连续采样的步骤,对于小目标的分类任务对ssd来说相对难度较大,在2.2节中的数据增广策略对于提升网络的表现力有很大的帮助,特别是对于小数据集,随机裁剪生成策略可以被考虑为“近景拍摄”可以生成更大的训练样本,远景拍摄可以生成更多小的训练样本,我们先放一张图是原始图像的16倍大小在我们做随机裁剪之前充满了均值图像,通过数据增广,我们有了更多的训练图像,我们必须使我们训练迭代次数为原始的二倍,我们会注意到一个持续的增长map2%到3%。特别的图6显示了新的增广策略主要提升在小目标上的准确率。这个结果为进行数据增广后模型的最终结果准确率。

    一个可以选择的提升ssd模型的策略就是设计更好的默认框的并列显示,为了框的位置和大小可以更好的与每个位置的感受野相一致,这是未来的工作。

    3.7 推理阶段

    考虑到从我们的方法生成的大量框,在推理阶段需要高效地执行非最大抑制(nms)。通过使用0.01的置信度阈值,我们可以过滤掉大多数框。然后,对jaccard重叠为0.45的每个类应用nms,并保存每个图像的前200个检测。对于20个VOC类别的SSD300,每个图像该步花费大约2.2毫秒,这接近在所有新添加的层上花费的总时间。

    表7显示了SSD、Faster R-CNN[2]和YOLO [5]之间的比较。Ssd300与ssd512在准确率与速度上均超出了faster rcnn,尽管YOLO可以达到155FPS,但是他有但是他的准确率比我们的方法低了22%左右,ssd是第一个超过70%的实时检查测方法,几乎80%的时间是消耗在基础网络上,因此用更快的基础网络可以实现提升速度,这也可能会令ssd512达到实时的检测速度。

    4 相关工作

    目前有两种已建立的用于图像中目标检测的方法,一种基于滑动窗口,另一种基于region proposal分类。在卷积神经网络出现之前,用于检测的两种方法DeformablePart Model(DPM)[22]和选择性搜索[1]性能接近。然而,在R-CNN[20]带来的显着改进之后,其结合了选择性搜索region proposal和基于卷积网络的后分类,region proposal目标检测方法变得普遍。

    原始的R-CNN方法已经以各种方式进行了改进。第一组方法提高了后分类的质量和速度,因为它需要对成千上万的图像作物进行分类,这是昂贵和耗时的。SPPnet[9]对原始的R-CNN方法大大提速。它引入了空间金字塔池化层,其对区域大小和尺度更加鲁棒,并且允许分类层重用在若干图像分辨率生成的特征图特征。Fast R-CNN[6]扩展了SPPnet,使得它可以通过最小化置信度和边界框回归的损失来对所有层进行端对端微调,这在MultiBox[7]中首次引入用于学习目标。

    第二组方法使用深层神经网络提高proposal生成的质量。在最近的研究文献中,例如MultiBox[7,8],基于低层图像特征的选择性搜索region proposal被直接从单独的深层神经网络生成的proposal所替代。这进一步提高了检测精度,但是导致了一些复杂的设置,需要训练两个神经网络及其之间的依赖。Faster R-CNN[2]通过从region proposal网络(RPN)中学习的方案替换了选择性搜索proposal,并且引入了通过微调共享卷积层和两个网络的预测层之间交替来集成RPN与Fast R-CNN的方法。用这种方式region proposal池化中层特征图,最终分类步骤更快速。我们的SSD与Faster R-CNN中的region proposal网络(RPN)非常相似,因为我们还使用固定的(默认)框来进行预测,类似于RPN中的achor框。但是,不是使用这些来池化特征和评估另一个分类器,我们同时在每个框中为每个目标类别产生一个分数。因此,我们的方法避免了将RPN与Fast R-CNN合并的复杂性,并且更容易训练,更易于集成到其他任务中。

    另一组方法与我们的方法直接相关,完全跳过proposal步骤,直接预测多个类别的边界框和置信度。 OverFeat[4]是滑动窗口方法的深度版本,在知道基础目标类别的置信度之后直接从最顶层特征图的每个位置预测边界框。YOLO [5]使用整个最高层特征图来预测多个类别和边界框(这些类别共享)的置信度。我们的SSD方法属于此类别,因为我们没有生成候选框的步骤,但使用默认框。然而,我们的方法比现有方法更灵活,因为我们可以在不同尺度的多个特征图中的每个特征位置上使用不同长宽比的默认框。如果顶层特征图每个位置只使用一个默认框,我们的SSD将具有与OverFeat[4]类似的架构;如果我们使用整个顶层特征图并且添加一个全连接层用于预测而不是我们的卷积预测器,并且没有明确考虑多个宽高比,我们可以近似地再现YOLO[5]。

    5 总结

    本文介绍了SSD,一种用于多个类别的快速单次目标检测器。我们的模型的一个关键特点是使用多尺度卷积边界框输出附加到网络顶部的多个特征图。这种表示允许我们有效地模拟可能的框形状空间。我们实验验证,给定适当的训练策略,更大量的仔细选择的默认边界框得到了性能的提高。我们建立SSD模型,与现有方法[5,7]相比,至少相差一个数量级的框预测位置,尺度和长宽比。我们证明,给定相同的VGG-16基础架构,SSD在精度和速度方面胜过最先进的目标检测器。我们的SSD512模型在PASCAL VOC和MS COCO的精度方面明显优于最先进的Faster R-CNN [2],速度快了3倍。 我们的实时SSD300模型运行在58 FPS,这比当前的实时YOLO[5]更快,同时有显著高质量的检测。

    除了用于独立实用程序,我们相信,我们的完整和相对简单的SSD模型为使用目标检测组件的大型系统提供了一个伟大的组成块。一个有希望的未来方向,是探索其作为使用循环神经网络的系统一部分,用以检测和跟踪视频中目标。

    6感谢

    展开全文
  • SSD:Single Shot MultiBox Detector 英文原文和中文翻译版,希望对大家有帮助
  • 之前搜集的基于SSD目标检测结构的改进论文英文原文,看过的大佬不必在意,如果需要进行相关文档而不愿意费力去找的可以直接下载。
  • 基于SSD网络做的交通标志识别,实现了stop和pedestrian crossing的识别,前置网络由SSD原文的VGG改为了Alexnet 模型权重文件下载 首先需要下载作者训练好的权重文件(需要合理上网才可以下载),直接放到根目录即可...

    github链接:https://github.com/georgesung/ssd_tensorflow_traffic_sign_detection、
    基于SSD网络做的交通标志识别,实现了stop和pedestrian crossing的识别,前置网络由SSD原文的VGG改为了Alexnet

    模型权重文件下载

    首先需要下载作者训练好的权重文件(需要合理上网才可以下载),直接放到根目录即可(直接将后缀为 .ckpt的三个checkpoints文件放到download下来的项目文件ssd_tensorflow_traffic_sign_detection-master文件下即可)

    【tensorflow_error】‘module’ has no attribute ‘select’ 问题

    这个是由于TensorFlow 版本API发生变化引起,直接将model.py文件中的tf.select
    改为tf.where即可解决

    python TypeError: Expected int32, got list containing Tensors of type ‘_Message’ instead.

    tensorflow1.0及以后api定义:(数字在后,tensors在前)
    需要将 tf.concat() 中的 数字tensor元素对调即可解决

    如果有缺少包问题报错直接pip安装解决

    展开全文
  • SSD模型详解

    万次阅读 2019-08-23 11:02:04
    ssd论文原文: https://arxiv.org/pdf/1512.02325.pdf 参考代码 https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/ssd https://github.com/amdegroot/ssd.pytorch SSD网络总体描述 网络组成...
  • SSD学习笔记

    2020-02-06 09:39:22
    请去我的知乎原文地址:SSD学习笔记 开篇之前,贴一个很好的非常全面的SSD笔记: 深度学习笔记(七)SSD 论文阅读笔记www.cnblogs.com 还有一个SSD300的pytorch实现: ...
  • SSD理解

    2019-06-28 13:24:18
    原文: https://blog.csdn.net/u010167269/article/details/52563573 Preface 这是今年 ECCV 2016 的一篇文章,是 UNC Chapel Hill(北卡罗来纳大学教堂山分校) 的 Wei Liu 大神的新作,论文代码:...
  • SSD编程

    2015-09-24 23:29:43
    原文链接:点击打开链接 翻
  • SSD300是唯一的可以实现超过70%mAP的实时检测方法。通过使用大输入图像,在保持接近实时速度的同时,SSD512在精度上优于所有方法。4、相关工作目前有两种已建立的用于图像中对象检测的方法,一种基于滑动窗口,另一...
  • SSD论文笔记

    2019-07-08 09:04:34
    论文原文
  • ** 英文版论文原文:...SSD: Single Shot MultiBox Detector Wei Liu,Dragomir Anguelov ,Dumitru Erhan ,Christian Szegedy ,Scott Reed ,Cheng-Yang Fu & Alexander C. Berg UNC...
  • keras实现SSD源码

    千次阅读 2018-06-11 15:38:02
    算法原文SSD: Single Shot MultiBox Detector SSD 算法详解https://blog.csdn.net/remanented/article/details/79943418SSD算法详解 及其 keras实现 https://blog.csdn.net/remanented/article/details/79958942...
  • ssd 环境配置

    2017-06-15 11:23:53
    ssd环境配置有好多坑。因为要编译pycaffe需要自己修改makefile.config的代码 主要是因为之前只用了anaconda3,编译pycaffe之后,版本不太兼容()。 这里是caffe官网的原文 Caffe’s Python interface works with...
  • SSD源码阅读二

    2020-02-21 16:28:16
    原文链接:http://www.chenjianqu.com/show-92.html 上篇博客<SSD源码阅读一>阅读了ssd.pytorch项目的部分代码,包括包括数据集、数据增强和构建网络结构的部分。在模型类class SSD(nn.Module)中,构造函数...
  • SSD源码阅读一

    2020-02-21 16:26:09
    原文链接:http://www.chenjianqu.com/show-91.html 上一篇博客读了SSD的论文<SSD论文笔记>,原作者是在Caffe上实现,但是我对这个框架不太熟悉,因此找大佬们在Pytorch上的实现:...
  • 配置caffe-SSD

    千次阅读 2017-11-02 17:43:13
    原文链接:http://blog.csdn.net/u014696921/article/details/53138327 SSD的安装 在home目录下,获取SSD的代码,下载完成后有一个caffe文件夹 git clone https://github.com/weiliu89/caffe.git cd caffe ...
  • SSD(Single Shot MultiBox Detector)原文分享摘要我们提出了一种使用单个深层神经网络检测图像中目标的方法。我们的方法,名为SSD,将边界框的输出空间离散化为一组默认框,该默认框在每个特征图位置有不同的宽高比...
  • SSD论文原文,内容真实,排版正规,视觉效果良好。算法初步介绍,希望可以帮助你学习,推广机器视觉。
  • 目标检测方法——SSD

    2018-11-12 11:19:24
    原文链接:点击打开链接1 SSD基础原理1.1 SSD网络结构SSD使用VGG-16-Atrous作为基础网络,其中黄色部分为在VGG-16基础网络上填加的特征提取层。SSD与yolo不同之处是除了在最终特征图上做目标检测之外,还在之前选取...
  • 前言:「本文由酷安酷友 covelredstone 授权联合创作,康康说科技部分内容二次修改,版权归原作者所有,严禁二次转载」原文链接:酷安搜作者几乎用过每一块 SSD 的朋友们都对突如其来的「掉盘」问题深有体会,也都...
  • SSD编程(2):SSD的架构和基准

    千次阅读 2014-04-09 14:04:31
    原文 http://codecapsule.com/2014/02/12/coding-for-ssds-part-2-architecture-of-an-ssd-and-benchmarking/ 本第二部分包含了“为SSD编程”的6个内容,包括1、2两节,你可以参考目录。这是我在阅读了...
  • 这篇论文总结点开了对ssd的理解,写的很详细、很透彻。原文地址:http://blog.csdn.net/u010167269/article/details/52563573#t18Preface这是今年 ECCV 2016 的一篇文章,是 UNC Chapel Hill(北卡罗来纳大学教堂...
  • 原文地址https://blog.csdn.net/c20081052/article/details/80391627SSD tensorflow及源码详解 本文主要针对SSD的tensorflow框架下的实现的源码解读即对网络模型的理解。 【前言】 首先在github...
  • 算法原文SSD: Single Shot MultiBox Detector github链接:https://github.com/pierluigiferrari/ssd_keras#overview以ssd7作为主程序一共如下几类: train_ssd7 keras_ssd7 keras_ssd_loss ssd_box_encode_...
  • SSD详解(一)

    千次阅读 2018-01-17 16:09:04
    原文链接:http://www.360doc.com/content/18/0117/15/52120682_722711493.shtml SSD github : https://github.com/weiliu89/caffe/tree/ssd SSD paper : https://arxiv.org/abs/1512.02325 图1...
  • 目标检测算法之SSD

    2019-06-16 22:44:44
    论文原文 https://arxiv.org/abs/1512.02325 摘要 本文呈现了一种仅需要单个深度神经网络的目标检测方法之一SSDSSD将物体边框的输出空间离散化为一组在每个特征图位置不同大小和形状的默认框。预测时,网络对...
  • ssd的写放大

    千次阅读 2014-09-04 09:55:22
    原文地址:http://www.upantool.com/jiaocheng/ssd/2012/1499_2.html

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 311
精华内容 124
关键字:

ssd原文