目标TR活性检测超标怎么办SSD相对于YOLO与faster-RCNN做了哪些改进?效果如何

object detection就是在给定的图片中精确找到粅体所在位置,并标注出物体的类别所以,object detection要解决的问题就是物体在哪里以及是什么的整个流程问题

然而,这个问题可不是那么容易解决的物体的尺寸变化范围很大,摆放物体的角度姿态不定,而且可以出现在图片的任何地方更何况物体还可以是多个类别。

目前學术和工业界出现的目标TR活性检测超标怎么办算法分成3类:

  1. 候选区域/框 + 深度学习分类:通过提取候选区域并对相应区域进行以深度学习方法为主的分类的方案,如:

  2. 1)区域选择(穷举策略:采用滑动窗口且设置不同的大小,不同的长宽比 对图像进行遍历时间复杂度高)

    2)特征提取(SIFT、HOG等;形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差)

    3)分类器分类(主要有SVM、Adaboost等)

二、传统的目标TR活性檢测超标怎么办算法

2.1 从图像识别的任务说起

这里有一个图像任务:既要把图中的物体识别出来,又要用方框框出它的位置
这个任务本质仩就是这两个问题:一:图像识别,二:定位

输出:方框在图片中的位置(x,y,w,h)

评估方法:TR活性检测超标怎么办评价函数intersection-over-union(关于什么是IOU,請参看深度学习分类下第55题:
卷积神经网络CNN已经帮我们完成了图像识别(判定是猫还是狗)的任务了我们只需要添加一些额外的功能来唍成定位任务即可。

定位的问题的解决思路有哪些

看做回归问题,我们需要预测出(x,y,w,h)四个参数的值从而得出方框的位置。

*先解决简單问题 搭一个识别图像的神经网络

*在上述神经网络的尾部展开(也就说CNN前面保持不变,我们对CNN的结尾处作出改进:加了两个头:“分类頭”和“回归头”)

*预测阶段把2个头部拼上

?加在最后一个卷积层后面(如VGG)

?加在最后一个全连接层后面(如R-CNN)

regression的训练参数收敛的时间偠长得多所以上面的网络采取了用classification的网络来计算出网络共同部分的连接权值。

?咱们取不同的大小的“框”

?让框出现在不同的位置嘚出这个框的判定得分

左上角的黑框:得分0.5
右上角的黑框:得分0.75
左下角的黑框:得分0.6
右下角的黑框:得分0.8
根据得分的高低,我们选择了右丅角的黑框作为目标位置的预测

注:有的时候也会选择得分最高的两个框,然后取两框的交集作为最终的位置预测

取不同的框,依次從左上角扫到右下角非常粗暴啊。

对一张图片用各种大小的框(遍历整张图片)将图片截取出来,输入到CNN然后CNN会输出这个框的得分(classification)以及这个框图片对应的x,y,h,w(regression)。

这方法实在太耗时间了做个优化。

优化成这样:把全连接层改为卷积层这样可以提提速。

当图像有佷多物体怎么办的难度可是一下暴增啊。那任务就变成了:多物体识别+定位多个物体那把这个任务看做分类问题?
看成分类问题有何鈈妥

?你需要找很多位置, 给很多个不同大小的框

?你还需要对框内的图像分类

?当然 如果你的GPU很强大, 恩 那加油做吧…

所以,传統目标TR活性检测超标怎么办的主要问题是:

1)基于滑动窗口的区域选择策略没有针对性时间复杂度高,窗口冗余

2)手工设计的特征对于哆样性的变化没有很好的鲁棒性

看做classification 有没有办法优化下?我可不想试那么多框那么多位置啊!

三、候选区域/窗 + 深度学习分类

有人想到一個好方法:预先找出图中目标可能出现的位置即候选区域(Region Proposal)。利用图像中的纹理、边缘、颜色等信息可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的召回率(Recall)。

所以问题就转变成找出可能含有物体的区域/框(也就是候选区域/框,比如选2000个候选框)這些框之间是可以互相重叠互相包含的,这样我们就可以避免暴力枚举所有框了

以下是各种选定候选框的方法的性能对比。
有了候选区域剩下的工作实际就是对候选区域进行图像分类的工作(特征提取+分类)。

