基于FaceNet和MTCNN的Jetson-TX2人脸识别监控系统外文翻译资料

 2022-08-06 10:49:58

英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料


基于FaceNet和MTCNN的Jetson-TX2人脸识别监控系统

摘要——虽然监控系统取得了发展,但仍然面临许多挑战,特别是在通过闭路电视录像,或者诸如利用便携式无人机来巡逻或跟踪目标的领域。在很多地方,我们仍然通过人工观察,对可能的嫌疑人进行公共场所的实时监控,所涉及的体力劳动和可能发生的人为错误常常使系统效率降低。为了设计万无一失的系统,人们做了许多研究尝试,但仍在继续了解问题的重要性。本文在Jetson TX2上采用FaceNet和MTCNN算法,实现了一个基于多摄像头的智能监控系统。在本文中提出的便携式系统使用多个摄像机装置,用摄像机ID/位置和时间跟踪对象或嫌疑人,并在数据库中记录他的存在。

关键词— FaceNet, 人脸识别, 卷积神经网络 ,MTCNN, Jetson TX2, 监控系统

  1. 简介

自从图像传感设备出现以来,除了传统的运动检测传感器外,摄像机一直是安全业务的焦点。在大多数情况下,视频监控系统固定在基础设施上并且位置特定,但要实现一个便携式监控系统,需要具有高精度的算法以及能够以低功耗工作的,有强大的计算能力的嵌入式设备。在过去的一个世纪里,随着技术的迅速发展,监控行业出现了爆炸性的增长。这种情况在增加对高质量监控摄像机的需求的同时,降低了此类监控设备的成本。多摄像头监控广泛应用于各种可能的场景,旨在减少犯罪,提高公共和私人安全。虽然多个摄像头可以无缝工作,从而捕获视频流,但人们对所有现场摄像机或录像进行监控和仔细检查时,既不准确又效率低下。此时,深度学习技术及其基于图形处理单元(GPU)的自动人脸识别的概念就变得非常重要。这些算法具有快速响应和智能计算的特点,克服了现有监控系统的局限性。

  1. 相关工作

多年来,监视系统一直在各种设备和基础设施上实现,主要是基于CPU和FPGA的嵌入式系统,在传统的人脸识别和目标检测算法的基础上,利用功能更强大、效率更高的GPU实现了监控机制的原理,其精度接近88%。但是在过去的几年里,像FaceNet这样的深度学习架构,在基于GPU的系统上达到了接近99%的极高准确率。本文提出在Nvidia公司的Jetson TX2等基于GPU的嵌入式设备上,实现一个基于人脸识别的监控系统。

  1. FaceNet

FaceNet是谷歌研究人员开发的一种深度卷积神经网络,大约在2015年推出,以有效解决人脸检测和验证方面的障碍。FaceNet算法将人脸图像转换为128维欧氏空间,类似于文字嵌入。这样创建的FaceNet模型是针对三元组损失进行训练,以捕获所提供图像数据集上的相似性和差异性。该模型所生成的128维嵌入层可以有效并精确地对人脸进行聚类。使用FaceNet嵌入作为特征向量,可以在创建向量空间之后实现诸如人脸识别和验证等功能。简而言之,相似图像的距离比随机非相似图像的距离要近得多。图1中提到了人脸识别的FaceNet方法的整体模块的表示。

图1. FaceNet总体架构框图

FaceNet网络体系结构由一个批量输入层和一个深卷积神经网络组成,然后进行L2归一化,从而实现了人脸嵌入。接下来是三元组损失。

  1. 三元组损失(Triplet Loss)

在利用三元组损失的过程中,当样本为Positive,表示为同一身份的人,Anchor与样本之间的距离最小;同时,Anchor与Negative样本表示的不同身份的人之间的距离最大。因此,三元组损失是学习每个人脸的128维嵌入层的最佳方法之一。这里Anchor图像是指我们从数据集中获取的参考图像,以便计算三元组损失。为了计算三元组损失,我们需要三个图像:Anchor图像、Positive图像和Negative图像。三元组损失算法的可视化如图2所示。

