目标检测——R-CNN原理

R-CNN——Ross Girshick

简介

R-CNN(region with CNN features)是一类用于处理序列数据的神经网络。R-CNN是使用深度学习进行目标检测的鼻祖论文(Rich feature hierarchies for accurate object detection and semantic segmentation),此后诸如Fast-RCNN和Faster-RCNN都是基于RCNN的改进。

RCNN的优点

  1. 速度快。以往的目标检测算法使用滑窗依次判断所有可能的区域,而R-CNN则预先提取一系列可能是物体的候选区域,然后在候选去上提取特征。
  2. 自动特征提取。传统目标检测算法在区域中提取人工设定的特征(Haar,HOG),而R-CNN训练深度神经网络进行特征提取。

RCNN的缺点

  1. 候选框没有共享神经网络,参数多。
  2. 使用SVM分类,较为复杂。

RCNN的大致流程

  1. 生成候选区
  2. 候选区上使用深度神经网络提取特征
  3. 特征用SVM分类器分类
  4. 回归器修正候选框位置

这里写图片描述

RCNN基本原理

目标检测主要有两个任务:其一,对于图像中的每个物体,判断出物体的类型,即分类;其二,判断物体的位置,一般选用回归的方法实现。

img

整体框架:

在这里插入图片描述

名词解释

IoU:intersaction over union

NMS:非极大值抑制算法

Bounding Box:把物体位置标注出来的矩形框

Ground Truth:正确的标注数据

Region Proposal:候选区

fine-tune:微调

候选区域的生成

生成候选区的方法有:objectness、selective search、category-independen object proposals、constrained parametric min-cuts(CPMC)、multi-scale combinatorial grouping(MCG)、Ciresan等。R-CNN选择的是selective search。

关于候选框的生成,可以参考PAMI2015的“What makes for effective detection proposals?”。

img
  • selective search

使用Selective Search方法从一张图像生成约2000-3000个候选区域。基本思路:

  1. 使用过分割手段,将图像分为小区域。
  2. 查看现有线区域,合并可能性最高的两个区域,从发直到整张图像合并成一个区域位置。
  3. 输出候选区
  • 区域的合并

上述思路的关键在于“合并”的过程。一般来说,区域的合并有以下优先规则:

  1. 颜色相近的(颜色直方图)
  2. 纹理相近的(梯度直方图)
  3. 合并后总面积小的 [ 1 ] _{[1]} [1]
  4. 合并后在Bounding Box中所占比例大的 [ 2 ] _{[2]} [2]

[1]:保证每一次合并后的区域相对均匀,避免出现一个大区域不断合并其他小区域的情况。

[2]:也就是说选取合并后在矩形框中占比更大的,否则不合并。目的是使物体形状规则。

多样化与后处理

为了尽可能不遗漏候选区,候选区将在多个颜色空间中同时生成,生成后放入分类器。针对梅格雷,通过计算IoU的指标,采取非极大值抑制算法,剔除重复位置的区域。

  • IoU

IoU的输入:

  1. ground-truth的bounding box

  2. 预测的bounding box

IoU的输出:

两个矩形交集的面积/两个矩形并集的面积

img img
  • 非极大值抑制算法

用于对生成的大量候选框进行后处理,去除冗余的候选框。如下图。

这里写图片描述

具体步骤:

  1. 先根据候选框的类别分类概率做排序:A<B<C<D<E<F,并标记最大概率矩形框F是我们要留下来的。
  2. 分别判断A-E与F的IoU是否大于某个设定的阈值,如果重叠度超过阈值,就除去。
  3. 从剩下的除F之外的矩形框中,选择标记最大概率的候选框,继续重复上述步骤。

特征提取

  • 预处理

在使用深度神经网络提取特征之前,首先把候选区归一化成统一尺寸227*227。当然,外扩或内缩可以采用不同的方法,如原比例放大/缩小、直接填补灰色区等。不同的方法会轻微影响性能。

  • 预训练

网络结构借鉴AlexNet。

这里写图片描述

这里训练的是模型识别物体类型的能力,而不是预测bbox位置的能力。提取4096维特征,经过全连接层后,输出1000维特征。采用SGD训练,初始学习率0.01。

  • 微调训练

同样使用AlexNet,最后一层输出21维(20种类+1背景)。学习率0.001。

类别判断

  • SVM分类器

每个候选框都放入SVM中判断物体类别。每个类别对应一个SVM,输入深度神经网络输出的4096维特征(也就是除去最后一层),输出positive或 negatoive。

img

由于负样本很多,使用hard negative mining方法。

  • hard negative mining

hard negative mining解决的是负样本的训练问题。如果仅仅将随机创建的、不与正样本重叠的bounding box作为负样本,训练出的分类器并不好用,会抛出一堆错误的正样本(负样本不是bounding box中学习的负样本,于是错误地预测为正样本。

hard negative就是当错误检测到patch(特征图中的块)时,明确地从patch中创建负样本,并添加到训练集中。当再次训练后,分类器就会不断表现得更好。

位置精修

  • 回归器bounding box regression

对于每一类目标,训练一个线性脊回归器精细修正候选框的位置,说白了就是把region proposal往gound truth上靠(图中红框到蓝框的过程)。正则项 λ = 10000 \lambda=10000 λ=10000。输入为深度网络pool5层的4096维特征,输出为xy方向的缩放和平移。

这里写图片描述

bounding box一般用四维向量( x , y , w , h x, y, w, h x,y,w,h)来表示,分别代表中心点和宽高。

参考资料:

边框回归(Bounding Box Regression)详解

什么是hard negative mining

目标检测中IOU的介绍(Intersection over Union)

非极大值抑制算法(NMS)及python实现

【目标检测】RCNN算法详解

R-CNN论文详解(论文翻译)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值