1、R-CNN系列传统目标检测基于候选区域的目标检测回归方法的深度学习目标检测faster-RCNNfast-RCNNSPPNETRCNNYOLO区域选择特征提取分类器分类滑动窗口策略手工设计特征SVM、adaboost等两个问题传统目标检测1 0 -110 -11 0 -11 1 10 0 0-1 -1 -1基本概念Region proposals CNN:卷积神经网络R-CNN:Region with CNN features将检测问题转换成为region proposals的分类问题 Selective Search:选择性搜索 Warp:图像Region变换 Supervised pre-
2、training:有监督预训练也称迁移学习 IOU:交并比IOU=(AB)/(AB) NMS:非极大值抑制 DPM:使用判别训练的部件模型进行目标检测selective searchWarpPASCAL VOC上的检测率从从35.1%提升到提升到53.7%基于候选区域的目标检测用SGD训练CNNImageNet 1000 (N+1) classification layer(N: 目标类数目)CNN架构不变class-specific linear SVMs 给出每类概率IOU:交并比NMS:非极大值抑制1.区域提名:通过Selective Search从原始图片提取2000个左右区域候选框;
3、2.区域归一化:把所有侯选框缩放成固定大小(227227)Warp;3.通过CNN网络提取特征(在特征层的基础上添加两个全连接层);4.使用SVM结合NMS(非极大值抑制)获得区域边框(BBox),最后用DPM中类似的线性回归方法精修(Refine)边框位置。227x227Selective Search for Object Recognition Selective Search需要考虑的几个问题: 1. 适应不同尺度(Capture All Scales):穷举搜索(Exhaustive Selective)通过改变窗口大小来适应物体的不同尺度,选择搜索(Selective Search
4、)同样无法避免这个问题。算法采用了图像分割(Image Segmentation)和层次算法(Hierarchical Algorithm)有效地解决了这个问题。 2. 多样化(Diversification):单一的策略无法应对多种类别的图像。使用颜色(color)、纹理(texture)、大小(size)等多种策略对分割好的区域进行合并。 3. 效率(Fast to Compute)颜色( RGB、灰度、HSV )、纹理(texture)、大小、吻合情况的相似度图像分割 图像分割(Image Segmentation)的主要目的也就是将图像(image)分割成若干个特定的、具有独特性质的区
5、域(region),然后从中提取出感兴趣的目标(object)。 1. 图像(image)的图(graph)表示;Spanning Tree)。 把图像中的每一个像素点看成一个顶点vi V(node或vertex),像素点之间的关系对(可以自己定义其具体关系,一般来说是指相邻关系)构成图的一条边ei E,这样就构建好了一个图 G = (V,E)。 2. 最小生成树(Minimun ) 将图像表达成图之后,将每个节点(像素点)看成单一的区域,然后进行合并。使用最小生成树方法合并像素点,然后构成一个个区域。相似的区域在一个分支(Branch)上面(有一条最边连接),大大减少了图的边数。Object
6、 proposal 转换(Warp) 将各个Region的大小变换到CNN 的输入尺寸 变换:Scale: (B) Isotropically 各向同性地 (C)anisotropically 各向异性地Warp: 各向异性缩放 +16pixels无附加(p=0)Warping with context padding(P=16)Warp变换向四周均匀扩充ScaleRegion的原始大小无上下文紧密区域原文A. 原始RegionB. The first method (“tightest square with context”) encloses each object proposal i
7、nside the tightest square and then scales (isotropically) the image contained in that square to the CNN input size.C. A variant on this method (“tightest square without context”) excludes the image content that surrounds the original object proposal.D. The second method (“warp”)anisotropically scale
8、s each object proposal to the CNN input size. Supervised pre-training迁移学习 对象分类:标注好的训练数据非常多; 目标检测:标注数据很少,如何用少量的标注数据,训练高质量的模型 迁移学习: 例如我们先对Imagenet数据集(ILSVRC 2012的数据集)进行CNN的分类预训练( pre-traing ),然后在PASCAL数据集上微调( fine-runing )。 ILSVRC: ImageNet Large Scale Visual Recognition Challenge (ImageNet大规模图像识别挑战赛)
9、 PASCAL VOC Challenge: Pattern Analysis, Statical Modeling and Computational Learning Visual Object Classes(模式分析,统计建模,计算学习 视觉物体分类挑战赛)检测检测 定位定位 + 分类分类CNN训练及特征提取训练:1.预训练: 训练集: ILSVRC 2012;输出:1000维类别标号;学习率:0.01 提取的特征为4096维,送入一个4096-1000的全连接(fc)层进行分类 2.调优训练 训练集:PASCAL VOC 2007;学习率:0.001 输入:227x227的正负样本(
10、正:32,负:96;包括所有类别) 输出:21维(20类+背景); 同样使用上述网络,最后一层换成4096-21的全连接网络 正负样本的选取: IOU0.5,标记为positive,否则标记为negativeSVM分类器输入:4096*N或者21*NNIPS, 2012,by A. Krizhevsky et al. ImageNet classification with deep convolutional neural networks. 网络只需要将最后的1000类的分类层换成21类的分类层(20个VOC中的类别和1个背景类),其他都不需要变。训练SVM分类器 训练特定类别的SVM分类
11、器 训练SVM的正负样本:作者同样是使用IoU阈值的方法,计算每一个region proposal与标准框的IoU,这次的阈值为0.3(实验结果),大于这个阈值的作为正样本,否则为负样本。 Hard negative mining 一般来说训练一个SVM分类器,需要正负两个样本,训练集图片中作为正样本很少,但是随机产生用于训练的负样本可能远远大于正样本,这样训练出来的SVM效果并不好,所以利用Hard negative mining方法,从负样本中选取出一些有代表性的负样本,使得分类器的训练结果更好。 正:标注样本+IOU0.5 负:不包含正样本区域 输入:CNN提取的区域特征 输出:每个候选
12、区域特征的概率输出获取每个类别的Bounding box(BBox)针对各个类别(N): CNN生成每个Region proposal固定长度的特征向量 SVMs分类器计算每个Region特征向量的Score 每个Region(区域)的Score排序 NMS: 选取概率最大的区域,计算与其他区域的IOU; 如果IOU大于给定阈值(经验值0.3)丢弃该区域; 同样的过程依次遍历所有剩余的Region。 用各个类指定的回归模型来细化框的位置NMS:非极大值抑制例如:定位一个车辆,算法就找出了若干方框需要判别哪些矩形框是没用的。 非极大值抑制:先假设有6个矩形框,根据分类器分类概率做排序,从小到大分
13、别属于车辆的概率分别为A、B、C、D、E、F。 (1)从最大概率矩形框F开始,分别判断 AE与F的重叠度IOU是否大于某个设定的阈值; (2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。 (3)从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。 就这样一直重复,找到所有被保留下来的矩形框。IOU交并比 IOU表示了bounding box 与 ground truth 的重叠度,如下图所示: 矩形框A、B的重合度IOU计算公式: IOU=(AB)/(AB
14、) 或 IOU=SI/(SA+SB-SI) 考察一个候选框和当前图像上所有标定框重叠面积最大的一个。如果重叠比例大于设定阈值,则认为此候选框为此标定的类别;否则认为此候选框为背景。位置精修 根据最后输出的feature 进一步做了regression, 采用的是之前在DPM检测中的用的Linear regression model 例如:左图自行车的左轮,如果我们只用rootfilter检测出来的区域,即红色区域,那么前轮会被切掉一部分,但是如果能综合partfilter检测出来的bounding box就能得到更加确的bounding box如右图。使用最小二乘(Least Squres)线
15、性回归模型。回归器 对每一类目标,使用一个线性回归器进行精修。 正则项 =10000。 输入:CNN网络pool5层的4096维特征 输出:xy方向的缩放和平移W=x,y,w,h。训练样本: 判定为本类的候选框中,和真值重叠面积大于0.6的候选框。 其中*可以是:x,y,w,h,(x,y)是目标中心相对位置, w,h是变换后的宽度和高度缩放比例的对数值 R-CNN的缺点l虽然R-CNN在ILSVRC 2013数据集上的mAP由Overfeat的24.3%提升到了31.4%,第一次有了质的改变。但R-CNN有很多缺点:重复计算:R-CNN虽然不再是穷举,但依然有两千个左右的候选框,这些候选框都需
16、要进行CNN操作,计算量依然很大,其中有不少其实是重复计算;SVM模型:而且还是线性模型,在标注数据不缺的时候显然不是最好的选择;训练测试分为多步:区域提名、特征提取、分类、回归都是断开的训练的过程,中间数据还需要单独保存;训练的空间和时间代价很高GPU上处理一张图片需要13秒,CPU上则需要53秒。SPP-Net: MotivationCropping may loss some information about the object 截取的区域未涵盖整个目标Warpping may change the objects appearance 缩放带来图像的扭曲 FC layer need
17、 a fixed-lenground truthh input while conv layer can be adapted to arbitrary input size.事实上,CNN的卷积层不需要固定尺寸的图像,而全连接层是需要固定大小输入的 提出了SPP层放到卷积层的后面 SPPNet将任意大小的图像池化生成固定长度的图像表示SPP-Net: MotivationSPP-Net: Training for Detection(1)Conv5 feature mapConv5 feature mapConv5 feature mapImage PyramidFeatMap Pyrami
18、dsconvStep1. Generate a image pyramid and exact the conv FeatMap of the whole image金字塔用了6x6 3x3 2x2 1x1,共36+9+4+1=50个特征做出的主要改进在于SPP-net能够一次得到整个feature map,大大减少了计算proposal的特征时候的运算开销。具体做法,将图片缩放到s480,576,688,864,1200的大小,尽量让region在s集合中对应的尺度接近224x224,然后选择对应的feature map进行提取空间金字塔池化层6x6 3x3 2x2 1x1s480,576,
19、688,864,1200224x2 224x3 224x6SPP-Net: Training for Detection(2) Step 2, For each proposal, walking the image pyramid and find a project version that has a number of pixels closest to 224x224. (For scaling invariance in training.) Step 3, find the corresponding FeatMap in Conv5 and use SPP layer to p
20、ool it to a fix size. Step 4, While getting all the proposals feature, fine-tune the FC layer only. Step 5, Train the class-specified SVMSPP-Net: Training for Detection(2)SPP-Net: Testing for DetectionAlmost the same as R-CNN, except Step3.SPP-Net: Training for Detection SPP是BOW的扩展,将图像从精细空间划分到粗糙空间,之
21、后将局部特征聚集。在CNN成为主流之前,SPP在检测和分类的应用比较广泛。 SPP的优点:1)任意尺寸输入,固定大小输出;2)层多;3)可对任意尺度提取的特征进行池化。 Speed: 64x faster than R-CNN using one scale, and 24x faster using five-scale paramid. mAP: +1.2 mAP vs R-CNNSPP-Net速度提升2. 训练花费过大的硬盘开销和时间1. 训练分多阶段,并不是端到端的训练过程FC layersConv layersSVMregressorstore3. 训练sppnet只微调全连阶层(检
22、测除了语义信息还需要位置信息,多层pooling操作导致位置信息模糊)Fast R-CNNSPP-Net: 不足Fast R-CNNRoss Girshick, Fast R-CNN, Arxiv tech reportJOINT TRAINING!多任务损失函数(multi-task loss)ROI pooling layer特征提取和分类放在一个网络之中,联合训练Fast R-CNN: Joint Training FrameworkJoint the feature extractor, classifier, regressor together in a unified frame
23、work(RoI)候选区域:图像序号几何位置Fast R-CNNSPP-Netimage pyramids (multi scale)brute force (single scale)直接将image设置为某种scaleConv5 feature mapconvIn practice, single scale is good enough. (The main reason why it can faster x10 than SPP-Net)Fast R-CNN边框回归:A smooth L1 loss which is less sensitive to outliers than L
24、2 loss多任务损失函数:Fast R-CNN第一项是分类损失函数,第二项是定位损失函数,k是类别索引,R个ROI的损失值取平均,k*是实际类别Fast R-CNN: Other tricks第34页 | 共25页Fast R-CNN 技巧对全连接层参数矩阵做了一个SVD分解,mAP几乎不怎么降(0.3%),但速度提速30%数据增量:水平翻转将VOC2012的数据也作为拓展数据加入到finetune的数据中,结果VOC07的mAP从66.9到了70.0 网络末端同步训练同步训练的分类和位置调整,提升准确度 使用多尺度多尺度的图像金字塔,性能几乎没有提高 倍增训练倍增训练数据,能够有2%-3%
25、的准确度提升 网络直接输出各类概率(softmax),比SVM分类器性能略好 更多候选窗更多候选窗不能提升性能Fast RCNN和RCNN相比,训练时间从84小时减少为9.5小时,测试时间从测试时间从47秒减少为秒减少为0.32秒秒。在PASCAL VOC 2007上的准确率相差无几,约在66%-67%之间Fast R-CNN 结论1. Region proposal耗时(提region proposal 23s,而提特征分类只需0.32s),大部分时间用来提Region proposal2. 伪端到端训练(region proposal使用selective search先提取处来,占用磁盘
26、存储)FasterRCNN卷积网络直接产生候选区域RPN本质为滑动窗口Fast R-CNN不足K个建议框是目标/非目标的估计概率即k个box的坐标编码anchor : 每个anchor以当前滑动窗口中心为中心,并对应一种尺度和长宽比例如:3个尺度和三个长宽比对于每个位置就有k=9个anchor平移不变性128x128、256x256、512x5121:2、1:1、2:1每个卷积特征映射大约2000个anchor为每个为每个anchoranchor分配一个二进制标签分配一个二进制标签(是(是/ /否目标)否目标)1 1)任意与)任意与ground truthground truth有有大于大于0
27、.70.7的的IoUIoU交叠的交叠的anchoranchor赋值为赋值为1 12 2)选)选取取ground truthground truth的的IoUIoU最大的最大的anchoranchor赋值为赋值为1 13 3)分配负标签给与所有分配负标签给与所有ground ground truthtruth包围盒的包围盒的IoUIoU比率都低于比率都低于0.30.3的的anchoranchor一个ground truth包围盒可能分配正标签给多个anchorFaster R-CNN第41页 | 共25页Faster R-CNN对一个图像的损失函数:其中:i是一个mini-batch中ancho
28、r的索引; Pi是anchor i是目标的预测概率; ground truth标签Pi* 就是1,如果anchor为负,Pi* 就是0; ti是一个向量,表示预测的包围盒的4个参数化坐标; ti* 是与正anchor对应的ground truth的坐标向量。 Ncls:mini-batch的大小 (256 ) Nreg:anchor位置的数量 (大约2400) =10分类损失函数:位置损失函数:其中R=意味着只有正anchor(Pi* =1)才有回归损失平衡权重归一化1 Imagenet上预训练模型初始化网络参数,微调RPN网络2 使用1中网络提取候选区域训练fastRCNN3 用2的fast
29、RCNN重新初始化RPN,固定卷积层微调4 固定2中fastRCNN卷积层,用3中RPN提取候选微调缺点:1.无法达到实时2.预先获取候选区域,在对每个proposal分类计算量比较大Faster R-CNN简单网络目标检测速度达到简单网络目标检测速度达到17fps,在PASCAL VOC上准确率为59.9%;复杂网络复杂网络达到5fps,准确率78.8%(1) 给个一个输入图像,首先将图像划分成SxS的网格(2) 对于每个网格,我们都预测B个边框(包括每个边框是目标的置信度以及每个边框区域在多个类别上的概率)(3) 根据上一步可以预测出SxSxB个目标窗口,然后根据阈值去除可能性比较低的目标
30、窗口,最后NMS去除冗余窗口即可。YOLO的核心思想: 利用整张图作为网络的输入,直接在输出层回归bounding box的位置和bounding box所属的类别。 每个bounding box要预测(x, y, w, h)和confidence共5个值 每个网格还要预测一个类别信息,记为C类基于回归YOLO输出就是S x S x (5*B+C)的一个tensorYOLO 在PASCAL VOC中,图像输入为448x448,取S=7,B=2,一共有20个类别(C=20)。则输出就是7x7x(5*2+20)=7x7x30的一个tensor 每个grid有30维,这30维中,8维是回归box的坐
31、标,2维是box的confidence,还有20维是类别,其中坐标的x,y用对应网格的offset归一化到0-1之间,w,h用图像的width和height归一化到0-1之间。第44页 | 共25页YOLO可以每秒处理45张图像每个网络预测目标窗口时使用的是全图信息只使用7*7的网格回归会使得目标不能非常精准的定位,检测精度并不是很高增强版本GPU中能跑45fps,简化版本155fps 只有当某个网格中有object的时候才对classification error进行惩罚。 只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。 YOLO对相互靠的很近的物体,还有很小的群体 检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。 对测试图像中,同一类物体出现的新的不常见的长宽比和其他情况是。泛化能力偏弱。 由于损失函数的问题,定位误差是影响检测效果的主要原因。尤其是大小物体的处理上,还有待加强。YOLO评价Thanks!
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。