由浅入深:教你如何构建一个行人目标检测模型(Python)

2018 年 7 月 5 日 云栖社区

云栖君导读 零基础也能构建一个目标检测(对象检测)模型?小编教你使用Image AI库从头开始构建一个行人检测模型。


当我们看到一张图片时,我们的大脑会立即识别图片中所包含的物体。而对于机器来说,识别这些对象则需要耗费大量的时间和大量的训练数据。但是,随着深度学习和硬件技术的不断进步,目标检测在计算机视觉领域变得更加简单和直观。


如下图所示,该目标检测系统能够以令人难以置信的精确度来识别图像中的不同对象。



现在,目标检测技术在不同的行业中发展迅速。它能帮助无人驾驶汽车在交通中安全行驶、在拥挤的地方发现暴力行为、协助运动团队分析和建立相应的报告、制造业中保证部件质量等等。以上这些只不是是目标检测技术的冰山一角而已。


本文将介绍什么是目标检测,以及解决这一领域问题的一些方法。然后,我们将深入探究如何用Python构建一个目标检测系统。读完这篇文章,你将有能力独自应对不同对象的检测!


读本文之前,你需要有一定的深度学习基础知识,并且也解决过简单的图像处理问题。


什么是目标检测?


在开始构建模型之前,让我们先试着理解什么是目标检测。假设我们要为一个无人驾驶汽车构建一个行人检测系统,汽车已经捕获到了如下这张图片,请问,你会如何描述这张图片?



这张图片描述了这样一个场景:汽车在广场附近,前面有些人正在穿过马路,由于马路上的交通标志不是很清晰,因此,这个行人检测系统必须能够准确的识别行人在哪里行走,这样我们的汽车就可以避开这些行人了。


那么,汽车的行人检测系统需要做些什么呢?它需要在这些行人的周围创建一个边界框,这样一来,系统就能够准确的定位图像中的行人,然后再决定走哪条路来避开行人。



该系统进行目标检测的目标如下:


  1. 确定图像中所有的对象以及其所在的位置。


  2. 过滤出目标对象。


目标检测的方法


现在,我们已经知道要解决什么问题,那么,有什么方法可以进行目标检测呢?


方法一:分而治之


将图像简单的分为四个部分:


(1)左上角



(2)右上角



(3)左下角



(4)右下角



这是一个很不错的办法,但是我们想构建一个更为精确的系统,它需要识别整个对象(比如这个图中的某个人) 。


方法二:增加分割的数量


方法一的系统可以运作的很好,那么我们还需要做什么呢?增加我们输入到系统的块的数量,来改进这个系统,如下图所示:



这虽然是个很好的方法,但是也带来了不必要的麻烦。当然,这要比第一个方法要好一些,唯一的缺点就是有大量的边界框。因此,我们需要一个更为合理的办法来进行目标检测。


方法三:结构化划分


为了更有调理的创建一个目标检测系统,我们的改进如下:


第一步:将图像划分成10*10的网格,如下图所示:



第二步:定义每个块的中心


第三步:对于每个中心,取三种不同的块的组合,即不同长宽比例:



我们继续进行改进,看看还有什么方法能够使这个目标检测模型的性能更好。


方法四:提高效率


上述三种方法都是比较容易实现的,但是我们希望构建一个更有效率的系统。我在方法三的基础上进行优化,来提高模型的性能,我总共做了两件事:


1.增加网格的数量:将原来的10*10网格的数量提高到20*20。



2.从之前的3个快增加到更多不同长宽比的块:在同一个中心上取出9个块,即3个不同宽度的正方形块和6个不同长宽比的矩形块,如下图所示:



这种方法有利有弊,它能够使我们从更细的层次来检测对象,但是,另一方面,我们必须将大量的块输入到图像分类模型中。


因此,我们可以进行有选择性的选择一部分块,而不是全部作为模型的输入。比如,建立一个中间分类器,来检测图像中是否为背景,还是可能包含一个图像。这样就可以大大的减少了模型所需要检测的块。


我们还可以做另一个优化:减少对“同一个对象”的预测。我们再来看看方法三的输出:



正如上图显示的那样,边界框里预测的是同一个人,我们就可以选择其中任何一个进行预测。因此,为了进行目标检测,对于有“同一对象”的盒子,我们选择那个最容易检测到是人的边界框。


到目前为止,所有这些优化系统的预测结果都很不错。那么,是不是还缺少点什么?没错,就是深度学习!


方法五:利用深度学习进行特征选择,并构建一个端到端的方法


