cs231n学习笔记-关于目标检测(Object Detection)近些年的发展

一、 传统目标检测方法



传统目标检测流程:


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


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


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


传统目标检测的主要问题:


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


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

二、目标检测技术近年来的发展

大致分类:

1.使用region proposal的,目前是主流,比如RCNN、SPP-Net、Fast-RCNN、Faster-RCNN以及MSRA的R-FCN。


2.不使用region proposal的,YOLO,SSD。


我觉得,这些工作都体现的一个趋势:如何让不同ROI(Region of Interest)之间尽量多的共享计算量,并充分利用CNN得到


的特征,使得整个detection的速度变快。


下面就大致介绍一下上面提到的一些算法


三、基于侯选区域(Region Proposal)的深度学习目标检测法

Region Proposal:顾名思义,就是 在图片中预先找出物体可能出现的位置,利用颜色、纹理、边缘等信息选取比穷举窗口少很


多的目标区域(大约2k个)。


常见的Region Proposal方式:

-Selective Search
-Edge Boxes

1.R-CNN
步骤:

(1) 输入测试图像


(2) 利用selective search算法在图像中从下到上提取2000个左右的Region Proposal


(3) 将每个Region Proposal缩放(warp)成227x227的大小并输入到CNN,将CNN的fc7层的输出作为特征


(4) 将每个Region Proposal提取到的CNN特征输入到SVM进行分类


注:

1)对每个Region Proposal缩放到同一尺度是因为CNN全连接层输入需要保证维度固定。


2)对于SVM分好类的Region Proposal做边框回归(bounding-box


regression),边框回归是对region proposal进行纠正的线性回归算法,为了让region


proposal提取到的窗口跟目标真实窗口更吻合。因为region proposal提取到的窗口不可能跟人手工标记那么准,如果region


proposal跟目标位置偏移较大,即便是分类正确了,但是由于IoU(region


proposal与Ground Truth的窗口的交集比并集的比值)低于0.5,那么相当于目标还是没有检测到。


3)R-CNN缺点:


(1) 训练分为多个阶段,步骤繁琐: 微调网络+训练SVM+训练边框回归器


(2) 训练耗时,占用磁盘空间大:5000张图像产生几百G的特征文件


(3) 速度慢: 使用GPU, VGG16模型处理一张图像需要47s。


(4) 测试速度慢:每个候选区域需要运行整个前向CNN计算


(5) SVM和回归是事后操作:在SVM和回归过程中CNN特征没有被学习更新


2.SPP-NET
SSP-Net:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition


 RCNN使用CNN作为特征提取器,首次使得目标检测跨入深度学习的阶段。但是RCNN对于每一个区域候选都需要首先将图片放

缩到固定的尺寸(224*224),然后为每个区域候选提取CNN特征。容易看出这里面存在的一些性能瓶颈:


  • 速度瓶颈:重复为每个region proposal提取特征是极其费时的,Selective Search对于每幅图片产生2K左右个region proposal,也就是意味着一幅图片需要经过2K次的完整的CNN计算得到最终的结果。
  • 性能瓶颈:对于所有的region proposal防缩到固定的尺寸会导致我们不期望看到的几何形变,而且由于速度瓶颈的存在,不可能采用多尺度或者是大量的数据增强去训练模型。


 但是,这2000个RegionProposal不都是图像的一部分吗,那么我们完全可以对图像提一次卷积层特征,然后只需要将

Region  Proposal在原图的位置映射到卷积层特征图上,这样对于一张图像我们只需要提一次卷积层特征,然后将每个Region

Proposal 的卷积层特征输入到全连接层做后续操作。(对于CNN来说,大部分运算都耗在卷积操作上,这样做可以节省大量时

间)。 现在的问题是每个Region Proposal的尺度不一样,直接这样输入全连接层肯定是不行的,因为全连接层输入必须是固定

的长 度。SPP-NET恰好可以解决这个问题。


 具体思路为:CNN的卷积层是可以处理任意尺度的输入的,只是在全连接层处有限制尺度——换句话说,如果找到一个方法,在全连接层之前将其输入限制到等长,那么就解决了这个问题。

具体方案如下图所示:



 如果原图输入是224x224,对于conv5出来后的输出,是13x13x256的,可以理解成有256个这样的filter,每个filter对应一

张13x13的activation map。如果像上图那样将activationmap pooling成4x4 2x2 1x1三张子图,做max pooling后,出来的特

征就是固定长度的(16+4+1)x256那么多的维度了。如果原图的输入不是224x224,出来的特征依然是(16+4+1)x256;直觉地

说,可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值