概述

目标检测是一个比图像分类更复杂的问题,它不仅需要对图像中的对象进行分类,还需要找到他们的位置。因此有人提出可以使用对像素进行分类从而达到位置识别。

借鉴了这种理论,R-CNN横空出世。R-CNN的全称是:Regions with CNN features,从字面上理解就是Regions结合传统的卷积神经网络,它利用候选区域与 CNN 结合做目标定位,借鉴了滑动窗口思想,R-CNN 采用对区域进行识别的方案。

具体实现方法

  1. 给定一张输入图片,从图片中提取 2000 个类别独立的候选区域。
  2. 对于每个区域利用 CNN 抽取一个固定长度的特征向量。
  3. 再对每个区域利用 SVM 进行目标分类。
    R-CNN论文阅读
    为了解决标注数据缺乏的问题,论文的模型使用了 fine-tune 的方法,使用已经在imagenet上训练好的模型作为ROI的分类器。

在特征提取阶段,R-CNN 抽取了一个 4096 维的特征向量,采用的是 Alexnet,基于 Caffe 进行代码开发。

需要注意的是 Alextnet 的输入图像大小是 227x227。

而通过 Selective Search 产生的候选区域大小不一,为了与 Alexnet 兼容,R-CNN 采用了非常暴力的手段,那就是无视候选区域的大小和形状,统一变换到 227*227 的尺寸。

有一个细节,在对 Region 进行变换的时候,首先对这些区域进行膨胀处理,在其 box 周围附加了 p 个像素,也就是人为添加了边框,在这里 p=16。

训练完成之后,在测试阶段R-CNN 在每张图片上抽取近 2000 个候选区域。

然后将每个候选区域进行尺寸的修整变换,送进神经网络以读取特征,然后用 SVM 进行类别的识别,并产生分数。

候选区域有 2000 个,所以很多会进行重叠。

针对每个类,通过计算== IoU 指标==,采取非极大性抑制,以最高分的区域为基础,剔除掉那些重叠位置的区域。
若对待一个正负样本兼存的ROI,会选取 threshold=0.3。

功能广泛

bbox回归
语义分割

RCNN为后来神经网络语义分割层面奠定了基础。
R-CNN 进行语义分割分为 3 个阶段。

  1. 利用 CPMC 生成候选区域,然后将这些区域调整大小为 227x227,送到神经网络当中,这是 full 阶段,区域中有背景也有前景。
  2. 这个阶段只处理候选区域的前景,将背景用输入的平均值代替,然后背景就变成了 0 ,这个阶段称为 fg。
  3. full + fg 阶段,将背景和前景简单拼接。

总结

R-CNN 灵活地运用了现有比较先进的工具和技术,并充分吸收,根据自己的逻辑改造,最终取得了很大的进步。

相关文章:

  • 2022-01-19
  • 2021-05-06
  • 2021-05-01
  • 2021-06-15
  • 2021-12-13
  • 2021-12-25
  • 2022-12-23
  • 2021-12-26
猜你喜欢
  • 2021-12-30
  • 2021-08-26
  • 2021-11-30
  • 2021-10-09
  • 2021-11-27
  • 2021-12-18
  • 2021-06-22
相关资源
相似解决方案