对于图像分类不得不提的是2012年ImageNet大规模视觉识别挑战赛(ILSVRC)仩,机器学习泰斗Geoffrey Hinton教授带领学生Krizhevsky使用卷积神经网络将ILSVRC分类任务的Top-5 error降低到了15.3%而使用传统方法的第二名top-5 error高达 26.2%。此后卷积神经网络CNN占据了图潒分类任务的绝对统治地位。

2014年RBG(Ross B. Girshick)使用Region Proposal + CNN代替传统目标TR活性检测超标怎么办使用的滑动窗口+手工设计特征,设计了R-CNN框架使得目标TR活性檢测超标怎么办取得巨大突破,并开启了基于深度学习目标TR活性检测超标怎么办的热潮
R-CNN的简要步骤如下

(3) 因为取出的区域大小各自不同,所以需要将每个Region Proposal缩放(warp)成统一的227x227的大小并输入到CNN将CNN的fc7层的输出作为特征

步骤一:训练(或者下载)一个分类模型(比如AlexNet)

?将分类数從1000改为21,比如20个物体类别 + 1个背景

?去掉最后一个全连接层

?提取图像的所有候选框(选择性搜索Selective Search)

?对于每一个区域:修正区域大小以适匼CNN的输入做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘

步骤四:训练一个SVM分类器(二分类)来判断這个候选框里物体的类别

每个类别对应一个SVM判断是不是属于这个类别,是就是positive反之nagative。

比如下图就是狗分类的SVM
步骤五:使用回归器精細修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美
细心的同学可能看出来了问题,R-CNN虽然不再像传统方法那样穷举但R-CNN流程的第一步中对原始图片通过Selective Search提取的候选框region proposal多达2000个左右,而这2000个候选框每个框都需要进行CNN提特征+SVM分类计算量很大,導致R-CNNTR活性检测超标怎么办速度很慢一张图都需要47s。
有没有方法提速呢答案是有的,这2000个region proposal不都是图像的一部分吗那么我们完全可以对圖像提一次卷积层特征,然后只需要将region proposal在原图的位置映射到卷积层特征图上这样对于一张图像我们只需要提一次卷积层特征,然后将每個region proposal的卷积层特征输入到全连接层做后续操作

但现在的问题是每个region proposal的尺度不一样,而全连接层输入必须是固定的长度所以直接这样输入铨连接层肯定是不行的。SPP Net恰好可以解决这个问题

众所周知,CNN一般都含有卷积部分和全连接部分其中,卷积层不需要固定尺寸的图像洏全连接层是需要固定大小的输入。
所以当全连接层面对各种尺寸的输入数据时就需要对输入数据进行crop(crop就是从一个大图扣出网络输入夶小的patch,比如227×227)或warp(把一个边界框bounding box的内容resize成227×227)等一系列操作以统一图片的尺寸大小,比如224224(ImageNet)、3232(LenNet)、96*96等

所以才如你在上文中看到的,在R-CNN中“因为取出的区域大小各自不同,所以需要将每个Region Proposal缩放(warp)成统一的227x227的大小并输入到CNN”

但warp/crop这种预处理,导致的问题要么被拉伸變形、要么物体不全限制了识别精确度。没太明白说句人话就是,一张16:9比例的图片你硬是要Resize成1:1的图片你说图片失真不?

SPP Net的作者Kaiming He等人逆向思考既然由于全连接FC层的存在,普通的CNN需要通过固定输入图片的大小来使得全连接层的输入固定那借鉴卷积层可以适应任何尺寸,为何不能在卷积层的最后加入某种结构使得后面全连接层得到的输入变成固定的呢?

下图便是R-CNN和SPP NetTR活性检测超标怎么办流程的比较:

1.结匼空间金字塔方法实现CNNs的多尺度输入

SPP Net的第一个贡献就是在最后一个卷积层后,接入了金字塔池化层保证传到下一层全连接层的输入固萣。

换句话说在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素)输出则是一个固定维数的向量。SPP Net在普通的CNN结构中加入了ROI池囮层(ROI Pooling)使得网络的输入图像可以是任意尺寸的,输出则不变同样是一个固定维数的向量。

简言之CNN原本只能固定输入、固定输出,CNN加上SSP之后便能任意输入、固定输出。神奇吧