图2. 三元组损失训练

在所有的三元组损失方法中,在线三元组挖掘方法被用来生成非匹配的人脸或大致对齐匹配的人脸的三元组损失,以训练FaceNet。通过这种方法,每个人脸只使用128字节以提高表示的效率。

  1. MTCNN

多任务级联卷积神经网络(MTCNN)算法用于检测人脸和人脸标记,分三步工作,每个过程使用一个神经网络。初始部分是Propsal 网络,它可以像Faster R-CNN中的Attention 网络一样预测潜在的人脸位置及其边界框。这个过程的结果是大量的人脸检测和大量的错误检测。第二部分利用第一步预测的图像和输出,对结果进行细化,以消除大部分的错误检测和重叠窗体。最后一部分改进了更多的预测,并在最初的MTCNN实现中添加了面部标记点预测。实验结果表明,在保证实时性能可靠的同时,该方法在大多数具有挑战性的基准测试中始终优于成熟的传统方法。实验分别从FDDB,WIDER FACE基准 ,以及AFLW基准分析了人脸检测和人脸对齐。这种更优秀的实时性能,在监控系统中具有重要意义。

  1. 一次学习(One Shot Learning)

传统的深度学习网络需要大量的数据集,才能对分类进行高精度的预测。一次学习尝试使用最少的图像或训练样本,学习对象类的特征。在一次学习中,最初用于训练模型的对象的数据集较少,但是对于新的对象的引入,可以使用相同的模型,而无需再训练,这有助于添加新的人脸嵌入层。最好使用Siamese网络来实现一次学习。

Siamese网络的目的是将输入向量映射到特征空间中属于两个不同类型(或类)的最大距离,或者映射到特征空间中属于同一关系类型(类)的较小距离或最小距离。根据方程(1),输入嵌入x和卷积函数以及最大池化运算fw(.),给出平坦化的向量输出。这个平坦化的输出向量穿过全连接层g(.),并计算由方程式(1)中给出的绝对距离定义的距离层的dist(.)。

由一对输入向量x获得的激活输出g(.)的差的绝对距离是距离层输出,因此需要在特征空间测量距离中获得映射。使用卷积函数生成激活输入,然后是最大池化 fw(.)。然后将该输出平坦化并提供给全连接层g(.),如方程(1)中所示。

根据方程(1)得到的输出层损耗对该网络进行优化。相似图像的损失较小,而非相似图像的损失较大。

图3. 带多个摄像头的Jetson TX2

  1. JETSON TX2

Jetson TX2是一款速度最快、功耗最高的嵌入式人工智能计算设备。这个低功耗为7.5瓦的超级计算模块有助于在终端设备上实现真正的人工智能处理。它是一个基于GPU的主板,采用Nvidia 256核pascal架构和64位十六进制ARMv8 CPU,堆叠有8GB内存和59.7GB/s 128位内存数据传输容量接口。它包括一系列标准设备接口,如显示器、摄像头、GPIO等,从而实现快速搭建。它还拥有每秒14亿像素的图像信号处理器(ISP)。Jetpack SDK用于自动化Jetson TX2上的基本安装,其中包括板支持包、库,特别是用于深入学习和计算机视觉的库。

这是一个进行深度学习理论的良好硬件。这也提高了以更高的准确率去识别人的速度。基于GPU的主板所具有的这些特性,有助于我们实现多摄像机识别系统。这将帮助我们把重点放在多摄像头监控系统的实现上。

  1. 数据集

用于一次学习和嵌入创建的数据集由5000个RGB图像组成。该数据集由10名学生的面部图像组成,作为一个一次学习模型,与其他算法相比,检测一个人只需要更少的图像数据集。我们还包括一个未知面孔的数据集,这是一组外国成员的随机图像。此数据是从LFW数据集访问的。图4显示了样本数据集。

图4. 10名学生的样本数据集

六. 运行结果

使用Jetson Development Pack(JetPack)安装程序和Ubuntu16.04操作系统,将JetPack安装到带有CUDA支持选项的Jetson TX2中。运行必要的测试来验证安装,并使用命令:nvcc-V验证版本。

