目标检测

目标检测技术的演变

在过去的十多年时间里,传统的机器视觉领域,通常采用特征描述子来应对目标识别任务,这些特征描述子最常见的就是 SIFT 和 HOG。随着深度学习发展,基于深度学习的目标检测方法也在不断演变,大致的趋势R-CNN->SppNET->Fast R-CNN->Faster R-CNN。在R-CNN方法前,VOC 2007数据集上传统方法所达到的最高平均精确度(mAP)为40%左右,R-CNN将该值提高到58.5%,Fast R-CNN在VOC 2007上的平均精确度为70%,Faster R-CNN又将该值提高到78.8%。这几种方法一脉相承,又不断改进。

R-CNN

论文:《Rich feature hierarchies for accurate oject detection and semantic segmentation》,2014年发表。宗旨:利用候选区域与 CNN 结合做目标定位。
给定一张输入图片,从图片中提取 2000 个类别独立的候选区域。
对于每个区域利用 CNN 抽取一个固定长度的特征向量。
再对每个区域利用 SVM 进行目标分类。
在这里插入图片描述
步骤一:训练(或者下载)一个分类模型(比如AlexNet)
在这里插入图片描述
步骤二:对该模型做fine-tuning,这里只需要识别 21 个类别,这是 VOC 规定的 20 个类别加上背景这个类别。
在这里插入图片描述
步骤三:特征提取
  • 提取图像的所有候选框(选择性搜索)
  • 对于每一个区域:修正区域大小以适合CNN的输入,做一次前向运算,将第五个池化层的输出(就是对候选框提取到的特征)存到硬盘
在这里插入图片描述
步骤四:训练一个SVM分类器(二分类)来判断这个候选框里物体的类别。每个类别对应一个SVM,判断是不是属于这个类别,是就是positive,反之nagative。
在这里插入图片描述
步骤五:使用回归器精细修正候选框位置:对于每一个类,训练一个线性回归模型去判定这个框是否框得完美。
在这里插入图片描述
速度: 经典的目标检测算法使用滑动窗法依次判断所有可能的区域。R-CNN则采用Selective Search方法预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上采用CNN提取特征,进行判断,速度大大提升。
候选区域:R-CNN采用的是Selective Search算法。Alextnet的输入图像大小是 227x227,而通过Selective Search产生的候选区域大小不一,为了与Alexnet兼容,R-CNN采用了非常暴力的手段,那就是无视候选区域的大小和形状,统一变换到227*227的尺寸。R-CNN在对Region进行变换的时候,首先对这些区域进行膨胀处理,在其box周围附加了p个像素,也就是人为添加了边框,在这里p=16。
训练: 经典的目标检测算法在区域中提取人工设定的特征。本文则采用深度网络进行特征提取。使用两个数据库: 一个较大的识别库(ImageNet ILSVC 2012):标定每张图片中物体的类别。一千万图像,1000类。 一个较小的检测库(PASCAL VOC 2007):标定每张图片中,物体的类别和位置,一万图像,20类。 本文使用识别库进行预训练得到CNN(有监督预训练),而后用检测库调优参数,最后在检测库上评测。
测试:R-CNN 在每张图片上抽取近 2000个物体候选框(bounding box),每个bounding box的特征向量,特征向量为4096维,对于每个bounding box的特征,进行分类,分类算法采用线性SVM。针对每个类,通过计算 IoU 指标,采取非极大性抑制,以最高分的区域为基础,剔除掉那些重叠位置的区域。

SPP Net

SPP:Spatial Pyramid Pooling(空间金字塔池化)
1.结合空间金字塔方法实现CNNs的对尺度输入。
一般CNN后接全连接层或者分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp,这些预处理会造成数据的丢失或几何的失真。SPP Net的第一个贡献就是将金字塔思想加入到CNN,实现了数据的多尺度输入。

如下图所示,在卷积层和全连接层之间加入了SPP layer。此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出尺度始终是固定的。
在这里插入图片描述
2. 只对原图提取一次卷积特征
在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。
所以SPP Net根据这个缺点做了优化:只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框zaifeature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。节省了大量的计算时间,比R-CNN有一百倍左右的提速。
在这里插入图片描述

Fast R-CNN

R-CNN的进阶版Fast R-CNN就是在RCNN的基础上采纳了SPP Net方法,对RCNN作了改进,使得性能进一步提高。
R-CNN与Fast RCNN的区别有哪些呢?
RCNN的缺点:即使使用了selective search等预处理步骤来提取潜在的bounding box作为输入,但是RCNN仍会有严重的速度瓶颈,原因也很明显,就是计算机对所有region进行特征提取时会有重复计算,Fast-RCNN正是为了解决这个问题诞生的。
在这里插入图片描述
本文提出了一个可以看做单层sppnet的网络层,叫做ROI Pooling,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量。而我们知道,conv、pooling、relu等操作都不需要固定size的输入,因此,在原始图片上执行这些操作后,虽然输入图片size不同导致得到的feature map尺寸也不同,不能直接接到一个全连接层进行分类,但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。另外,之前RCNN的处理流程是先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做bbox regression,而在Fast-RCNN中,作者巧妙的把bbox regression放进了神经网络内部,与region分类和并成为了一个multi-task模型,实际实验也证明,这两个任务能够共享卷积特征,并相互促进。Fast-RCNN很重要的一个贡献是成功的让人们看到了Region Proposal+CNN这一框架实时检测的希望,原来多类检测真的可以在保证准确率的同时提升处理速度,也为后来的Faster-RCNN做下了铺垫。

Faster R-CNN

Faster R-CNN:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》论文的核心是加入RPN(RegionProposal Network)区域生成网络 。
在这里插入图片描述

汇总

项目R-CNNSPPNetFast R-CNNFaster R-CNN
提取候选框Selective SearchSelective SearchSelective SearchRPN网络
提取特征次数每个区域计算卷积计算一次卷积计算一次卷积计算一次卷积
提取特征卷积神经网络CNN卷积+ROI卷积+ROI池化卷积+ROI池化
特征分类SVMSVM卷积卷积
论文Rich feature hierarchies for accurate oject detection and semantic segmentationFaster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

比较

RCNN:RCNN可以看作是RegionProposal+CNN这一框架的开山之作,RCNN的主要缺点是重复计算.
Fast-RCNN:RCNN的加速版本,这不仅仅是一个加速版本,其优点还包括:
(a) 首先,它提供了在caffe的框架下,如何定义自己的层/参数/结构的范例,这个范例的一个重要的应用是python layer的应用。
(2) training and testing end-to-end 这一点很重要,为了达到这一点其定义了ROIPooling层,因为有了这个,使得训练效果提升不少。
(3) 速度上的提升,因为有了Fast-RCNN,这种基于CNN的 real-time 的目标检测方法看到了希望,在工程上的实践也有了可能,后续也出现了诸如Faster-RCNN/YOLO等相关工作。

参考:
https://www.cnblogs.com/skyfsm/p/6806246.html

论文
https://blog.csdn.net/tmylzq187/article/details/51441553
https://blog.csdn.net/csyhhb/article/details/50425326

[1] R-CNN: Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C], CVPR, 2014.

[2] SPPNET: He K, Zhang X, Ren S, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[C], ECCV, 2014.

[3] Fast-RCNN: Girshick R. Fast R-CNN[C]. ICCV, 2015.

[4] Fater-RCNN: Ren S, He K, Girshick R, et al. Faster r-cnn: Towards real-time object detection with region proposal networks[C]. NIPS, 2015.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值