其实之前已经做过人脸识别的项目了,比如Insightface里面提供了模型以及代码,其指标可以查看Model Zoo。
但是当时的实现是离线模式,也就是离线识别照片,甚至是通过服务器进行人脸对比的。如果需要在浏览器里面进行实时的人脸识别,就需要其他的方案。后来同事推荐Google MediaPipe方案,可以通过浏览器的Web Assembly,实现浏览器端人脸识别,甚至在手机端都可以运行,解决了延迟的问题。
至此,有两个思路。一个是Google的MediaPipe,另外一个是把ONNX搬到浏览器里面直接运行。ONNX格式的模型也可以在浏览器上运行,需要onnxruntime-web。
Google MediaPipe
ONNX runtime web
CNN
https://poloclub.github.io/cnn-explainer/
视觉主干网络
AlexNet(2012年)
AlexNet由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton等人提出,并在2012年的ImageNet图像分类竞赛中获得了压倒性的胜利。AlexNet的成功标志着深度学习在计算机视觉领域的巨大突破。
架构:包含了5个卷积层和3个全连接层,使用了ReLU激活函数、数据增强、Dropout和GPU加速等技术。 突破性:大幅提高了图像分类的准确率,AlexNet使得深度卷积神经网络成为计算机视觉研究的主流。
VGGNet(2014年)
VGGNet(Visual Geometry Group Network)由牛津大学的Visual Geometry Group提出,VGGNet的一个重要贡献是使用了非常小的卷积核(3x3)和深层次的网络结构。
架构:通常使用16或19个卷积层(VGG16/VGG19),采用重复的卷积层结构,提升了网络的深度。 特点:虽然VGGNet结构简单,但其在多个计算机视觉任务上表现良好,成为许多后续研究的基础。
GoogLeNet(Inception)系列(2014年)
GoogLeNet(或称Inception架构)由Google提出,并在2014年ImageNet竞赛中获得了第一名。
架构:GoogLeNet引入了“模块化”的思想,即Inception模块。每个Inception模块包含了不同尺寸的卷积层(1x1、3x3、5x5)和池化层,能够在同一层中捕捉不同尺度的特征。 突破:GoogLeNet通过模块化设计减少了参数量,同时保持了较高的准确率,是轻量化深度网络的典型代表。
ResNet(2015年)
ResNet(Residual Network)由微软研究院提出,凭借其创新性的残差连接(skip connections)解决了深度网络训练中的梯度消失问题。
架构:使用了残差块(residual block),通过引入跳跃连接,允许信息直接流过层与层之间,解决了深层网络中的训练问题。 突破性:ResNet使得网络可以有效地训练数百甚至数千层的深度网络,并在2015年ImageNet竞赛中取得了优异成绩。
DenseNet(2016年)
DenseNet(Densely Connected Convolutional Networks)由Gao Huang等人提出,其核心思想是每个层与前面所有层进行连接。
架构:DenseNet通过将每个层的输出与前面所有层的输出进行连接,确保了特征的最大化重用。这种结构显著提升了网络的训练效率。 突破性:DenseNet减少了参数量,并通过特征复用提高了网络性能。
MobileNet(2017年)
MobileNet由Google提出,旨在为移动设备提供高效的卷积神经网络。
架构:采用深度可分离卷积,减少了计算量和参数量,非常适合在资源有限的环境(如移动设备和嵌入式系统)中应用。 突破性:MobileNet成为了许多移动端应用的主干网络,广泛应用于图像分类、物体检测等任务。
EfficientNet(2019年)
EfficientNet由Google提出,通过神经架构搜索(NAS)技术自动寻找最优的网络架构,并结合了模型规模、深度、宽度、分辨率的平衡。
架构:通过精心设计的搜索算法,找到了一种在计算量和准确度之间最为高效的网络架构。 突破性:EfficientNet显著提高了模型的性能,同时减少了计算资源的消耗,是当前最为高效的主干网络之一。
CenterNet(2019年)
特点:CenterNet是一种以中心点(中心坐标)为基础的目标检测网络,常用于检测任务中,具有较高的准确度和效率。 应用:目标检测,尤其是用于实时目标检测任务。
YOLO (You Only Look Once)
特点:YOLO系列网络(如YOLOv3, YOLOv4等)是实时目标检测的经典网络,具备较高的推理速度和较低的计算资源需求。 应用:实时目标检测任务,常用于视频监控、无人驾驶等场景。
常用数据集
LFW Labeled Faces in the Wild
LFW是一个标准的人脸识别数据集,专门设计用于验证人脸识别算法的泛化能力。它包含了13,000多张面部图像,这些图像来自5,749个不同的人,且图片均为自然场景拍摄。
用于评估人脸识别系统的基本能力,主要考察在自然条件下的验证任务。
CFP-FP
一个多样化的人脸识别数据集,包含了从多个角度(正面和侧面)拍摄的名人面孔。它特别设计用来评估人脸识别模型在不同姿态下的表现,尤其是侧面图像。
特别考察系统在不同姿态(正面与侧面)下的表现,主要是姿态变化带来的挑战。
AgeDB-30
包含了30,000多张人脸图像,这些图像来自年龄跨度较大的人群(0到100岁)。每个个体的图像在不同年龄段都进行了采集,包含了不同年龄下的同一人物图像。
测试人脸识别系统在年龄变化下的表现。
MegaFace
大规模人脸识别数据集,设计目的是为了评估人脸识别系统在大规模人脸库中的表现。这个数据集非常庞大,包含了数百万张人脸图像,能够模拟真实世界中大规模人脸识别的挑战。
用于测试在大规模数据集下的表现,特别是在人脸库非常庞大的情况下的精度和速度。