讨论一种简单的方法来创建一个用于边缘设备的深度学习(DL)人脸检测器,即寻找一个合适的深度神经网络(DNN)模型,并编写代码将其部署在设备上。本文将讨论现有DNN方法的优缺点,并选择一个预训练模型进行进一步的实验。提到了三种现代的图像目标检测深度学习技术:Faster-RCNN、单次检测器(SSD)和只看一次(YOLO)。每种技术都有其优势和局限性,需要考虑这些因素以选择最适合特定目的的技术。
Faster-RCNN使用卷积神经网络(CNN)以及区域提议(Region-Proposal)块和全连接(FC)层。CNN是网络的第一个块,其任务是从图像中提取特征。接下来的块——区域提议网络——负责提出可能的目标位置的感兴趣区域(ROI)。最后一个块——FC层——用于每个框的边界框(BB)回归和目标分类。以下是Faster-RCNN算法的简单示意图:
SSD方法与Faster-RCNN类似。在CNN特征提取器之后,它包含一个多框检测器,允许在一次前向传递中检测边界框和目标分类。这就是为什么它被认为是比Faster-RCNN更快的原因。
YOLO技术基于Darknet框架。它不是在不同的位置和尺度上扫描图像,而是将整个图像划分为一个网格的单元,并分析每个单元,为每个单元属于某个类别的概率打分。这使得YOLO算法非常快速。
仅仅考虑速度可能会使YOLO成为显而易见的选择。但在做出决定之前,还有一件事需要考虑——算法的精度。目标检测的精度概念比目标分类的精度更复杂。在这里,不仅需要评估分类错误,还需要评估目标边界框位置的错误。
目标检测的主要精度度量是交并比(IoU)——真实值和检测到的边界框的交集与并集的比率。因为可能有很多类别需要定位和分类,所以使用平均精度均值(mAP)来计算整个数据集的精度。mAP值通常在IoU=0.5时评估,并表示为"mAP@0.5"。
不会深入研究目标检测精度度量的理论。只需要比较三种竞争的深度学习方法在mAP@0.5方面的表现:这个值越高,模型的精度就越高。
在互联网上搜索各种Faster-RCNN、SSD和YOLO模型的精度值——会发现很多截然不同的结果。这是因为每种检测方法都有很多预训练的DNN模型。例如,SSD技术可以使用不同的CNN模型进行特征提取,每个模型都可以用不同的数据集进行训练:ImageNet、COCO、VOC等。
目标不是对所有现有模型的精度度量进行全面比较。对三种方法进行了测试,使用了相同的数据集,结果表明Faster-RCNN方法可以获得最好的精度,SSD模型的精度略低,YOLO网络的精度最低。
看来,目标检测方法越快,其提供的精度就越低。因此选择了一个折中方案——SSD模型,它既能提供足够的速度,又有足够的精度。
接下来,寻找一个现成的SSD模型,它应该满足以下条件: