联系我们
- 地 址:北京市海淀区北四环西路9号 ,主 营:人脸识别,活体检测,身份证识别,银行卡识别,名片识别,车牌识别,OCR识别等及智能识别技术。
- 电 话:13146317170 廖经理
- 传 真:
- 邮 箱:398017534@qq.com
AI深度学习目的检测算法
AI深度学习目的检测算法
从2014年开端,目的检测获得了宏大的打破。目前业界呈现的目的检测算法有以下几种:
1. 传统的目的检测算法:Cascade + Haar / SVM + HOG / DPM ;
2. 候选窗+深度学习分类:经过提取候选区域,并对相应区域停止以深度学习办法为主的分类的计划,如:RCNN / SPP-net/ Fast-RCNN / Faster-RCNN / R-FCN 系列办法;
3. 基于深度学习的回归办法:YOLO / SSD / DenseBox 等办法;
4. 分离RNN算法的RRC detection;分离DPM的Deformable CNN等办法;
本文针对目前主流的目的检测办法停止简单的引见,文章分为四个局部:第一局部引见目的检测范畴常用的数据集以及性能指标;第二局部引见R Girshick提出的以R-CNN为代表的分离region proposal和CNN分类的目的检测框架(R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN); 第三局部引见以YOLO为代表的将目的检测转换为回归问题的目的检测框架(YOLO, SSD); 第四局部引见一些最新的目的检测算法的停顿。
1、数据集和性能指标
目的检测常用的数据集包括PASCAL VOC,ImageNet,MS COCO等数据集,这些数据集用于研讨者测试算法性能或者用于竞赛。目的检测的性能指标要思索检测物体的位置以及预测类别的精确性,下面我们会说到一些常用的性能评价指标。
1.1 数据集
PASCAL VOC(The PASCAL Visual Object Classification)是目的检测,分类,分割等范畴一个有名的数据集。从2005到2012年,共举行了8个不同的应战赛。PASCAL VOC包含约10,000张带有边境框的图片用于锻炼和考证。但是,PASCAL VOC数据集仅包含20个类别,因而其被看成目的检测问题的一个基准数据集。
ImageNet在2013年放出了包含边境框的目的检测数据集。锻炼数据集包含500,000张图片,属于200类物体。由于数据集太大,锻炼所需计算量很大,因此很少运用。同时,由于类别数也比拟多,目的检测的难度也相当大。2014 ImageNet数据集和2012 PASCAL VOC数据集的比照在这里。
另外一个有名的数据集是Microsoft公司(见T.-Y.Lin and al. 2015)树立的MS COCO(Common Objects in COntext)数据集。这个数据集用于多种竞赛:图像标题生成,目的检测,关键点检测和物体分割。关于目的检测任务,COCO共包含80个类别,每年大赛的锻炼和考证数据集包含超越120,000个图片,超越40,000个测试图片。测试集最近被划分为两类,一类是test-dev数据集用于研讨者,一类是test-challenge数据集用于竞赛者。测试集的标签数据没有公开,以防止在测试集上过拟合。在COCO 2017 Detection Challenge中,旷视科技团队凭仗提出的Light-Head R-CNN模型夺得冠军(AP为0.526 ),看来还是two-stage算法精确度更胜一筹。
2015 COCO数据集的分割实例. 来源: T.-Y.Lin and al. (2015)
目的检测的主流数据集
1.2 性能指标
目的检测问题同时是一个回归和分类问题。首先,为了评价定位精度,需求计算IoU(Intersection over Union,介于0到1之间),其表示预测框与真实框(ground-truth box)之间的堆叠水平。IoU越高,预测框的位置越精确。因此,在评价预测框时,通常会设置一个IoU阈值(如0.5),只要当预测框与真实框的IoU值大于这个阈值时,该预测框才被认定为真阳性(True Positive, TP),反之就是假阳性(False Positive,FP)。
关于二分类,AP(Average Precision)是一个重要的指标,这是信息检索中的一个概念,基于precision-recall曲线计算出来。关于目的检测,首先要单独计算各个类别的AP值,这是评价检测效果的重要指标。取各个类别的AP的均匀值,就得到一个综合指标mAP(Mean Average Precision),mAP指标能够防止某些类别比拟极端化而弱化其它类别的性能这个问题。
关于目的检测,mAP普通在某个固定的IoU上计算,但是不同的IoU值会改动TP和FP的比例,从而形成mAP的差别。COCO数据集提供了官方的评价指标,它的AP是计算一系列IoU下(0.5:0.05:0.9,见阐明)AP的均匀值,这样能够消弭IoU招致的AP动摇。其实关于PASCAL VOC数据集也是这样,Facebook的Detectron上的有比拟明晰的完成。
除了检测精确度,目的检测算法的另外一个重要性能指标是速度,只要速度快,才干完成实时检测,这对一些应用场景极端重要。评价速度的常用指标是每秒帧率(Frame Per Second,FPS),即每秒内能够处置的图片数量。当然要比照FPS,你需求在同一硬件上停止。另外也能够运用处置一张图片所需时间来评价检测速度,时间越短,速度越快。
2、从Rcnn到Faster-Rcnn
从Rcnn开端Girshick大神将深度学习引入目的检测范畴,后来连续发力,最终将目的检测的一切步骤都统一在了深度学习框架之下,这就意味着一切的计算过程都能够在GPU内停止,从而计算精度和计算速度都有了很大提升。
2.1 Rcnn简介(原文衔接)
R-CNN(R. Girshick et al., 2014)是基于region proposal办法的目的检测算法系列开山之作,其先停止区域搜索,然后再对候选区域停止分类。在R-CNN中,选用Selective search办法(J.R.R. Uijlings and al. 2012)来生成候选区域,这是一种启示式搜索算法。它先经过简单的区域划分算法将图片划分红很多小区域,然后经过层级分组办法依照一定类似度兼并它们,最后的剩下的就是候选区域(region proposals),它们可能包含一个物体。
Selective Search办法:上面是分割结果,下面是候选框. 来源: J.R.R. Uijlings and al. (2012)
关于一张图片,R-CNN基于selective search办法大约生成2000个候选区域,然后每个候选区域被resize成固定大小(227×227)并送入一个CNN模型中,最后得到一个4096-d的特征向量。然后这个特征向量被送入一个多类别SVM分类器中,预测出候选区域中所含物体的属于每个类的概率值。每个类别锻炼一个SVM分类器,从特征向量中推断其属于该类别的概率大小。为了提升定位精确性,R-CNN最后又锻炼了一个边境框回归模型。锻炼样本为(P,G),其中P=(Px,Py,Pw,Ph)为候选区域,而G=(Gx,Gy,Gw,Gh)为真实框,G是与P的IoU最大的真实框(只运用IoU大于0.6的样本),回归器的目的值定义为:
tx=(Gx−Px)/Pw,ty=(Gy−Py)/Ph
tw=log(Gw/Pw),th=log(Gh/Ph)
在做预测时,应用上述公式能够反求出预测框的修正位置。R-CNN对每个类别都锻炼了单独的回归器,采用最小均方差损失函数停止锻炼。
R-CNN模型的锻炼是多管道的,CNN模型首先运用2012 ImageNet中的图像分类竞赛数据集停止预锻炼。然后在检测数据集上对CNN模型停止finetuning,其中那些与真实框的IoU大于0.5的候选区域作为正样本,剩余的候选区域是负样本(背景)。共锻炼两个版本,第一版本运用2012 PASCAL VOC数据集,第二个版本运用2013 ImageNet中的目的检测数据集。最后,对数据集中的各个类别锻炼SVM分类器(留意SVM锻炼样本与CNN模型的funetuning不太一样,只要IoU小于0.3的才被看成负样本)。
总体来看,R-CNN是十分直观的,就是把检测问题转化为了分类问题,并且采用了CNN模型停止分类,但是效果却很好。最好的R-CNN模型在2012 PASCAL VOC数据集的mAP为62.4%(比第二名高出了22个百分点),在2013 ImageNet上的mAP为31.4%(比第二名高出7.1个百分点)。
整体上看R-cnn比拟简单,与此同时也有两个 严重缺陷:
(1)selective search停止候选区域提取的过程在cpu内计算完成,占用了大量计算时间。
(2)对2000个候选框停止卷积计算,提取特征的时分,存在大量的反复计算,进一步增加了计算复杂度。针对以上两个缺陷,R Girshick分别在fast-Rcnn和faster-rcnn中停止了改良。
2. 2 fast-rcnn (原文衔接)
2.2.1 spp-net
由于fast-rcnn自创了ssp-net的思想,所以先来理解一下spp-net(原文衔接)
在rcnn种需求对2000个候选框停止卷积特征计算,而这2000个候选框是来自与同一张图片的,所以,作者思索到先对整张图片停止一次卷积计算,得到整张图片的卷积特征,然后根据每个候选框在原始图片中的位置,在卷积特征图中取出对应的区域的卷积特征。再将卷积图中的到的特征向量送入分类器,在这里产生了一个问题,就是每个候选框的大小是不一样的,得到的卷积特征的维度也会不一样,无法送入全衔接层,招致分类无法停止,为了将一切候选框的特征维度统一同来,作者就设计了spp-net:
SPP层原理如下所所示,假定CNN层得到的特征图大小为a×a(比方13×13,随输入图片大小而变化),设定的金字塔尺度为n×n bins(关于不同大小图片是固定的),那么SPP层采用一种滑动窗口池化,窗口大小win_size=⌈a/n⌉,步为stride=⌊a/n⌋,采用max pooling,实质上将特征图均分为n×n个子区域,然后对各个子区域max pooling,这样不管输入图片大小,经过SPP层之后得到是固定大小的特征。普通设置多个金字塔级别,文中运用了4×4,2×2和1×1三个尺度。每个金字塔都得一个特征,将它们衔接在一同送入后面的全衔接层即可,这样就处理了变大小图片输入的问题了。SPP-net在ImageNet ILSVRC 2014图像分类大赛中夺得了第三名。
SPP-net中的空间金字塔池化层
那么SPP-net和R-CNN有什么关系呢?在R-CNN中,由于每个候选区域大小是不同,所以需求先resize成固定大小才干送入CNN网络,SPP-net正好能够处理这个问题。继续上前一步,就是R-CNN每次都要挨个运用CNN模型计算各个候选区域的特征,这是极端费时的,不如直接将整张图片送入CNN网络,然后抽取候选区域的对应的特征区域,采用SPP层,这样能够大大减少计算量,并提升速度。基于SPP层的R-CNN模型在精确度上提升不是很大,但是速度却比原始R-CNN模型快24-102倍。这也正是接下来Fast R-CNN所改良的方向。
2.2.2 ROI pooling layer
在fast-rcnn中作者采用了ssp-net的简化版:只对ssp-net停止了一种尺度的切分,之后直接下采样,得到特征向量。
2.2.3 fast-rcnn整体框架
Fast R-CNN(FastRegion-based Convolutional Network, R. Girshick 2015)的提出主要是为了减少候选区域运用CNN模型提取特征向量所耗费的时间,其主要自创了SPP-net的思想。在R-CNN中,每个候选区域都要单独送入CNN模型计算特征向量,这是十分费时的,而关于Fast R-CNN,其CNN模型的输入是整张图片,然后分离RoIs(Region of Interests)pooling和Selective Search办法从CNN得到的特征图中提取各个候选区域的所对应的特征。关于每个候选区域,运用RoI pooling层来从CNN特征图中得到一个固定长和宽的特征图(长和宽是超参数,文当选用7×77×7),RoI pooling的原理很简单,其依据候选区域按比例从CNN特征图中找到对应的特征区域,然后将其分割成几个子区域(依据要输出的特征图的大小),然后在每个子区域应用max pooling,从而得到固定大小的特征图,这个过程是可导的(见RoI pooling层的Caffe官方完成,RoI pooling层在大局部深度学习框架中是没有官方完成的,需求本人扩展,Tensorflow上的开源完成能够参考deepsense-ai/roi-pooling,但是在TensorFlow中能够基于一种crop+resize+pooling的方式,能够看一下Luminoth上的完成),RoI pooling层相比SPP层看起来主要是只运用一个金字塔级别。然后RoI pooling层得到的特征图送入几个全衔接层中,并产生新的特征向量,这些特征向量分别用于一个softmax分类器(预测类别)和一个线性回归器上(用于调整边境框位置)来停止检测。在完成上是运用两个不同的全衔接层,第一个全衔接层有N+1N+1个输出(NN是类别总数,11是背景),表示各个类别的概率值;第二个全衔接层有4N4N个输出,表示坐标回归值(tx,ty,tw,th)(tx,ty,tw,th),这个与R-CNN是一样的,每个类别都预测4个位置坐标值。
Fast R-CNN的分类与回归预测. 来源
RoI pooling原理图,特征图大小为8x8,候选区域为5x7,输出2x2. 来源
Fast R-CNN与R-CNN的另外的一个主要区别点是采用了softmax分类器而不是SVM分类器,而且锻炼过程是单管道的,由于Fast R-CNN将分类误差和定位误差兼并在一同锻炼,定位误差采用smooth L1 而不是R-CNN中的L2。这里说点题外话,就是R-CNN锻炼是多管道的,除了对CNN模型预锻炼,R-CNN还先对CNN模型funetuning,运用的是softmax分类器,但是最后却又锻炼SVM分类器(缘由能够见原论文),直觉上觉得有点多此一举,所以如今Fast R-CNN直接采用softmax分类器了。Fast R-CNN锻炼采用mini-batch sampling,每个mini-batch大小为128128,从N=2N=2个图片中构建,其中25%来自正样本(IoU>=0.5),75%从负样本中抽样得到(背景,IoU∈[0.1,0.5)∈[0.1,0.5)),这里的IoU阈值属于超参数。在图像分类中,当我们说batch_size=32时,是指的是32个图片,在Fast R-CNN中并不是这样,由于一个图片含有很多RoIs,每个batch运用的图片十分少(内存限制),所以有时分你会看到Fast R-CNN锻炼时直接从一个图片中构建batch,这完成起来更容易一些。
L(p,u,tu,v)=Lcls(p,u)+λ[u>0]Lloc(tu,v)L(p,u,tu,v)=Lcls(p,u)+λ[u>0]Lloc(tu,v)
最好的Fast R-CNN模型在2007 PASCAL VOC测试集上的mAp为70%,在2010 PASCAL VOC测试集上的mAP为68.8%,而在2012 PASCAL VOC测试集上的mAP为68.4%,精确度相比R-CNN略有提升,其实主要是速度更快。
Fast R-CNN模型构造图
在rcnn中停止卷积特征提取的时分,需求对图片中的2000个候选框停止卷积计算,其中很多计算是反复的,同时spp-net和rcnn都需求多阶段的锻炼包括特征提取、微调网络、锻炼svm分类器、边框回归等,不只过程冗杂而且中间会产生大量的中间结果文件,占用大量内存。为此作者除了采用roi-poolinglayer以外还设计了多任务损失函数(multi-taskloss),将分类任务和边框回归统一到了一个框架之内,整体思绪如下:
用selective search 办法从原始图片中提取2000个候选框(ROI),对整张图片停止卷积计算,得到卷积特征图(conv feature map),然后应用ROI pooling layer从卷积特征图种提取每个候选框的特征向量,经过全衔接层之后,特征向量进入两个输出层:一个停止分类,判别该候选框内的物体品种,另一个停止边框回归,判别目的在图中的精确位置。
fast-rcnn缺陷在于依然没有处理selectivesearch停止候选框选择的时分计算速度慢的问题。
2.3 faster-rcnn (原文衔接)
关于Fast R-CNN,其依然需求selective search办法来消费候选区域,这是十分费时的。为理解决这个问题,Faster R-CNN模型(The Faster Region-based Convolutional Network, S. Ren and al. 2016)引入了RPN (Region Proposal Network)直接产生候选区域。Faster R-CNN能够看成是RPN和Fast R-CNN模型的组合体,即Faster R-CNN = RPN + Fast R-CNN。
关于RPN网络,先采用一个CNN模型(普通称为特征提取器)接纳整张图片并提取特征图。然后在这个特征图上采用一个N×NN×N(文中是3×33×3)的滑动窗口,关于每个滑窗位置都映射一个低维度的特征(如256-d)。然后这个特征分别送入两个全衔接层,一个用于分类预测,另外一个用于回归。关于每个窗口位置普通设置kk个不同大小或比例的先验框(anchors, default bounding boxes),这意味着每个位置预测kk个候选区域(region proposals)。关于分类层,其输出大小是2k2k,表示各个候选区域包含物体或者是背景的概率值,而回归层输出4k4k个坐标值,表示各个候选区域的位置(相对各个先验框)。关于每个滑窗位置,这两个全衔接层是共享的。因而,RPN能够采用卷积层来完成:首先是一个n×nn×n卷积得到低维特征,然后是两个1×11×1的卷积,分别用于分类与回归。
RPN 网络的全称region proposal network,目的是应用神经网络停止候选框的选择,其实RPN也能够看做是一个分类网络,不过他的目的是分开前景(包含有ROI的局部)和背景(包含有ROI的局部),也就是一个二分类问题。
为了提取候选框,作者运用了一个小的神经网络也即就是一个n×n的卷积核(文中采用了3×3的网络),在经过一系列卷积计算的特征图上停止滑移,停止卷积计算。每一个滑窗计算之后得到一个低维向量(例如VGG net 最终有512张卷积特征图,每个滑窗停止卷积计算的时分能够得到512维的低维向量),得到的特征向量,送入两种层:一种是边框回归层停止定位,另一种是分类层判别该区域是前景还是背景。3*3滑窗对应的每个特征区域同时预测输入图像3种尺度(128,256,512),3种长宽比(1:1,1:2,2:1)的region proposal,这种映射的机制称为anchor。所以关于40*60图图,总共有约20000(40*60*9)个anchor,也就是预测20000个region proposal。
能够看到RPN采用的是二分类,仅辨别背景与物体,但是不预测物体的类别,即class-agnostic。由于要同时预测坐标值,在锻炼时,要先将先验框与ground-truth box停止匹配,准绳为:(1)与某个ground-truth box的IoU最高的先验框;(2)与某个ground-truth box的IoU值大于0.7的先验框,只需满足一个,先验框就能够匹配一个ground-truth,这样该先验框就是正样本(属于物体),并以这个ground-truth为回归目的。关于那些与任何一个ground-truth box的IoU值都低于0.3的先验框,其以为是负样本。RPN网络是能够单独锻炼的,并且单独锻炼出来的RPN模型给出很多region proposals。由于先验框数量庞大,RPN预测的候选区域很多是堆叠的,要先停止NMS(non-maximum suppression,IoU阈值设为0.7)操作来减少候选区域的数量,然后依照置信度降序排列,选择top-N个region proposals来用于锻炼Fast R-CNN模型。RPN的作用就是替代了Selective search的作用,但是速度更快,因而Faster R-CNN无论是锻炼还是预测都能够加速。
Faster R-CNN模型采用一种4步迭代的锻炼战略:(1)首先在ImageNet上预锻炼RPN,并在PASCAL VOC数据集上finetuning;(2)运用锻炼的PRN产生的region proposals单独锻炼一个Fast R-CNN模型,这个模型也先在ImageNet上预锻炼;(3)用Fast R-CNN的CNN模型局部(特征提取器)初始化RPN,然后对RPN中剩余层停止finetuning,此时Fast R-CNN与RPN的特征提取器是共享的;(4)固定特征提取器,对Fast R-CNN剩余层停止finetuning。这样经过屡次迭代,Fast R-CNN能够与RPN有机交融在一同,构成一个统一的网络。其实还有另外一中近似结合锻炼战略,将RPN的2个loss和Fast R-CNN的2个loss分离在一同,然后共同锻炼。留意这个过程,Fast R-CNN的loss不对RPN产生的region proposals反向传播,所以这是一种近似(假如思索这个反向传播,那就是非近似结合锻炼)。应该来说,结合锻炼速度更快,并且能够锻炼出同样的性能。
2.3.2 faster-rcnn 整体思绪
首先对整张图片停止卷积计算,得到卷积特征,然后应用RPN停止候选框选择,再返回卷积特征图取出候选框内的卷积特征应用ROI提取特征向量最终送入全衔接层停止准确定位和分类,总之:RPN+fast-rcnn=faster-rcnn。
2.3.3 faster-rcnn小结
Faster R-CNN将不断以来别离的region proposal和CNN分类交融到了一同,运用端到端的网络停止目的检测,无论在速度上还是精度上都得到了不错的进步。但是Faster-RCNN还是达不到实时的目的检测,预先获取region proposal,然后在对每个proposal分类计算量还是比拟大。比拟侥幸的是YOLO这类目的检测办法的呈现让实时性也变的成为可能。总的来说,从R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN一路走来,基于深度学习目的检测的流程变得越来越精简,精度越来越高,速度也越来越快。能够说基于region proposal的R-CNN系列目的检测办法是当前目的最主要的一个分支。
3 运用回归办法停止目的检测
虽然faster-rcnn在计算速度方面曾经获得了很大停顿,但是依然无法满足实时检测的请求,因而有人提出力基于回归的办法直接从图片种回归的出目的物体的位置以及品种。具有代表性的两种办法是YOLO和SSD。
3.1 YOLO (原文衔接)
3.1.1 整体思绪
(1) 给个一个输入图像,首先将图像划分红7*7的网格
(2) 关于每个网格,我们都预测2个边框(包括每个边框是目的的置信度以及每个边框区域在多个类别上的概率)
(3)依据上一步能够预测出7*7*2个目的窗口,然后依据阈值去除可能性比拟低的目的窗口,最后非极大值抑止去除冗余窗口即可。
能够看到整个过程十分简单,不需求中间的region proposal在找目的,直接回归便完成了位置和类别的断定。
3.1.2 网络构造
YOLO的网络构造图,前边的网络构造跟GoogLeNet的模型比拟相似,主要的是最后两层的构造,卷积层之后接了一个4096维的全衔接层,然后后边又全衔接到一个7*7*30维的张量上。实践上这7*7就是划分的网格数,如今要在每个网格上预测目的两个可能的位置以及这个位置的目的置信度和类别,也就是每个网格预测两个目的,每个目的的信息有4维坐标信息(中心点坐标+长宽),1个是目的的置信度,还有类别数20(VOC上20个类别),总共就是(4+1)*2+20 = 30维的向量。这样能够应用前边4096维的全图特征直接在每个网格上回归出目的检测需求的信息(边框信息加类别)。
Yolo办法的缺陷显而易见,固然舍弃了Region proposal阶段,加快了速度,但是定位精度比拟低,与此同时带来的问题是,分类的精度也比拟低。
3.2 SSD(原文衔接)
鉴于yolo定位精度低的缺陷,SSD 分离faster-rcnn的archor机制和yolo的回归思想停止目的检测,使得定位精度和分类精度相较与yolo都有了大幅度的进步。
3.2.1 The Single Shot Detector
上图是SSD的一个框架图,首先SSD获取目的位置和类别的办法跟YOLO一样,都是运用回归,但是YOLO预测某个位置运用的是全图的特征,SSD预测某个位置运用的是这个位置四周的特征(觉得更合理一些)。那么如何树立某个位置和其特征的对应关系呢?可能你曾经想到了,运用Faster R-CNN的anchor机制。如SSD的框架图所示,假设某一层特征图大小是8*8,那么就运用3*3的滑窗提取每个位置的特征,然后这个特征回归得到目的的坐标信息和类别信息(图c)。不同于Faster R-CNN,这个anchor是在多个feature map上,这样能够应用多层的特征并且自然的到达多尺度(不同层的feature map 3*3滑窗感受野不同).
3.2.2 SSD整体框架
首先第一步和其他办法一样应用卷积操作提取卷积特征,在最后级层卷积时分开端对与每一种尺度上的特征图运用archor办法停止候选框提取,根据archor在不同尺度上得到的候选框,停止目的品种和位置的判别。
3.2.3 小结
ssd和yolo采用了回归办法停止目的检测使得目的检测速度大大加快,ssd引入faster-rcnn的archor机制使得目的定位和分类精度都较yolo有了大幅度进步。基于回归办法的目的检测根本到达了实时的请求,是目的检测的另一个主要思绪。
4 目的检测办法最新停顿
1、分离上下文特征停止目的检测。关于某一类物体,它的四周呈现的内容将很好的对其位置停止锁定。
2、多特征交融。除了应用高维的卷积操作之后的特征之外,同时应该分离低维的卷积特征停止目的检测检测,以便更好的应用细节信息。
3、运用循环神经网络(RNN)停止目的检测。目前主流的图像处置办法普通都是基于cnn的,其实RNN的很多特性或许能在目的检测问题上产生意想不到的效果。例如Girshick的Inside-Outside-Net。
上一条:人工智能科普
下一条:人像识别SDK,人脸活体SDK