目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN 之 RCNN

简介: 这篇文章的内容总结翻译自 A Step-by-Step Introduction to the Basic Object Detection Algorithms (Part 1) ,文中有加入自己的理解。

这篇文章的内容总结翻译自 A Step-by-Step Introduction to the Basic Object Detection Algorithms (Part 1) ,文中有加入自己的理解。

当你想要在杂乱的桌子上面寻找钥匙的时候,是不是有想过要是有种东西可以直接告诉我钥匙放在哪里就好了?如果一个算法可以在几毫秒之内就帮我们找到钥匙,那就好了。

目标检测算法就像这样的一个「超人」。目标检测被运用到了越来越多的场景上,从日夜不停工作的监视器到智能城市的实时车辆检测。这就是深度学习的强大之处。

70

在这篇文章里面,我们会看看各种可以用来做目标检测的算法。我们从 RCNN 系列开始,从 RCNN、Fast RCNN 到 Faster RCNN。(在随后的文章里面可能会讲到 YOLO、SSD 之类的)

原文作者附上了一篇关于「目标检测」的文章,感兴趣的朋友可以前往看看,现在就让我们开始来看看 RCNN 的「家族史」吧!

1. 解决目标检测任务的简单方式

下面的图展示了目标检测任务是怎么工作的。在图中的每一个物体,从人到风筝都会被定位和识别,并且会给我们一个置信度,即计算机认为的所识别到的物体的可能性。

70

先来看看被使用最广的最简单的目标检测深度学习算法 —— 卷积神经网络,CNNs。

下图告诉了我们 CNN 在内部是如何工作的。

70

我们给网络一张图片,然后它会被传送到许多卷积层和池化层上。最后给我们一个所识别到的物体的类别。

每输入一张图片,我们就会得到一个相对应的类别作为输出。那么我们可以用这样的方法来检测一张图片中的多个目标吗?当然可以啦。来看看怎么使用 CNN 解决一个普通的目标检测问题:

  1. 首先,把一张图片作为输入:

在这里插入图片描述

  1. 然后把图片分成几个区域:

70

  1. 这样一来就可以把每个区域都当作是一个独立的图片;
  2. 然后你知道的,就是这些独立的区域放进 CNN 里面,对它们进行分类;
  3. 当所有的区域都分类好了,我们就可以把它们合起来,得到带有检测目标的原始图片:

img

这样做怎么看都是有问题的是吧,你看上图的框实在太大了,我们看不出它框出了什么出来。直接把图片分成几个简单的区域太粗暴了。我们知道图片中的物体大小和位置都是不一样的,直接分肯定会出现框不全的情况。

物体的大小位置和形状都是多变的。如果我们想要框更加适合,就要适当地增加框的数量,也就是把图片分成更多更小的部分,而不是 4 个大区域。但是这样会导致计算时间成倍地增加。为此我们需要一个更好的方法,那就是基于区域的 CNN(Region-based CNN, RCNN)。基于区域就是使用生成区域建议的方式来选择区域。区域建议又是什么?再接下来看看吧。

2. 理解基于区域的卷积神经网络(RCNN)

RCNN 算法可以为一张图片提供较少的选框,然后检查这些框中有没有包含物体。选框的方式是根据选择性搜索(selective search)来进行的,这些选框就叫做区域,也叫做 regions.

先来看看什么叫做选择性搜索,以及它是如何去识别不同的区域的。基本上一个物体中会包含四种信息:不同的尺度、颜色、纹理和边界。选择性搜索的方法就是识别这些模式,然后提出不同的区域。来看看它的过程:

首先当然就是先输入图片了:

70

然后,先生成最初的子分割,看起来像下面这样子。因为一开始分割得很细,整张图片感觉面目全非了,很复杂,那接下来的任务就是化小为大了。

70

把小块区域合并成大块的区域依据的方法就是,按照颜色相似度、文理相似度、大小相似度和形状兼容性来完成的。其实就是上面说的物体的四个特性:

70

最后生成的区域就是物体在图片中的定位了,也就是所说的感兴趣区域(Region of Interest).

那下面来看看一个 RCNN 检测时的步骤有哪些:

  1. 首先准备一个预训练的卷积神经网络;
  2. 然后再重新训练这个模型,但是只训练最后的层,也就是微调(fine tune),训练的类别就是我们想要检测的类别;
  3. 第三步,得到每一张图片的感兴趣区域,把所有的区域都改变成同样的大小,可以输入到 CNN 中;
  4. 得到区域后,训练 SVM 来分类物体和背景(在目标检测当中需要对一个 ROI 判断其属于目标还是背景)。对于每一个类别,我们都会训练一个二分类 SVM;
  5. 最后,为了使得生成的框更加精确,会训练一个线性回归模型让生成的 Bounding Boxes 更加贴近物体。

