边缘设备的实时 AI 人员检测:选择深度学习模型





5.00/5 (3投票s)
在本文中,我们将讨论现有 DNN 方法的优缺点,并选择一个预训练模型以进行进一步的实验。
在本系列文章的介绍性文章中,我们讨论了一种为边缘设备创建 DL 人员检测器的简单方法,即找到合适的 DNN 模型并编写代码以在设备上启动它。在本文中,我们将讨论现有 DNN 方法的优缺点,并选择一个预训练模型以进行进一步的实验。
我们提到了三种用于图像中物体检测的现代 DL 技术:Faster-RCNN、Single-Shot Detector (SSD) 和 You Only Look Once (YOLO)。 每种技术都有其优点和缺点,我们应加以考虑,以便选择最适合我们特定目的的技术。
Faster-RCNN 使用卷积神经网络以及区域提议块和全连接 (FC) 层。 CNN 是网络的第一个块; 它的工作是从图像中提取特征。 以下块 - 区域提议网络 - 负责建议可能的对象位置的感兴趣区域 (ROI)。 最后一个块 - FC 层 - 用于每个框的边界框 (BB) 回归和对象分类。 这是 Faster-RCNN 算法的简单方案
SSD 方法类似于 Faster-RCNN。 在 CNN 特征提取器之后,它包含一个多框检测器,该检测器允许在单个前向传递中进行边界框检测和对象分类。 这就是为什么它被认为比 Faster-RCNN 更快的原因。
YOLO 技术基于 Darknet 框架。 它不是在不同的位置和比例上扫描图像,而是将整个图像划分为单元格网格并分析每个单元格,从而对每个单元格属于某个类的概率进行评分。 这使得 YOLO 算法非常快。
仅考虑速度就会使 YOLO 成为明显的选择。 但是,在做出决定之前,还需要考虑一件事 – 算法的精度。 对象检测的精度概念比对象分类的精度概念更为复杂。 在这里,我们不仅必须评估分类错误,还必须评估对象边界框位置的错误。
对象检测的主要精度度量是 Intersection over Union (IoU) – 真实值和检测到的边界框的交集和并集的比率。 因为我们可能有许多类要定位和分类,所以使用平均平均精度 (mAP) 来计算整个数据集的准确性。 mAP 值通常针对 IoU=0.5 进行评估,并表示为“mAP@0.5”。
我们不会过分深入研究对象检测精度测量的理论。 我们将仅从 mAP@0.5 的角度比较三种竞争性 DL 方法:此值越高,模型越精确。
在 Internet 上搜索各种 Faster-RCNN、SSD 和 YOLO 模型的精度值 – 你会发现很多截然不同的结果。 这是因为每种检测方法都有许多预训练的 DNN 模型。 例如,SSD 技术可以使用不同的 CNN 模型进行特征提取,并且每个模型都可以使用不同的数据集进行训练:ImageNet、COCO、VOC 等。
对所有现有模型的精度指标进行完整比较不是我们的目标。 我们使用相同数据集对三种方法的测试表明,使用 Faster-RCNN 方法可以实现最佳精度,使用 SSD 模型可以实现略低的精度,而使用 YOLO 网络可以实现最不精确的结果。
看来对象检测方法越快,它提供的精度就越低。 因此,我们选择了折衷方案 – SSD 模型,它可以提供足够的速度和足够的精度。
接下来,我们寻找一个现成的 SSD 模型,该模型应
- 足够小,可以在计算资源有限的 Raspberry Pi 上运行
- 经过训练可以检测人类(该模型可能也能够检测其他类别的对象 - 但其人类检测准确性对于我们正在创建的应用程序至关重要)
我们找到了两个合适的 SSD 模型。 第一个基于 MobileNet CNN,第二个使用预训练的 SqueezeNet 作为特征提取器。 两种模型均已使用 COCO 数据集进行训练,并且可以检测二十个不同类别的对象,包括人类、汽车、狗等。 每个模型的大小约为 20 MB – 与高性能处理器上使用的模型的常见大小 200-500 MB 相比,非常小。 因此,对于我们的目的而言,这两个模型看起来是正确的选择。
后续步骤
在下一篇文章中,我们将展示 Python 代码,用于启动这些模型并检测图像中的人。