名 SSD:SingleShotMultiBoxDetector arXiv:1512.02325v5[cs.CV29Dec2016 汇报人:杜洋
SSD:SingleShotMultiBoxDetector 汇报人:杜洋 arXiv:1512.02325v5 [cs.CV] 29 Dec 2016
01 背景 02 算法思想 CONTENTS 03 模型架构 04 实验及结果
CONTENTS 背景 01 算法思想 02 模型架构 03 实验及结果 04
背景 AE
背景
背景 目标检测的概念: 计算机视觉中关于图像识别有四大类任务: 分类-Classification:解决“是什么?"的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。 定位-Location:解决“在哪里?"的问题,即定位出这个目标的的位置。 检测-Detection:解决“是什么?在哪里?"的问题,即定位出这个目标的的位置并且知道目标物是什么。 分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level)),解决“每一个像素属于哪 个目标物或场景”的问题 除了图像分类之外,目标检测要解决的核心问题是: 1.目标可能出现在图像的任何位置。 2.目标有各种不同的大小。 3目标可能有各种不同的形状。 4
背景 4 计算机视觉中关于图像识别有四大类任务: 分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。 定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。 检测-Detection:解决“是什么?在哪里?”的问题,即定位出这个目标的的位置并且知道目标物是什么。 分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪 个目标物或场景”的问题 除了图像分类之外,目标检测要解决的核心问题是: 1.目标可能出现在图像的任何位置。 2.目标有各种不同的大小。 3.目标可能有各种不同的形状。 目标检测的概念:
HyperNet 更好的特征网络 Ms-CNN PVANet Light-Head R-CNN MR-CNN 更精准的RPN FPN CRAFT R-CNN SPP-Net Fast R-CNN o Faster R-CNN R-FCN CoupleNet Region Proposal 更完善的ROI的分类 Mask R-CNN Cascade R-CNN OHEM 样本版处理© Soft-NMS Object Detection A-Fast-RCNN 更大的mini-Batch o MegDet YOLO o YOLO9000 o YOLOV3 G-CNN R-SSD DSSD R-CNNo OverFeat c End to End SSD e DSOD FSSD ESSD RON //blog.csdn.not/qq_35151572 5
5
两阶段(2-stage)检测模型 两阶段模型因其对图片的两阶段处理得名,也称为基于区域(Region-based)的方法,这里选取R-cNN系列 工作作为这一类型的代表。 R-CNN: R-CNN系列的开山之作;贡献--1)CNN可用于基于区域的定位和分割物体2)监督训练样本数紧 缺时,在额外的数据上预训练的模型经过fine-tuningi可以取得很好的效果。 Fast R-CNWN:共享卷积运算;贡献--本文指出R-CNN耗时的原因是CNN是在每一个Proposal上单独进行的 ,没有共享计算,便提出将基础网络在图片整体上运行完毕后,再传入R-CNN子网络,共享了大部分计算。 Faster R-CNN:两阶段模型的深度化;贡献---提出的RPN网络取代Selective Search算法使得检测任务可 以由神经网络端到端地完成,使用滑动窗口生成anchor box的思想也在后来的工作中越来越多地被采用( YOLO v2等)。这项工作奠定了"RPN+RCNN"的两阶段方法元结构,影响了大部分后续工作。 一阶段(1-stage)检测模型: 单阶段模型没有中间的区域检出过程,直接从图片获得预测结果,也被成为Region-free方法。 YOL0:单阶段方法的开山之作。它将检测任务表述成一个统一的、端到端的回归问题,并且以只处理一次图 片同时得到位置和分类而得名。 SSD:单阶段模型早期的集大成者,达到跟接近两阶段模型精度的同时,拥有比两阶段模型快一个数量级的速 度。后续的单阶段模型工作大多基于SSD改进展开。 6
两阶段(2-stage)检测模型: 两阶段模型因其对图片的两阶段处理得名,也称为基于区域(Region-based)的方法,这里选取R-CNN系列 工作作为这一类型的代表。 R-CNN: R-CNN系列的开山之作; 贡献---1)CNN可用于基于区域的定位和分割物体 2)监督训练样本数紧 缺时,在额外的数据上预训练的模型经过fine-tuning可以取得很好的效果。 Fast R-CNN: 共享卷积运算;贡献--- 本文指出R-CNN耗时的原因是CNN是在每一个Proposal上单独进行的 ,没有共享计算,便提出将基础网络在图片整体上运行完毕后,再传入R-CNN子网络,共享了大部分计算。 Faster R-CNN: 两阶段模型的深度化;贡献---提出的RPN网络取代Selective Search算法使得检测任务可 以由神经网络端到端地完成,使用滑动窗口生成anchor box的思想也在后来的工作中越来越多地被采用( YOLO v2等)。这项工作奠定了"RPN+RCNN"的两阶段方法元结构,影响了大部分后续工作。 一阶段(1-stage)检测模型: 单阶段模型没有中间的区域检出过程,直接从图片获得预测结果,也被成为Region-free方法。 YOLO:单阶段方法的开山之作。它将检测任务表述成一个统一的、端到端的回归问题,并且以只处理一次图 片同时得到位置和分类而得名。 SSD:单阶段模型早期的集大成者,达到跟接近两阶段模型精度的同时,拥有比两阶段模型快一个数量级的速 度。后续的单阶段模型工作大多基于SSD改进展开。 6
算法思想 R T
算法思想
算法概述: 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法。与faster rcnn相比,该算法没有 生成proposal的过程,这就极大提高了检测速度。针对不同大小的目标检测,传统的做法是先将图像转换成不同 大小(图像金字塔),然后分别检测,最后将结果综合起来(NMS)。而$SD算法则利用不同卷积层的 feature ma即进行综合也能达到同样的效果。算法的主网络结构是VGG16,将最后两个全连接层改成卷积层,并随后增加 了4个卷积层来构造网络结构。对其中5种不同的卷积层的输出(feature map)分别用两个不同的3×3的卷积核 进行卷积,一个输出分类用的confidence,每个default box 生成21个类别confidence;一个输出回归用的 localization,每个default box生成A个坐标值(x,y,w,h)。此外,这5个feature map还经过PriorBox层生成prior box(生成的是坐标)。上述5个feature mapt中每一层的default box的数量是给定的(8732个)。最后将前面三个计 算结果分别合并然后传给oSs层。 8
8 本文提出的SSD算法是一种直接预测目标类别和bounding box的多目标检测算法。与faster rcnn相比,该算法没有 生成 proposal 的过程,这就极大提高了检测速度。针对不同大小的目标检测,传统的做法是先将图像转换成不同 大小(图像金字塔),然后分别检测,最后将结果综合起来(NMS)。而SSD算法则利用不同卷积层的 feature map 进行综合也能达到同样的效果。算法的主网络结构是VGG16,将最后两个全连接层改成卷积层,并随后增加 了4个卷积层来构造网络结构。对其中5种不同的卷积层的输出(feature map)分别用两个不同的 3×3 的卷积核 进行卷积,一个输出分类用的confidence,每个default box 生成21个类别confidence;一个输出回归用的 localization,每个 default box 生成4个坐标值(x, y, w, h)。此外,这5个feature map还经过 PriorBox 层生成 prior box(生成的是坐标)。上述5个feature map中每一层的default box的数量是给定的(8732个)。最后将前面三个计 算结果分别合并然后传给loss层。 算法概述:
Default box: 这里假定有8×8和4×4两种不同的feature map。 第一个概念是feature map cell:feature map cell是指feature map中每一个小格子,如图中分别有64和16个cell, 另外有一个概念:default box:是指在feature map的每个小格(cell上都有一系列固定大小的ox,如下图有4个(下图中的虚线框,仔细看格子的 中间有比格子还小的一个box)。 假设每个feature map cell有k个default box,那么对于每个default boxi都需要预测c个类别scorei和4个offset,,那么如果一个feature map的大小是 m×n,也就是有m*n个feature map cell,那么这个feature map就一共有(c+4)k*m*n个输出。这些输出个数的含义是:采用3×3的卷积核对该 层的feature map卷积时卷积核的个数,包含两部分(实际code是分别用不同数量的3*3卷积核对该层feature mapi进行卷积):数量c*k*m*n是 confidence输出,表示每个default box的confidence,也就是类别的概率;数量4*k*m*n是localization输出,表示每个default box回归后的坐标)。 训l练中还有一个东西:prior box:是指实际中选择的default box(每一个feature map cell不是k个default box都取)。也就是说default box是一种 概念,prior box则是实际的选取。训练中一张完整的图片送进网络获得各个feature map,对于正样本训练来说,需要先将prior box与ground truth box做匹配, 匹配成功说明这个prior boxF所包含的是个目标,但离完整目标的ground truth boxi还有段距离,训练的目的是保证default box的分类 confidence的同时将prior boxh尽可能回归到ground truth box,.举个列子:假设一个训练样本中有2个ground truth box,所有的feature map中获取 的prior box一共有8732个。那个可能分别有10、20个prior box能分别与这2个ground truth box匹配上。训练的损失包含定位损失和回归损失两部 分 loc: △(ct,cy,D,h) conf(C1,2,···,Cp (a)Image with GT boxes (b)8×8 feature map (c)4 x 4 feature map 9
Default box: 这里假定有8×8和4×4两种不同的feature map。 第一个概念是feature map cell:feature map cell 是指feature map中每一个小格子,如图中分别有64和16个cell。 另外有一个概念:default box:是指在feature map的每个小格(cell)上都有一系列固定大小的box,如下图有4个(下图中的虚线框,仔细看格子的 中间有比格子还小的一个box)。 假设每个feature map cell有k个default box,那么对于每个default box都需要预测c个类别score和4个offset,那么如果一个feature map的大小是 m×n,也就是有m*n个feature map cell,那么这个feature map就一共有(c+4)*k * m*n 个输出。这些输出个数的含义是:采用3×3的卷积核对该 层的feature map卷积时卷积核的个数,包含两部分(实际code是分别用不同数量的3*3卷积核对该层feature map进行卷积):数量c*k*m*n是 confidence输出,表示每个default box的confidence,也就是类别的概率;数量4*k*m*n是localization输出,表示每个default box回归后的坐标)。 训练中还有一个东西:prior box:是指实际中选择的default box(每一个feature map cell 不是k个default box都取)。也就是说default box是一种 概念,prior box则是实际的选取。训练中一张完整的图片送进网络获得各个feature map,对于正样本训练来说,需要先将prior box与ground truth box做匹配,匹配成功说明这个prior box所包含的是个目标,但离完整目标的ground truth box还有段距离,训练的目的是保证default box的分类 confidence的同时将prior box尽可能回归到ground truth box。 举个列子:假设一个训练样本中有2个ground truth box,所有的feature map中获取 的prior box一共有8732个。那个可能分别有10、20个prior box能分别与这2个ground truth box匹配上。训练的损失包含定位损失和回归损失两部 分。 9
Default box 正负样本: 正样本: 图上画出了prior box,同时也有了ground truth,那么下一步就是将prior boxl匹配到ground truth上。先是从groudtruth box出发给每个groudtruth box找到了最匹配的prior box)放入候选正样本集,然后再从prior box出发为prior box集中寻找与groundtruth boxi满足IOU>0.5I0U>0.5的一个IOU最 大的prior box(如果有的话)放入候选正样本集,这样显然就增大了候选正样本集的数量。 负样本: 在生成一系列的prior boxes之后,会产生很多个符合ground truth box的positive boxes(候选正样本集),但同时,不符合ground truth boxes 也很多,而且这个negative boxes(候选负样本集),远多于positive boxes。这会造成negative boxes、.positive boxes之间的不均衡。训练时难以 收敛。 因此,本文采取,先将每一个物体位置上对应predictions(prior boxes)loss进行排序。对于候选正样本集:选择最高的几个prior box-与正样本 集匹配(box索引同时存在于这两个集合里则匹配成功),匹配不成功则删除这个正样本(因为这个正样本不在难例里已经很接近ground truth box了 不需要再训练了);对于候选负样本集:选择最高的几个prior box与候选负样本集匹配,匹配成功则作为负样本。这就是一个难例挖掘的过程, 举个例子,假设在这8732个prior box里,经过匹配后得到候选正样本P个,候选负样本那就有8732-P个。将prior boxe的prediction loss按照从大 到小N顺序排列后选择最高的M个prior box。如果这P个候选正样本里有a个box不在这M个prior box里,将这M个box从候选正样本集中踢出去。如 果这8732-P个候选负样本集中有M-a个在这M个prior box里,则将这M-a个候选负样本作为负样本 10
正负样本: 正样本: 图上画出了prior box,同时也有了ground truth,那么下一步就是将prior box匹配到ground truth上。先是从groudtruth box出发给每个groudtruth box找到了最匹配的prior box放入候选正样本集,然后再从prior box出发为prior box集中寻找与groundtruth box满足IOU>0.5 IOU>0.5的一个IOU最 大的prior box(如果有的话)放入候选正样本集,这样显然就增大了候选正样本集的数量。 负样本: 在生成一系列的 prior boxes 之后,会产生很多个符合 ground truth box 的 positive boxes(候选正样本集),但同时,不符合 ground truth boxes 也很多,而且这个 negative boxes(候选负样本集),远多于 positive boxes。这会造成 negative boxes、positive boxes 之间的不均衡。训练时难以 收敛。 因此,本文采取,先将每一个物体位置上对应 predictions(prior boxes)loss 进行排序。 对于候选正样本集:选择最高的几个prior box与正样本 集匹配(box索引同时存在于这两个集合里则匹配成功),匹配不成功则删除这个正样本(因为这个正样本不在难例里已经很接近ground truth box了, 不需要再训练了);对于候选负样本集:选择最高的几个prior box与候选负样本集匹配,匹配成功则作为负样本。这就是一个难例挖掘的过程, 举个例子,假设在这8732个prior box里,经过匹配后得到候选正样本P 个,候选负样本那就有8732−P 个。将prior box的prediction loss按照从大 到小顺序排列后选择最高的M 个prior box。如果这P 个候选正样本里有a 个box不在这M 个prior box里,将这M 个box从候选正样本集中踢出去。如 果这8732−P 个候选负样本集中有M−a 个在这M 个prior box里,则将这M−a 个候选负样本作为负样本 10