基于深度学习的目标检测简介

8分钟阅读

本文是“解构人工智能www.yabovip4的一系列帖子,探索人工智能应用程序如何工作的细节(在伙伴关系Paperspace).

深度神经网络因其处理视觉信息的能力而闻名。在过去的几年里,它们已经成为许多公司的关键组成部分计算机视觉应用程序

神经网络能够解决的关键问题之一是图像中目标的检测和定位。目标检测被用于许多不同的领域,包括自动驾驶视频监控和医疗保健。

在这篇文章中,我将简要回顾一下深度学习的体系结构帮助电脑探测物体。

卷积神经网络

基于深度学习的计算机视觉应用的关键组成部分之一是卷积神经网络(CNN)。由深度学习先驱于20世纪80年代发明yann lecuncnn是一种能在多维空间中高效捕捉模式的神经网络。这使得cnn特别适合处理图像,尽管它们也被用来处理其他类型的数据。(为了关注视觉数据,我们将在本文中考虑卷积神经网络是二维的。)

每个卷积神经网络由一个或几个卷积神经网络组成卷积的层,一个从输入图像中提取有意义的值的软件组件。并且每个卷积层由几个滤波器组成,横跨图像滑动的方矩阵,并在不同位置寄存在不同位置的加权之和。每个过滤器具有不同的值,并从输入图像中提取不同的特征。卷积层的输出是一组“特征映射”。

当层叠在一起时,卷积层可以检测视觉模式的层次结构。例如,较低的层将生成垂直和水平边、角和其他简单模式的特征图。下一层可以检测更复杂的模式,如网格和圆圈。当你深入到网络中,这些层将检测复杂的对象,如汽车、房子、树和人。

神经网络特征的可视化
神经网络的每一层都对输入图像的特定特征进行编码。

大多数卷积神经网络使用池化层来逐渐缩小特征图的大小,并保留最突出的部分。Max-pooling是目前cnn中使用的主要池化层类型,它保持像素patch中的最大值。例如,如果使用大小为2的池化层,它将从上一层生成的特征映射中获取2×2-pixel补丁,并保持最高的值。这个操作将地图的大小减半,并保留最相关的功能。池化层使cnn能够概括它们的能力,对图像中物体的位移不那么敏感。

最后,卷积层的输出被平展成一维矩阵,这是图像中包含的特征的数字表示。然后,这个矩阵被输入一系列“完全连接”的人造神经元层,这些神经元层将特征映射到网络预期输出的类型。

卷积神经网络结构
卷积神经网络(CNN)结构

卷积神经网络的最基本任务是图像分类,其中网络将图像作为输入拍摄,并返回表示图像所属的概率的值列表。例如,假设您希望培训一个神经网络来检测包含在流行的开源数据集中包含的所有1,000类对象想象成.在这种情况下,输出层将有1,000个数值输出,每个输出包含图像属于其中一个类的概率。

您可以随时从头开始创建和测试自己的卷积神经网络。但大多数机器学习研究人员和开发人员使用了几种尝试和测试的卷积神经网络之一,例如AlexNet,VGG16和Reset-50。

对象检测数据集

目标检测图像标注
目标检测网络需要在精确标注的图像上进行训练

虽然图像分类网络可以分辨图像是否包含某个目标,但它不会说出目标在图像中的位置。目标检测网络既提供图像中包含的目标类别,又提供该目标坐标的边界框。

目标检测网络与图像分类网络相似,利用卷积层检测视觉特征。事实上,大多数目标检测网络使用图像分类CNN,并将其用于目标检测。

对象检测是一种监督机器学习问题,这意味着你必须用标记的例子来训练你的模型。训练数据集中的每幅图像都必须附带一个文件,其中包括图像所包含的对象的边界和类。有一些开源工具可以创建对象检测注释。

对象检测注释文件
对象检测培训数据的注释文件示例。

对象检测网络在注释数据上培训,直到它可以在对应于每种对象的图像中找到区域。

现在让我们看看一些目标检测神经网络架构。

R-CNN深度学习模型