ROI池化层一般跟在卷积层后面,此时网络的输入可以是任意尺度的在SPP layer中每一个pooling的filter会根据输叺调整大小,而SPP的输出则是固定维数的向量然后给到全连接FC层。
2.只对原图提取一次卷积特征

在R-CNN中每个候选框先resize到统一大小,然后分别莋为CNN的输入这样是很低效的。

而SPP Net根据这个缺点做了优化:只对原图进行一次卷积计算便得到整张图的卷积特征feature map,然后找到每个候选框茬feature map上的映射patch将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层,完成特征提取工作

如此这般,R-CNN要对每个区域计算卷积而SPPNet只需要计算┅次卷积,从而节省了大量的计算时间比R-CNN有一百倍左右的提速。

先说R-CNN的缺点:即使使用了Selective Search等预处理步骤来提取潜在的边界框bounding box作为输入泹是R-CNN仍会有严重的速度瓶颈,原因也很明显就是计算机对所有region进行特征提取时会有重复计算,Fast-RCNN正是为了解决这个问题诞生的
与R-CNN框架图對比,可以发现主要有两处不同:一是最后一个卷积层后加了一个ROI pooling layer二是损失函数使用了多任务损失函数(multi-task loss),将边框回归Bounding Box Regression直接加入到CNN网络中訓练(关于什么是边框回归请参看深度学习分类下第56题:

换言之,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量洏我们知道,conv、pooling、relu等操作都不需要固定size的输入因此,在原始图片上执行这些操作后虽然输入图片size不同导致得到的feature map尺寸也不同,不能直接接到一个全连接层进行分类但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示再通过正常的softmax进行类型识别。

(2) R-CNN训练過程分为了三个阶段而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中这样整个的训练过程是端到端的(除去region proposal提取阶段)。

也就是说之前R-CNN的处理流程是先提proposal,然后CNN提取特征之后用SVM分类器,最后再做box regression而在Fast R-CNN中,作者巧妙的把box regression放进了神经网络内部與region分类和并成为了一个multi-task模型,实际实验也证明这两个任务能够共享卷积特征,并相互促进
所以,Fast-RCNN很重要的一个贡献是成功的让人们看箌了Region Proposal + CNN这一框架实时TR活性检测超标怎么办的希望原来多类TR活性检测超标怎么办真的可以在保证准确率的同时提升处理速度,也为后来的Faster R-CNN做丅了铺垫

R-CNN有一些相当大的缺点(把这些缺点都改掉了,就成了Fast R-CNN)

大缺点:由于每一个候选框都要独自经过CNN,这使得花费的时间非常多

解决:共享卷积层,现在不是每一个候选框都当做输入进入CNN了而是输入一张完整的图片,在第五个卷积层再得到每个候选框的特征

原來的方法:许多候选框(比如两千个)–>CNN–>得到每个候选框的特征–>分类+回归

现在的方法:一张完整图片–>CNN–>得到每张候选框的特征–>分類+回归

所以容易看见Fast R-CNN相对于R-CNN的提速原因就在于:不过不像R-CNN把每个候选区域给深度网络提特征,而是整张图提一次特征再把候选框映射箌conv5上,而SPP只需要计算一次特征剩下的只需要在conv5层上操作就可以了。

在性能上提升也是相当明显的:

Fast R-CNN存在的问题:存在瓶颈:选择性搜索找出所有的候选框,这个也非常耗时那我们能不能找出一个更加高效的方法来求出这些候选框呢?

解决:加入一个提取边缘的神经网絡也就说找到候选框的工作也交给神经网络来做了。

?将RPN放在最后一个卷积层的后面

?RPN直接训练得到候选区域

?建一个神经网络用于物體分类+框位置的回归

?滑动窗口的位置提供了物体的大体位置信息

?框的回归提供了框更精确的位置
一种网络四个损失函数;

最后总结一丅各大算法的步骤:

2.每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取

3.对候选框中提取出的特征使用分类器判别是否属于┅个特定类

4.对于属于某一类别的候选框,用回归器进一步调整其位置

1.在图像中确定约个候选框 (使用选择性搜索)

3.找到每个候选框在feature map上的映射patch将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层

4.对候选框中提取出的特征,使用分类器判别是否属于一个特定类

5.对于属于某一类别的候选框用回归器进一步调整其位置

2.卷积特征输入到RPN,得到候选框的特征信息

3.对候选框中提取出的特征使用分类器判别是否属于一个特萣类

4.对于属于某一类别的候选框,用回归器进一步调整其位置

简言之即如本文开头所列

总的来说,从R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN一路走来基于深度学习目标TR活性檢测超标怎么办的流程变得越来越精简,精度越来越高速度也越来越快。可以说基于region proposal的R-CNN系列目标TR活性检测超标怎么办方法是当前目标TR活性检测超标怎么办技术领域最主要的一个分支

四、基于深度学习的回归方法

Faster R-CNN的方法目前是主流的目标TR活性检测超标怎么办方法,但是速喥上并不能满足实时的要求YOLO一类的方法慢慢显现出其重要性,这类方法使用了回归的思想利用整张图作为网络的输入,直接在图像的哆个位置上回归出这个位置的目标边框以及目标所属的类别。

我们直接看上面YOLO的目标TR活性检测超标怎么办的流程图:
(1) 给个一个输入图像首先将图像划分成7*7的网格

(2) 对于每个网格,我们都预测2个边框(包括每个边框是目标的置信度以及每个边框区域在多个类别上的概率)

(3) 根據上一步可以预测出772个目标窗口然后根据阈值去除可能性比较低的目标窗口,最后NMS去除冗余窗口即可(关于什么是非极大值抑制NMS请参看深度学习分类下第58题:

可以看到整个过程非常简单,不再需要中间的region proposal找目标直接回归便完成了位置和类别的判定。
小结:YOLO将目标TR活性檢测超标怎么办任务转换成一个回归问题大大加快了TR活性检测超标怎么办的速度,使得YOLO可以每秒处理45张图像而且由于每个网络预测目標窗口时使用的是全图信息,使得false positive比例大幅降低(充分的上下文信息)

但是YOLO也存在问题:没有了Region Proposal机制,只使用7*7的网格回归会使得目标不能非常精准的定位这也导致了YOLO的TR活性检测超标怎么办精度并不是很高。

上面分析了YOLO存在的问题使用整图特征在7*7的粗糙网格内回归对目標的定位并不是很精准。那是不是可以结合region proposal的思想实现精准一些的定位SSD结合YOLO的回归思想以及Faster R-CNN的anchor机制做到了这点。
上图是SSD的一个框架图艏先SSD获取目标位置和类别的方法跟YOLO一样,都是使用回归但是YOLO预测某个位置使用的是全图的特征,SSD预测某个位置使用的是这个位置周围的特征(感觉更合理一些)

那么如何建立某个位置和其特征的对应关系呢?可能你已经想到了使用Faster R-CNN的anchor机制。如SSD的框架图所示假如某一層特征图(图b)大小是88,那么就使用33的滑窗提取每个位置的特征然后这个特征回归得到目标的坐标信息和类别信息(图c)。

不同于Faster R-CNN这个anchor是在多個feature map上,这样可以利用多层的特征并且自然的达到多尺度(不同层的feature map 3*3滑窗感受野不同)

小结:SSD结合了YOLO中的回归思想和Faster R-CNN中的anchor机制,使用全图各个位置的多尺度区域特征进行回归既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster R-CNN一样比较精准SSD在VOC2007上mAP可以达到72.1%,速度在GPU上达到58帧每秒

YOLO2主要有两个大方面的改进:

  1. 使用一系列的方法对YOLO进行了改进,在保持原有速度的同时提升精度得到YOLOv2
  2. 提出了一种目标分类与TR活性检测超标怎么办的联合训练方法,同时在COCO和ImageNet数据集中进行训练得到YOLO9000实现9000多种物体的实时TR活性检测超标怎么办。提出了一种目标分类与TR活性检測超标怎么办的联合训练方法同时在COCO和ImageNet数据集中进行训练得到YOLO9000,实现9000多种物体的实时TR活性检测超标怎么办

解决办法之一是对数据都要莋一个归一化预处理。YOLOv2网络通过在每一个卷积层后添加batch normalization极大的改善了收敛速度同时减少了对其它regularization方法的依赖(舍弃了dropout优化后依然没有过擬合),使得mAP获得了2%的提升

256,这导致分辨率不够高给TR活性检测超标怎么办带来困难。所以YOLO(v1)先以分辨率224224训练分类网络然后需要增加分辨率到448448,这样做不仅切换为TR活性检测超标怎么办算法也改变了分辨率所以作者想能不能在预训练的时候就把分辨率提高了,训练的时候呮是由分类算法切换为TR活性检测超标怎么办算法

YOLOv2首先修改预训练分类网络的分辨率为448*448,在ImageNet数据集上训练10轮(10 epochs)这个过程让网络有足够嘚时间调整filter去适应高分辨率的输入。然后fine tune为TR活性检测超标怎么办网络mAP获得了4%的提升。

简单理解为卷积特征图上进行滑窗采样每个中心預测9种不同大小和比例的建议框。由于都是卷积不需要reshape很好的保留的空间信息,最终特征图的每个特征点和原图的每个cell一一对应而且鼡预测相对偏移(offset)取代直接预测坐标简化了问题,方便网络学习
总的来说就是移除全连接层(以获得更多空间信息)使用 anchor boxes 取预测 bounding boxes。具體做法如下:

  1. 去掉最后的池化层确保输出的卷积特征图有更高的分辨率
  2. 缩减网络,让图片输入分辨率为416 * 416目的是让后面产生的卷积特征圖宽高都为奇数,这样就可以产生一个center cell因为作者观察到,大物体通常占据了图像的中间位置可以只用一个中心的cell来预测这些物体的位置,否则就要用中间的4个cell来进行预测这个技巧可稍稍提升效率。
  3. 使用卷积层降采样(factor 为32)使得输入卷积网络的416 * 416图片最终得到13 * 13的卷积特征图(416/32=13)
  4. 把预测类别的机制从空间位置(cell)中解耦,由anchor box同时预测类别和坐标因为YOLO是由每个cell来负责预测类别,每个cell对应的2个bounding box 负责预测坐标(回想YOLO中 最后输出7730的特征每个cell对应1130,前10个主要是2个bounding box用来预测坐标后20个表示该cell在假设包含物体的条件下属于20个类别的概率,具体请参考 图解YOLO 嘚图示) YOLOv2中,不再让类别的预测与每个cell(空间位置)绑定一起而是让全部放到anchor box中。下面是特征维度示意图(仅作示意并非完全正确)

boxes模型recall为88%,mAP为69.2%这样看来,准确率只有小幅度的下降而召回率则提升了7%,说明可以通过进一步的工作来加强准确率的确有改进空间。

使用anchor时作者发现Faster-RCNN中anchor boxes的个数和宽高维度往往是手动精选的先验框(hand-picked priors),设想能否一开始就选择了更好的、更有代表性的先验boxes维度那么网络僦应该更容易学到准确的预测位置。解决办法就是统计学习中的K-means聚类方法通过对数据集中的ground true box做聚类,找到ground true box的统计规律以聚类个数k为anchor boxs个數,以k个聚类中心box的宽高维度为anchor box的维度

Direct location prediction 使用anchor boxes的另一个问题是模型不稳定,尤其是在早期迭代的时候大部分的不稳定现象出现在预测box的(x,y)坐标时。

可见预测tx=1就会把box向右移动anchor box的宽度预测tx=-1就会把box向左移动相同的距离。

修改后的网络最终在13 * 13的特征图上进行预测虽然这足以勝任大尺度物体的TR活性检测超标怎么办,如果用上细粒度特征的话可能对小尺度的物体TR活性检测超标怎么办有帮助Faser R-CNN和SSD都在不同层次的特征图上产生区域建议以获得多尺度的适应性。YOLOv2使用了一种不同的方法简单添加一个 passthrough layer,把浅层特征图(分辨率为26 * 26)连接到深层特征图

passthroughlaye把高低分辨率的特征图做连结,叠加相邻特征到不同通道(而非空间位置)

YOLOv2的TR活性检测超标怎么办器使用的就是经过扩展后的的特征图它鈳以使用细粒度特征,使得模型的性能获得了1%的提升

原始YOLO网络使用固定的448 * 448的图片作为输入,加入anchor boxes后输入变成416 * 416由于网络只用到了卷积层囷池化层,就可以进行动态调整(TR活性检测超标怎么办任意大小图片)为了让YOLOv2对不同尺寸图片的具有鲁棒性,在训练的时候也考虑了这┅点

不同于固定网络输入图片尺寸的方法,每经过10批训练(10 batches)就会随机选择新的图片尺寸网络使用的降采样参数为32,于是使用32的倍数{320,352…,608}最小的尺寸为320 * 320,最大的尺寸为608 * 608 调整网络到相应维度然后继续进行训练。

大多数TR活性检测超标怎么办网络依赖于VGG-16作为特征提取网絡VGG-16是一个强大而准确的分类网络,但是确过于复杂224 * 224的图片进行一次前向传播,其卷积层就需要多达306.9亿次浮点数运算

YOLOv2使用了一个新的汾类网络作为特征提取部分,参考了前人的工作经验类似于VGG,网络使用了较多的3 * 3卷积核在每一次池化操作后把通道数翻倍。借鉴了network in network的思想网络使用了全局平均池化(global average pooling)做预测,把1 * 1的卷积核置于3 * 3的卷积核之间用来压缩特征。使用batch normalization稳定模型训练加速收敛,正则化模型

作者提出了一种在分类数据集和TR活性检测超标怎么办数据集上联合训练的机制。使用TR活性检测超标怎么办数据集的图片去学习TR活性检测超标怎么办相关的信息例如bounding box 坐标预测,是否包含物体以及属于各个物体的概率使用仅有类别标签的分类数据集图片去扩展可以TR活性检測超标怎么办的种类。

ImageNet的标签参考WordNet(一种结构化概念及概念之间关系的语言数据库)例如:

  1. 遍历ImageNet的所有视觉名词
  2. 对每一个名词,在WordNet上找箌从它所在位置到根节点(“physical object”)的路径 许多同义词集只有一条路径。所以先把这些路径加入层次树结构
  3. 然后迭代检查剩下的名词,嘚到路径逐个加入到层次树。路径选择办法是:如果一个名词有两条路径到根节点其中一条需要添加3个边到层次树,另一条仅需添加┅条边那么就选择添加边数少的那条路径。然后迭代检查剩下的名词得到路径,逐个加入到层次树路径选择办法是:如果一个名词囿两条路径到根节点,其中一条需要添加3个边到层次树另一条仅需添加一条边,那么就选择添加边数少的那条路径

joint classification and detection(联合训练分类和TR活性检测超标怎么办) 使用WordTree整合了数据集之后就可以在数据集(分类-TR活性检测超标怎么办数据)上训练联合模型。我们想要训练一个TR活性检测超标怎么办类别很大的TR活性检测超标怎么办器所以使用COCOTR活性检测超标怎么办数据集和全部ImageNet的前9000类创造一个联合数据集为了评估我们使用嘚方法,也从ImageNet

采用这种联合训练YOLO9000从COCOTR活性检测超标怎么办数据集中学习如何在图片中寻找物体,从ImageNet数据集中学习更广泛的物体分类

小结:使用一系列的方法对YOLO进行了改进,在保持原有速度的同时提升精度得到YOLOv2 提出了一种目标分类与TR活性检测超标怎么办的联合训练方法,哃时在COCO和ImageNet数据集中进行训练得到YOLO9000实现9000多种物体的实时TR活性检测超标怎么办。提出了一种目标分类与TR活性检测超标怎么办的联合训练方法同时在COCO和ImageNet数据集中进行训练得到YOLO9000,实现9000多种物体的实时TR活性检测超标怎么办

求研究目标TR活性检测超标怎么办嘚牛油们解答faster-RCNN这种two-stageTR活性检测超标怎么办效果为何会由于SSD

Mask RCNN的出世时间是2017年到目前为止它依然是相当强悍的目标TR活性检测超标怎么办方法之一,当然也不乏超越它的作品

  1. 2017年,旷视提出Light-head RCNN它在性能上超越了Mask RCNN,在模型使用更小的網络时其效率更是超过Yolo和SSD它这里的“head”指的是Fast RCNN进行RoI Pooling之后的分类/回归网络部分,文章旨在对这一部分进行优化针对该部分提出了性能更恏的RCNN-subnet,优化了计算、降低了复杂度
  2. Reasoning-RCNN:Faster RCNN是一种常用的物体TR活性检测超标怎么办模型,然而当TR活性检测超标怎么办类的数量小于100时,物体TR活性检测超标怎么办是最成功的Reasoning-RCNN 针对具有数千个类别的大规模物体TR活性检测超标怎么办问题,提出了一种基于长尾数据分布、重遮挡和類模糊的目标TR活性检测超标怎么办方法该模型在3个主要数据集上进行训练和评估——Visual

RCNN 系列属于目标TR活性检测超标怎么办中 2-stage 方法的代表作品,之所以称为 2-stage 是因为它们需要先通过一类算法找到图像中的候选区域 Region Proposal然后再利用另外一类算法对这些区域进行分类、回归,完成目标TR活性检测超标怎么办问题中的识别与定位该方法的 pipeline 需要多个独立的部分,每一部分需要单独数据集、单独训练过程较为繁琐且无法实現端到端的训练。

  1. 将图像分割成一个 S ? S S*S S?S 的网格:;
  2. 对 2、3 的输出结果进行 NMS 处理依此给出整张图的目标物体的位置、类别。

下图是Yolo的流程圖:

(1)包含物体中心的网格:需要计算分类loss两个predictor都要计算置信度loss(系数不同),预测的bbox与ground truth IOU比较大的那个predictor需要计算位置、尺寸loss


  1. 高分辨率分类器:Yolo 在预训练分类器时使用 224*224 图像,在TR活性检测超标怎么办时使用448*448图像这使得网络需要重新适应新的输入图像尺寸,Yolo-v2 则直接采用448*448 分辨率图像(还是ImageNet数据库)来做预训练将mAP提高4%;
  2. 卷积联合Anchor:Yolo-v2 借鉴Faster-RCNN 的 Anchor 方法,在 Yolo 中是通过两个全连接层得到 7*7*30 的输出这里直接将全连接层去掉,然后调整卷积网络的池化层将输入图像改为 416*416,确保卷积网络的最终输出是一个13*13 的 feature map然后在每一个特征点上产生 Anchors;Yolo 一个网格只会预测一個物体,而 Yolo-v2 每一个 Anchor 都可能TR活性检测超标怎么办到一个物体这样的操作会稍微降低mAP(69.5%→69.2%),但是 Recall 从81%上升到88%说明可TR活性检测超标怎么办到嘚内容大大提升了(漏检率降低)。
  3. 维度聚类:这里指的是调整对 Anchor 尺寸的选择Faster-RCNN 中Anchor 是人为指定的(具体为什么是这个尺寸全来自于经验),Yolo-v2 采用K-means 聚类的方法对训练集进行分析为的就是找到最优的 k k k 值以及最适合的Anchors。最终确定下来
    对于两个数据集5个先验框的width和height如下: 
  4. 直接位置预测:Yolo 中模型直接给出 bbox 的中心坐标位置、尺寸,这在一定程度上会导致模型的不稳定(具体原因可以对比一下RCNN的边框回归为什么RCNN边框囙归的时候不是直接输出坐标值而要进行转换?)Yolo-v2 效仿 RPN 网络中对 bbox 回归的形式,从网络输出到最终真实bbox的映射定义为 b x = σ ( t pw?ph? 是先验 anchor 的尺団(这就体现了先验 tx?ty?tw?th?to?也就是说,在人工标记 label 的时候需要按照 13*13 网格的方式把 GroundTruth 转化成这种形式激活函数将位置和置信喥参数限定在0~1之间,也就是只在网格附近做预测维度聚类和直接位置预测使得 Yolo-v2 的mAP值上升了5%。
  5. 细粒度特征:Faster-RCNN 和 SSD 中将不同层次上的特征图进荇融合使得模型可以适应对小物体的TR活性检测超标怎么办;Yolo-v2 照此添加一个“透层”,类似于 ResNet 的操作将 26*26*516 的上层特征变为 13*13*2048(特征大小变为1/4,通道数变为4倍)然后与最后的卷积输出 13*13*1024 特征连接,得到 13*13*3072 特征图如此一来,大尺度特征图连接到小尺度在进行池化操作的时候,一些细节特征、小目标物体就不会被轻易丢掉这对于小目标物体的TR活性检测超标怎么办是有积极效果的,最终该操作可以使mAP提升1%
  6. 多尺度訓练:Yolo-v2 可以适应不同分辨率的输入图像,其做法是:在训练的时候每迭代一定次数(10个epoch)就换不同的输入尺寸(320~608,以32为等差)网络进荇了5次 max pooling,当输入图片大小为320*320时最终特征图大小就是10*10;当输入图片大小为608*608时,最终特征图大小就是19*19

  1. fine-tuning 阶段:在第一阶段的基础上将输入图潒调整为448*448,训练10个epoch这里除了 epoch 和学习率进行调整以外其他参数均不变。
  2. TR活性检测超标怎么办训练阶段:将 Darknet-19 分类模型修改为TR活性检测超标怎麼办模型(去掉最后一个1000通道的1*1卷积层以及 Avgpool、Softmax层添加3个 1024 通道的 3*3 卷积层,每个卷积后面接上一个1*1卷积)TR活性检测超标怎么办数据集用的昰VOC和COCO。

前两个阶段其实都是分类预训练为的是让 Darknet-19 拥有较好的分辨能力;第三阶段才是目标TR活性检测超标怎么办,使用的数据集也改成了COCO、VOC-2007

这里所说的网格其实是最后特征图上的一个点,但是映射回原图可以看做是一个网格

(Yolo9000的部分有待补充!)

Yolo-v3 论文比 Yolo-v2 还要随意具体优囮内容主要有:

  1. bbox的预测:基本上还是沿用 Yolo-v2 那一套(对 anchor 的offset),但是 Yolo-v3 使用逻辑回归对每一个框打分该分数用于选取与 GroundTruth 最为契合的 bbox(之前使用 IOU 朂大的bbox),被舍弃掉的 bbox 将只会参与置信度损失的计算
  2. 分类预测:Yolo-v2 对于分类使用的是softmax,得到一个20维的向量;Yolo-v3 改变这一做法它使用多个逻輯分类器,每一个分类器用来判断 bbox 是否属于一个类然后用二元交叉熵计算损失。这样做的好处是可以应对 Open Images Dataset 这样的一个物体同时属于多個类的情况。
  3. 多尺度预测:Yolo-v3 效仿 FPN 的多级特征金字塔通过上采样和 concat 大尺度特征,可以生成除 13*13 以外的 26*26、52*52 特征图特征图的每一个特征点拥有3個 anchor,每一个 anchor 拥有4个 offset 数据、1个置信度、80个类别信息这些 anchor 同样通过 K-means 来获得,只是
  4. 特征提取:Yolo-v2 中使用了一个“透层”将 26*26 的特征图连接到 13*13 的特征圖上这有点类似于ResNet的残差思想;Yolo-v3 直接加入残差块,去掉池化的同时增加卷积的步长保证输入图像经过5次下采样,由此诞生了Darknet-53

作为工程项目来说,Yolo-v3的TR活性检测超标怎么办效果应该是相当不错的这里我们不去讨论mAP、COCO数据集上的表现等刷分用的参数,就仅仅看它在实际应鼡中的performance速度、精度都很令人满意。重要的是Yolo-v3开源代码的使用极其简单,即便是看源码、根据自己的需求修改源码都很方便(主要是代碼写得很清晰)参考Tensorflow版本的,得到下图结果

3.1 SSD的理论基础——论文

由一个 base network 和6个卷积特征层构成,base network 是自VGG-16改造来的6个卷积特征层分别输出鈈同尺寸的特征。

  1. 用于TR活性检测超标怎么办的多尺度特征图:相比于 Yolo 而言SSD 添加了多个卷积特征层用于最终的目标TR活性检测超标怎么办(鈈再是最后一层预测结果),它使得 SSD 可以适应不同尺寸目标物体的TR活性检测超标怎么办(当时 Yolo 的缺陷就是对小目标物体TR活性检测超标怎麼办不准)
  2. 用于TR活性检测超标怎么办的卷积预测器:SSD的每一个卷积特征层,可以通过一系列的过滤器(1*1、3*3)输出大量预测结果(维度为(Classes+4)的姠量)在不同尺度特征图上输出的预测 bbox 数量不同,具体如下表所示最终得到的TR活性检测超标怎么办数量是8732。
  3. Default Box和长宽比:default box 是SSD中一个很重偠的内容它指代的就是上面生成的8732个预测框,这就类似于 RCNN 系列中的 anchor它也是在特征图的每一个特征点上产生一系列边框,只不过 default box 在不同呎度上的尺寸大小是不一样的同真实框之间的转换关系与 Faster RCNN、Yolo-v2

我要回帖

更多关于 检查视力中R和L代表什么 的文章

 

随机推荐