- 下载数据-19.3 MB
- 下载模型-43.5 MB
- 下载结果-36.66 MB
得益于深度学习(DL),实时视频流中的人的实时检测几年前就已经解决了。但是,在边缘和物联网设备上并不总是那么容易,因为它们并不总是具有很大的计算能力。
在本系列文章中,我们将向您展示如何在Raspberry Pi上实时(或近实时)检测人员。本系列假设...
从历史上看,图像中的对象检测的第一种方法(例如Haar或LBP级联和定向梯度直方图(HOG)分类器)已被设计为专注于查找特定类别的对象。以一种或另一种方式,所有这些都是基于提取几何特征并确定检测到的特征集是否属于指定类的对象。
当深度神经网络(DNN)进入场景时,它们立即被认为是非常有效的特征提取器。这激发了人工智能(AI)研究人员开发面向对象检测的DNN和有效的算法来对其进行训练。如今,几乎所有现代计算机视觉系统都使用DL算法进行对象检测。通常,对象检测系统在高性能CPU,GPU甚至TPU上运行——这些处理器是专为DNN设计的。
要在具有低计算能力的设备上进行人员检测,我们必须使用适合设备的AI方法。首先,让我们分析现有DL方法的优缺点,然后选择最适合我们的方法。由于人员检测是对象检测的一种特殊情况,因此我们将研究通用的DL对象检测器,然后了解如何使它们适应于我们的特殊情况。
以下是最先进的现代DL对象检测方法:Faster-RCNN,单发对象检测器(Single-Shot Object Detector)和仅查看一次(YOLO)。以上所有技术均使用卷积神经网络(CNN),它们之间的区别在于内部网络结构和网络训练算法的细节。
Faster-RCNN是成功用于视频流中实时对象检测的第一种DL技术。Faster-RCNN是具有两个主要部分的DNN。第一部分用作特征提取器。第二部分是经过特殊设计的神经网络,它使用提取的特征来定位对象位置并对其进行分类——例如,如下图所示:
单发检测器(SSD)与Faster-RCNN非常相似。它包括用于特征提取的卷积网络以及用于对象定位和分类的机制。唯一的区别是上述机制允许网络在单向传输中对对象进行定位和分类。这使SSD更快,更容易训练。
YOLO也可以视为单发检测器。它将图像划分为单元格网格,然后预测属于某个类别的每个单元格的得分。
我们将在本系列的下一篇文章中回顾DL技术的优缺点。同时,让我们考虑如何将DL方法应用于特定目标——边缘设备上的人员检测。
我们有两个主要目标:
- 仅检测人类
- 使用有限的计算资源
使用DL方法有两种方法可以满足上述两个要求:
- 设计和训练新的CNN以仅检测人类并针对边缘设备可提供的大小和速度对其进行优化
- 查找可在边缘设备上使用的用于对象检测的现有CNN模型,并将其应用于检测人类
专业软件开发人员可能更喜欢第一种方法。例如,生产需要人工检测的视频监视系统。这将使我们能够创建为在Raspberry Pi设备上运行而优化的现实生活软件。同时,从头开始设计CNN架构,获取人员数据集并训练网络将需要大量时间和精力。
第二种方法要简单得多。我们只需要找到一个现有的DNN,即可在计算资源较少的设备上使用。它不需要太多的努力,也不需要全面地沉浸在DL技术中。我们的目标只是在边缘设备上展示人员检测功能,而不是创建世界上最好的CNN——我们将采取简单的方法。
但是,即使是我们的“简便”方式,也需要使用专门的计算机视觉和DL软件,以及编写定制的计算机代码。我们将Python和OpenCV一起用作计算机视觉系统。首先,我们将使用CNN和OpenCV编写Python代码,并对其进行测试以检测图像中的人。
然后,我们将编写更多代码——在Raspberry Pi 3 Model B设备上启动人员检测。我们希望您能继续前进;如果这样做,则需要在计算机上安装适用于Python的OpenCV。
阅读下一篇文章···