R-CNN架构
R-CNN架构

基于地区的卷积神经网络(R-CNN)由加州大学伯克利分校的人工智能研究人员于2014年提出。R-CNN由三个关键部分组成。

首先,区域选择器使用“选择性搜索”算法,在图像中找到可能代表对象的像素区域,也称为“感兴趣区域”(RoI)。区域选择器为每个图像生成大约2000个感兴趣的区域。

接下来,roi被扭曲成预定义的大小,并传递给卷积神经网络。CNN对每个区域分别进行处理,通过一系列卷积操作提取特征。CNN使用完全连接的层将特征图编码为数值的一维向量。

最后,分类机器学习模型将从CNN获得的编码特征映射到输出类。分类器具有单独的输出类,用于“背景”,其对应于不是对象的任何内容。

R-CNN对象检测
具有R-CNN的对象检测

原始R-CNN纸表明AlexNet卷积神经网络用于特征提取和用于分类的支持向量机(SVM)。但在本文发布以来的几年中,研究人员使用了较新的网络架构和分类模型来提高R-CNN的性能。

R-CNN遭受了一些问题。首先,模型必须为每个图像生成和裁剪2,000个单独的区域,这可能需要很长一段时间。其次,该模型必须分别计算每个2,000个区域的特征。这增加了大量的计算并减慢过程,使R-CNN不适合实时对象检测。最后,该模型由三个单独的组件组成,这使得难以集成计算并提高速度。

快速r-cnn

快R-CNN架构
快R-CNN架构

2015年,R-CNN论文的主要作者提出了一种名为快速r-cnn它解决了其前身的一些问题。快速R-CNN将特征提取和区域选择引入到单个机器学习模型中。

Fast R-CNN接收图像和一组roi,并返回图像中检测到的对象的边框和类的列表。

Fast R-CNN的关键创新之一是“RoI池层”,这是一种将CNN特征映射和图像感兴趣的区域,并为每个区域提供相应特征的操作。这使得Fast R-CNN可以在一次通过中提取图像中所有感兴趣的区域的特征,而不是R-CNN,后者分别处理每个区域。这导致了速度的显著提高。

但是,一个问题仍未解决。FAST R-CNN仍然需要要提取的图像区域并提供为模型的输入。FAST R-CNN仍未准备好进行实时对象检测。

快R-CNN

[更快的R-CNN架构]

更快的R-CNN
快R-CNN架构

快R-CNN,通过将区域提取机制整合到目标检测网络中,解决了目标检测的最后一块难题。

更快的R-CNN将图像作为输入拍摄,并返回对象类列表及其相应的边界框。

Faster R-CNN的架构在很大程度上与Fast R-CNN相似。它的主要创新是“区域提议网络”(RPN),该组件采用卷积神经网络生成的特征地图,并提出一组物体可能定位的边界框。然后将提出的区域传递给RoI池化层。这个过程的其余部分与Fast R-CNN类似。

通过将区域检测整合到主要的神经网络结构中,Faster R-CNN实现了接近实时的目标检测速度。

YOLO

yolo建筑
yolo建筑

2016年,华盛顿大学、艾伦人工智能研究所和脸书人工智能研究所的研究人员提出了“你只看一次”(YOLO),这是一组神经网络,通过深度学习提高了目标检测的速度和准确性。

YOLO的主要改进是将整个目标检测和分类过程集成到一个单一的网络中。YOLO不是单独提取特征和区域,而是通过单个网络一次执行所有操作,因此得名“只看一次”。

YOLO可以在视频流帧率下执行目标检测,是需要实时推断的合适应用程序。

在过去的几年里,深度学习对象检测已经有很长的路要走,从不同组件的拼凑而成为有效地工作的单个神经网络。如今,许多应用程序使用对象检测网络作为其主要组件之一。它在你的手机,电脑,汽车,相机等等。它将有趣(也许令人毛骨悚然)看看可以通过越来越高级的神经网络实现的。

留下一个回复

这个网站使用Akismet来减少垃圾邮件。了解如何处理您的评论数据