来看看图片的过程,更加有助于理解!

这就是第一步,输入图片:

70

使用一些区域建议方法来得到 ROI,选择性搜索是区域建议方法的其中一个:

70

然后这些区域就会被 reshape 成 CNN 输入的大小:

70

CNN 就提取每一个区域的特征值,然后 SVM 就来对这些区域进行分类:

70

最后,边界框回归(Bounding box) 就预测生成的框:

70

RCNN 就这样来检测目标的。

3. RCNN 的不足

到目标为止讲的 RCNN 确实可以检测目标了,但是却存在很大的问题:

  1. 首先它对于每一张图片都会生成 2000 个 ROI;
  2. 对每一张图片都进行一次区域建议,如果有 N 张图片,那就是 N*2000 个了;
  3. 整个过程用了三个模型:用于特征提取的 CNN、识别物体的线性 SVM 和调整边界框的回归模型

这些过程使得 RCNN 变得非常的慢,预测一张图片就花去了 40 到 50 秒的时间,这个时间确实等不起,如果遇到更加大的数据量时,网络就根本处理不来,所以一开始的 RCNN 是很慢的,但是在接下来的 Fast RCNN 和 Faster RCNN 里面,改进了很多,我会在下一篇文章为大家讲讲这两个表现更好的网络。


更多精彩:
1. 目标检测技术演进:Fast R-CNN、Faster R-CNN
2. 胶囊网络的简单介绍
3. Apple 新产品中的机器学习算法


如果你想了解更多关于人工智能的资讯,欢迎扫码关注微信公众号以及知乎专栏 「译智社」,我们为大家提供优质的人工智能文章、国外优质博客和论文等资讯哟!

70

目录
相关文章
|
20天前
|
机器学习/深度学习 算法 安全
FRCNN来袭 | Faster RCNN与FCN永不遗忘,联邦学习+边缘数据既保护隐私也提升性能
FRCNN来袭 | Faster RCNN与FCN永不遗忘,联邦学习+边缘数据既保护隐私也提升性能
88 0
|
20天前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】Fast R-CNN中的RoI(Region of Interest)池化详解
【PyTorch实战演练】Fast R-CNN中的RoI(Region of Interest)池化详解
49 1
|
20天前
|
机器学习/深度学习 自然语言处理 大数据
深度学习中的卷积神经网络优化技术探析
【2月更文挑战第4天】在深度学习领域,卷积神经网络(CNN)一直扮演着重要角色,但其训练和推理过程中存在许多挑战。本文将从优化角度出发,探讨卷积神经网络中的权重初始化、损失函数设计、学习率调整等优化技术,旨在为深度学习爱好者提供一些实用的技术感悟和分享。
28 3
|
20天前
|
机器学习/深度学习 数据可视化 定位技术
PrObeD方法开源 | 主动方法助力YOLOv5/Faster RCNN/DETR在COCO/GOD涨点
PrObeD方法开源 | 主动方法助力YOLOv5/Faster RCNN/DETR在COCO/GOD涨点
42 0
|
20天前
|
机器学习/深度学习 编解码 算法
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
57 0
|
20天前
|
机器学习/深度学习 编解码 数据可视化
RecursiveDet | 超越Sparse RCNN,完全端到端目标检测的新曙光
RecursiveDet | 超越Sparse RCNN,完全端到端目标检测的新曙光
70 0
|
20天前
|
机器学习/深度学习 监控 算法
【Keras计算机视觉】Faster R-CNN神经网络实现目标检测实战(附源码和数据集 超详细)
【Keras计算机视觉】Faster R-CNN神经网络实现目标检测实战(附源码和数据集 超详细)
39 0
|
2天前
|
机器学习/深度学习 自动驾驶 TensorFlow
图像识别:卷积神经网络(CNN)的应用
【6月更文挑战第2天】卷积神经网络(CNN)是图像识别的得力工具,能识别物体、人脸等。广泛应用于安防、医疗和自动驾驶等领域。通过学习图像特征,CNN实现智能识别。示例代码展示了使用TensorFlow构建简单CNN识别MNIST手写数字。尽管实际应用更复杂,但CNN已显著改变生活,并将持续带来惊喜。
16 0
|
20天前
|
机器学习/深度学习 算法 数据挖掘
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
深度学习500问——Chapter05: 卷积神经网络(CNN)(4)
28 1
|
20天前
|
机器学习/深度学习 自然语言处理 计算机视觉
深度学习500问——Chapter05: 卷积神经网络(CNN)(3)
深度学习500问——Chapter05: 卷积神经网络(CNN)(3)
23 1

热门文章

最新文章