Skip to content
Wotchin edited this page Nov 25, 2022 · 5 revisions

SmooFace人脸识别引擎

SmooFace人脸识别引擎是一款基于深度卷积神经网络实现的人脸识别引擎。采用Python语言实现,选型的机器学习库为tensorflow和keras. SmooFace提供了One-shot训练能力,可以采用ResNet、MobileNet等作为骨干网路,结合AM-Softmax,可以在保证识别精度的前提下,实现模型的快速训练。

详细技术原理

正如参考书所述,该人脸识别引擎主要关注这几个步骤:

  • 数据增强:如果原有数据集不够强大,则需要在原始数据集的基础上进行数据的增广,这些手段包括但不限于图像的各种变换、旋转、加噪声、遮挡等形式;通过增强,可以将原有的数据集扩充更大的体量,同时,这些数据集对应的标签并没有改变,进而可以增强训练后模型的抗噪声能力;
  • 数据预处理:无论是训练过程还是推理过程,神经网络的输入层的维度(shape)都应该是保持一致的,这就涉及到对输入的维度进行归一,该过程不仅包括对图像width, height的扩缩,也包括将一个RGB的彩色图像转换为灰度图像;同时,如果有些其他操作,也可以在此处进行处理,例如使用高斯滤波器去除一些噪声,但是这步骤通常是没有必要的,因为如果使用的训练数据样本具有这种case,则模型本身是可以抗这种噪声的;
  • 图片特征提取:图片特征提取最为成熟有效的方式就是CNN了,基于CNN网络层(layer),可以设计出各种各样的网络结构,他们包括但不限于AlexNet, VGGNet等,但是他们的结果都是将图片数据转换为特征表示,有了这层特征表示,就可以进行特征值的对比;由于基于深度学习的图片特征提取是通过给模型提供数据训练产生的,因此,不需要像之前人工设计的模型那样,需要精心设计图片的特征提取器(例如HOG、SIFT);但是,双刃剑的另一面就是数据量和数据的优质、覆盖程度决定了这个新的模型效果;
  • 特征对比:特征对比的方式有多种方式,可以通过一个神经网络端到端输出的(如siamese network),也可以是基于数学算法进行相似度衡量(如cosine distance)的;但是,其核心思路是一致的;
  • 监督学习目标:对于人脸识别任务等图片识别任务,目前最为广泛使用的任务形式仍然是监督学习;如果是监督学习,则涉及到回归或者分类任务;其实,回归或者分类任务都work,我们可以理解此处的分类任务也是一种更为“粗糙”的回归任务。总之,我们通过给定目标(target, label),可以让网络进行收敛;在模型收敛的过程中,很多研究这开始在损失函数上下功夫,即将原有的softmax损失函数进行了改进,使其在某些特征空间上更加“标准化”,以便更好地用作cosine等相似度衡量任务中;

勘误帖

出版物勘误请见此处

Clone this wiki locally