目标检测方法概述(一)

目标检测的问题,就是在给定的图片中找到物体的位置,并标明物体的类别。
在这里插入图片描述
通过卷积神经网络CNN,我们可以完成图像识别,即分类任务,然后我们需要通过一些额外的功能完成定位任务,即找到上图中方框在图像中的位置 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)

目前目标检测的研究路线如下,相关论文在这里可以找到,在这里我们选取部分论文来解释一下。在这里插入图片描述

  • R-CNN

在这里插入图片描述步骤1:训练一个分类模型(比如AlexNet);
步骤2:对该模型进行fine-tuning;
步骤3:用selective search提取图像的候选框,修正区域大小输入到CNN,将输出结果存入硬盘;
步骤4:训练一个SVM分类器判别物体类别;
步骤5:使用回归器修正候选框位置。

  • SPP Net

SPP:Spatial Pyramid Pooling(空间金字塔池化)
步骤1:首先通过selective search,对待检测的图片进行搜索出2000个候选窗口;
步骤2:把整张待检测的图片,输入CNN中,进行一次性特征提取,得到feature maps,然后在feature maps中找到各个候选框的区域,再对各个候选框采用SPP池化,提取出固定长度的特征向量;
步骤3:最后采用SVM算法进行特征向量分类识别。

主要特点:
1.实现了CNN的多尺度输入
如下图所示,在卷积层和全连接层之间加入SPP层,对于任意输入,SPP层中的每一个池化的卷积核会根据输入调整大小,因此SPP层的输出尺度始终是固定的。
在这里插入图片描述

2.只对原图进行一次卷积
在R-CNN中,每个候选框都要resize到统一大小再输入到CNN中,要耗费很多时间,而SPP Net对原图只进行一次卷积得到feature map,然后找到每个候选框在feature map上的映射,将其作为卷积特征输入到SPP层。这样可以节省大量的计算时间,比R-CNN有一百倍左右的提速。
在这里插入图片描述

  • Fast R-CNN

R-CNN使用selective search提取bounding box作为输入,但是在对所有区域进行特征提取时会有重复计算,导致R-CNN有严重的速度瓶颈。在这里插入图片描述
Fast R-CNN提出一种可以看作单层SPP Net的网络层,叫ROI Pooling,它可以把不同大小的输入映射到一个固定尺度的特征向量。

ROI Pooling采用的是SPP的思路,但是实现方式不同,只使用了一层金字塔。下面是ROI Pooling的网络参数:
layer {
name: “roi_pool5”
type: “ROIPooling”
bottom: “conv5_3”
bottom: “rois”
top: “pool5”
roi_pooling_param {
pooled_w: 7
pooled_h: 7
spatial_scale: 0.0625 # 1/16
}
仅使用了(pooled_w,pooled_h)这个尺度,来将得到的每一个特征图分成(pooled_w,pooled_h),然后对每一块进行max_pooling取值,最后得到一个n*7*7固定大小的特征图。

另外,Fast R-CNN将bounding box regression放入了神经网络内部,与分类一起组成一个multi-task模型。实际实验也证明,这两个任务能够共享卷积特征,并相互促进。
可见,Fast R-CNN相对于R-CNN的提速原因就在于,不像R-CNN把每个候选区域给CNN提特征,而是整张图提一次特征,再把候选框映射到conv5上,剩下的只需要在conv5层上操作就可以了。

  • Faster R-CNN

Fast R-CNN使用selective search找出候选框,也非常耗时。Faster R-CNN提出一种全卷积神经网络叫做Region Proposal Network(RPN),用来提取region proposals。
在这里插入图片描述
步骤1:将整张图片输入CNN,进行特征提取;
步骤2:用RPN生成anchors,并对其进行筛选和标记,然后通过NMS剔除重叠的anchors,得到最终的region proposals,每张图片生成300个region proposals;
步骤3:把region proposals映射到CNN最后一层卷积的feature map上;
步骤4:通过ROI pooling使每个region proposal生成固定尺寸的feature map;
步骤5:使用softmax loss和smooth L1 loss对分类概率和边框回归进行联合训练。

RPN网络的结构如下图:
在这里插入图片描述
下图为Caffe版本的RPN网络图:
在这里插入图片描述RPN的输入为原图片卷积之后得到的feature map,输出就是region proposals。

如何找到region proposals,就涉及到一个anchor的概念。在feature map上添加一个滑窗,即上图中的sliding window,在每个滑窗中假定可以最多找到 k k k个region proposals,这 k k k个region proposals可以被参数化为 k k k个相关的box,这就是anchors。anchors是由不同的尺度(scale)和长宽比(aspect ratio)得到。
在这里插入图片描述

通过anchors,RPN就可以得到region proposals的信息。这种方式产生的region proposal个数远少于selective search产生的个数,而且质量也有很大的提升。

Faster R-CNN包含四个损失函数:
  • RPN calssification(anchor good.bad)
  • RPN regression(anchor->proposal)
  • Fast R-CNN classification(over classes)
  • Fast R-CNN regression(proposal ->box)
  
训练时采用4步交替训练(4-step alternating training):
  1. 单独训练RPN,得到RPN1,CNN1
  2. 单独训练Fast R-CNN,结合第一步的region proposal,得到Fast R-CNN1,CNN2
  3. fine-tune RPN1 on CNN2,得到RPN2(共享卷积层)
  4. fine-tune Fast R-CNN1 on CNN2,结合第三步的region proposal,得到Fast R-CNN2(共享卷积层)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值