深度学习在目标检测领域中有着很大的应用潜力。那么,我们应该如何将深度学习应用到目标检测中呢?下面,我列出了几种方法:


  1. 将原始图像输入到神经网络中来降低维度,而不是原始图像的块。

  2. 使用神经网络来检测所选择的预测块。

  3. 使用强化深度学习算法,使预测结果尽可能的接近原始边界框,这将确保算法能够提供更加精确的边界框预测。


现在,我们并不会训练不同的神经网络来解决目标检测中的每一个问题,而是训练一个单一的深度神经网络模型来解决所有的问题。这样做的好处是,神经网络中每一个小组件有助于优化这个神经网络的其他组件,也有助于我们训练整个深度学习模型。


其输出结果是上述所有的方法中性能最好的一个方法,结果类似于下面这个图像,最后,我们将会学习如何使用Python来创建该模型。



教程:如何使用Image AI库构建一个目标检测模型


既然我们现在已经了解了什么是目标检测和解决问题的最佳方法,那么让我们来构建一个属于自己的目标检测系统吧!在这里,我们使用Image AI库来构建目标检测模型——支持最前沿的计算机视觉任务的机器学习Python库。


运行一个目标检测模型来获得预测结果,这是件相当简单的事。我们并不需要进行复杂的脚本安装,更不需要一个GPU来产生预测结果。我们将使用上述方法五和Image AI库进行目标检测,代码实现如下所述。


请注意:在构建目标检测模型之前,请确保您在本地计算机上安装了Python的Anaconda版本!



第一步:在Python 3.6中布置一个Anaconda环境。



第二步:激活环境,并安装必要的软件包。



第三步:安装Image AI库。



第四步:下载预先训练好的模型,该模型是基于目标检测器——Retina Net,下载Retina Net预训练模型。


第五步:将下载好的文件复制到工作文件夹中。


第六步:下载图片,并命名为image.png。


第七步:在 Jupyter Notebook 上运行以下代码:



这将会创建一个名为image new.png的图像文件,该图像中包含了边界框。


第八步:打印图片,代码及输出图像如下:




这样,我们就成功构建了一个行人目标检测模型。


结语


在这篇文章中,我们了解什么是目标检测,以及创建一个目标检测模型的思路。最后,我们使用Image AI库成功构建了一个行人检测模型。


以上为译文。


文章原标题《Understanding and Building an Object Detection Model from Scratch in Python》,译者:Mags,审校:袁虎。


登录查看更多
6

相关内容

目标检测,也叫目标提取,是一种与计算机视觉和图像处理有关的计算机技术,用于检测数字图像和视频中特定类别的语义对象(例如人,建筑物或汽车)的实例。深入研究的对象检测领域包括面部检测和行人检测。 对象检测在计算机视觉的许多领域都有应用,包括图像检索和视频监视。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
少标签数据学习,54页ppt
专知会员服务
198+阅读 · 2020年5月22日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
225+阅读 · 2020年3月22日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
340+阅读 · 2020年3月17日
2019最全目标检测指南
计算机视觉life
13+阅读 · 2019年10月22日
做目标检测,这一篇就够了!2019最全目标检测指南
机器学习算法与Python学习
30+阅读 · 2019年9月11日
只需10行Python代码,就能实现计算机视觉中目标检测
如何将深度学习应用于无人机图像的目标检测
AI研习社
7+阅读 · 2018年12月2日
10行代码实现目标检测,请收下这份教程
Python 如何快速入门?
大数据技术
11+阅读 · 2018年4月9日
如何用Python和深度神经网络识别图像?
AI100
5+阅读 · 2018年1月8日
如何使用 RNN 模型实现文本自动生成 | 赠书
人工智能头条
5+阅读 · 2017年12月13日
Arxiv
7+阅读 · 2018年1月24日
VIP会员
相关资讯
2019最全目标检测指南
计算机视觉life
13+阅读 · 2019年10月22日
做目标检测,这一篇就够了!2019最全目标检测指南
机器学习算法与Python学习
30+阅读 · 2019年9月11日
只需10行Python代码,就能实现计算机视觉中目标检测
如何将深度学习应用于无人机图像的目标检测
AI研习社
7+阅读 · 2018年12月2日
10行代码实现目标检测,请收下这份教程
Python 如何快速入门?
大数据技术
11+阅读 · 2018年4月9日
如何用Python和深度神经网络识别图像?
AI100
5+阅读 · 2018年1月8日
如何使用 RNN 模型实现文本自动生成 | 赠书
人工智能头条
5+阅读 · 2017年12月13日
Top
微信扫码咨询专知VIP会员