目标检测技术演进: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

目录
相关文章
|
7月前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】Fast R-CNN中的RoI(Region of Interest)池化详解
【PyTorch实战演练】Fast R-CNN中的RoI(Region of Interest)池化详解
199 1
|
4月前
|
机器学习/深度学习 网络安全 TensorFlow
探索操作系统的心脏:内核与用户空间的奥秘云计算与网络安全:技术挑战与未来趋势深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第29天】在数字世界的每一次点击与滑动背后,都隐藏着一个不为人知的故事。这个故事关于操作系统——计算机的灵魂,它如何协调硬件与软件,管理资源,并确保一切运行得井井有条。本文将带你走进操作系统的核心,揭示内核与用户空间的秘密,展现它们如何共同编织出我们日常数字生活的底层结构。通过深入浅出的讲解和代码示例,我们将一同解锁操作系统的神秘面纱,理解其对现代计算的重要性。 【8月更文挑战第29天】本文将深入探讨卷积神经网络(CNN)的基本原理和结构,以及它们如何被广泛应用于图像识别任务中。我们将通过代码示例来展示如何使用Python和TensorFlow库构建一个简单的CNN模型,并训练
|
7月前
|
机器学习/深度学习 自然语言处理 大数据
深度学习中的卷积神经网络优化技术探析
【2月更文挑战第4天】在深度学习领域,卷积神经网络(CNN)一直扮演着重要角色,但其训练和推理过程中存在许多挑战。本文将从优化角度出发,探讨卷积神经网络中的权重初始化、损失函数设计、学习率调整等优化技术,旨在为深度学习爱好者提供一些实用的技术感悟和分享。
99 3
|
7月前
|
机器学习/深度学习 编解码 算法
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
266 0
|
7月前
|
机器学习/深度学习 编解码 数据可视化
RecursiveDet | 超越Sparse RCNN,完全端到端目标检测的新曙光
RecursiveDet | 超越Sparse RCNN,完全端到端目标检测的新曙光
125 0
|
7月前
|
机器学习/深度学习 监控 算法
【Keras计算机视觉】Faster R-CNN神经网络实现目标检测实战(附源码和数据集 超详细)
【Keras计算机视觉】Faster R-CNN神经网络实现目标检测实战(附源码和数据集 超详细)
125 0
|
7月前
|
机器学习/深度学习 算法 固态存储
【计算机视觉】目标检测中Faster R-CNN、R-FCN、YOLO、SSD等算法的讲解(图文解释 超详细必看)
【计算机视觉】目标检测中Faster R-CNN、R-FCN、YOLO、SSD等算法的讲解(图文解释 超详细必看)
452 0
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
21天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
66 7
|
18天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
21 1

热门文章

最新文章

相关实验场景

更多