为FACENET构建和安装所需的软件包。FACENET所需的软件包如下:TensorFlow==1.7、scipy、scikit learn、OpenCV python v3、h5py、matplotlib、Pillow、requests、psutil。要使程序与基于GPU的主板兼容,必须编辑FACENET源代码,从而使其与Jetson TX2兼容。这些更改包括:导入sklearn的正确文件,“class sklearn.cross_validation.KFold”而不是“class sklearn.model_selection.KFold”。因为Jetson TX2对最新版本(v.20 )的sklearn支持有限,所以这是必要的。使用OpenCV上搭建的程序初始化并验证多摄像机系统。

最后访问学生正面人脸图像数据集,利用该数据集进行训练,利用预先训练好的FaceNet模型创建embedding文件。FaceNet模型名:20180402-114759,用于创建嵌入层。

实时人脸检测与识别的实现,包括OpenCV读取帧,MTCNN人脸检测,基于三元损失的人脸嵌入和基于FaceNet算法的Siamese网络人脸识别,存储识别出的人脸并分析,监控入侵者并报警。识别出的人脸被导出到Excel表中,用于记录出现的嫌疑人,以及检测到目标的位置ID。目标位置将绑定到相机ID或其位置。图6说明了实现的框图。

图5. 监控系统目标样本输出的Excel表快照:Edwin Jose和Greeshma Manikandan

监控系统是多摄像机人脸识别和目标跟踪的应用。该系统的主要特点是实时

跟踪被测对象,并通过分析被测对象所在的摄像机位置记录路径数据(连续位置)。展示监控的demo结果的Excel表格如图5所示。实时输出如图7所示。

图6. 多摄像机监控系统框图

七.挑战

Jetpack3.3用于CUDA的刷机并将依赖于GPU的相关文件和包加载到JetsonTX2。在UbuntuLinux x64(v16.04)中,Jetson TX2的某些包和依赖项不支持FaceNet源代码的依赖项,TX2的处理器是基于ARM的,因此需要花费初始时间来编译各种包,如OpenCV3.3和其他包,如sklearn,这是实现FaceNet所必需的。Sklearn拥有最新版本的v0.20.2。Jetson TX2存储库只支持到sklearn的v0.17版本(在实验时),因此有必要更改和更新源代码。

在编译了必要的包和依赖项之后,FaceNet的新源代码就可以执行了。在此过程中,我们还了解到,识别所需的嵌入层应该在Jetson TX2或具有相同版本依赖关系的计算机上运行或训练。因此采用在Jetson TX2上生成嵌入层的方法,使整个系统更加实时,并着重于便携式监控系统的理念。检测阈值设置为80%,仅当其高于80%时才确认身份。这提高了侦查的准确性,因此在我们的各种试验中,对嫌疑人的追踪总体准确率达到97%。

图7. Jetson TX2多摄像头识别后的监控输出

八. 分析

模型在Jetson TX2上的性能使用混淆矩阵进行分析,如图8所示。用于评估分类模型性能的指标有准确性、精确性、召回率、特异性、F1分数。表1提供了模型评估参数,并且可以分析出系统对数据集中给定的7名嫌疑人的踪迹具有97%的准确率。因为系统是为多摄像机布置而实现和测试的,所以表一中给出的数据来自摄像机ID:CAM 1和摄像机ID:CAM 2。表中的最大值为1,对应于100%。两台摄像机对7个已知类别(即嫌疑犯)的精度分析均在90%以上。召回率在80%以上,表示系统真阳性率,特异性在98%以上,表示系统真阴性率良好。已知分类的F1分数也都在88%以上,并且显示了100%的最大值,这表明精确性和召回率之间有很好的平衡。

  1. (b)

图8. 混淆矩阵图:(a)plot1的数据图(b)plot2的数据

九. 总结

在Jetson TX2上成功地实现了基于FaceNet和MTCNN的人脸识别的多摄像头(2个)监控系统。此独立系统检测数据集中已给定

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[254504],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。