65.9K
CodeProject 正在变化。 阅读更多。
Home

边缘设备上的实时 AI 人脸检测:入门

2020年10月5日

CPOL

4分钟阅读

viewsIcon

11381

downloadIcon

1923

这是本系列文章的第一篇,我们将向您展示如何在树莓派上实时(或近实时)检测人物。

由于深度学习 (DL) 的发展,实时检测直播视频流中的人物已经解决了好几年。但对于计算能力并不总是很强的边缘和物联网设备来说,这并不容易。

在本系列文章中,我们将向您展示如何在树莓派上实时(或近实时)检测人物。本系列假设...

从历史上看,图像中物体检测的最初方法,例如 Haar 或 LBP 级联,以及方向梯度直方图 (HOG) 分类器,都旨在侧重于查找特定类别的物体。 它们都以某种方式基于提取几何特征,并确定检测到的特征集是否属于指定类别的物体。

当深度神经网络 (DNN) 出现时,它们立即被认为是高效的特征提取器。 这促使人工智能 (AI) 研究人员开发面向物体检测的 DNN 和用于训练它们的有效算法。 如今,几乎所有现代计算机视觉系统都使用 DL 算法进行物体检测。 通常,物体检测系统运行在高性能 CPU、GPU 甚至 TPU 上——这些处理器是专门为 DNN 设计的。

为了在计算能力较低的设备上进行人物检测,我们必须使用适合设备的 AI 方法。 首先,让我们分析现有 DL 方法的优缺点,并选择最适合我们的方法。 由于人物检测是物体检测的特例,我们将查看通用的 DL 物体检测器,然后看看如何将它们应用于我们的特殊情况。

以下是目前最成熟的现代 DL 物体检测方法:Faster-RCNN、单次目标检测器和 You Only Look Once (YOLO)。 以上所有技术都使用卷积神经网络 (CNN),它们之间的区别在于内部网络结构和网络训练算法的细节。

Faster-RCNN 是第一个成功用于视频流实时物体检测的 DL 技术。 Faster-RCNN 是一个 DNN,具有两个主要部分。 第一部分用作特征提取器。 第二部分是一个专门设计的神经网络,它使用提取的特征来定位物体的位置并对其进行分类——例如,如下图所示。

单次目标检测器 (SSD) 与 Faster-RCNN 非常相似。 它包括一个用于特征提取的卷积网络和一个用于物体定位和分类的机制。 唯一的区别是上述机制允许网络在一次前向传递中定位和分类物体。 这使得 SSD 训练速度更快、更简单。

YOLO 也可以被认为是一个单次检测器。 它将图像分成单元格网格,然后预测每个属于某个类别的单元格的分数。

我们将在本系列的下一篇文章中回顾 DL 技术的优缺点。 同时,让我们考虑一下如何将 DL 方法应用于我们的特定目标——在边缘设备上进行人物检测。

我们有两个主要目标

  • 仅检测人物
  • 使用有限的计算资源

有两种方法可以使用 DL 方法满足上述两个要求

  1. 设计并训练一个新的 CNN,仅用于检测人物,并针对边缘设备可以提供的尺寸和速度进行优化
  2. 找到一个现有的 CNN 模型用于物体检测,该模型可以在边缘设备上使用,并将其应用于人物检测

专业的软件开发人员可能更喜欢第一种方法。 例如,为了制作一个需要人物检测的视频监控系统。 这将允许我们创建为在树莓派设备上运行而优化的真实软件。 同时,这将需要大量的时间和精力来从头开始设计 CNN 架构,获取人物数据集,并训练网络。

第二种方法更简单。 我们只需要找到一个现有的 DNN,可以在计算资源有限的设备上使用。 这既不需要花费太多精力,也不需要深入研究 DL 技术。 我们的目标只是展示在边缘设备上进行人物检测——而不是创建世界上最好的 CNN——我们将采取简单的方法。

然而,即使是我们的“简单”方法也需要使用专门的计算机视觉和 DL 软件,以及编写定制的计算机代码。 我们将使用 Python 以及 OpenCV 作为计算机视觉系统。 首先,我们将使用 CNN 和 OpenCV 编写 Python 代码,并测试它们在图像中检测人物的情况。

然后,我们将编写更多代码——用于在树莓派 3 Model B 设备上启动人物检测。 我们希望您能跟上; 如果您这样做,您将需要在您的计算机上安装适用于 Python 的 OpenCV。

© . All rights reserved.