美文网首页
2020-07-15 总结人脸识别项目

2020-07-15 总结人脸识别项目

作者: 七昂的技术之旅 | 来源:发表于2020-07-15 14:15 被阅读0次
  1. 轻量级人脸识别研究过程:

(1) 在VGGFace2数据集上,Inception-ResNet-V1 / VGG16 + TripletLoss,问题:泛化性能相对不佳。

(2) 在MS1M数据集上,ResNet50/ResNet100 + ArcFace, 精度高,问题:手机端高时延

(3) 在MS1M数据集上,MobileNet/ShuffleNet/MobileFaceNet/VarGFaceNet + ArcFace, 精度高,时延低,轻微精度损失。

深度学习高效网络结构设计 - mileistone的文章

Light Networks.png

(4) 评估集: LFW, AgeDB, CFP, MegaFace

(5)参数设置:

  • L2 weight decay: 5e-4
  • SGD momentum: 0.9
  • lr 0.01 LR_STEPs
  • batch_size : 64 \ 128

(6) 如何选择batch size?太大或太小会有什么问题?

样本量少时,方差很大,会使得梯度下降时在局部最优点或鞍点时很不稳定,有机会寻找更优的最优点;样本量大时, 方差很小,梯度估计会准确和稳定得多,可能在差劲的局部最优点和鞍点停滞,导致网络收敛在了较差的点上

(7) SE block对人脸识别效果提升的研究:


image.png

(8)不同人脸检测器对训练数据图片做人脸对齐对人脸识别效果的影响? MTCNN 和 RetinaFace
(9) 在MobileFaceNet中使用Variable Group Convolution.

  1. TripletLoss
    (1) Distance: 欧式距离
    (2) semi-hard triplet selection: d(a,p) + α < d(a, n)

  2. ArcFace
    (1) 训练集中每个人物的所有图片都有一个center,目标:使同一个人物的人脸特征向量夹角尽可能小,不同人物的人脸特征向量夹角尽可能大。
    (2) angular margin penalty m,θ1+m < θ2: 当前人脸特征向量X11与center特征向量W1的夹角加上边缘角m,小于X11与其它类的center特征向量W2。
    (3) 概率输出:softmax
    (4) ground truth: one-hot vector
    (5) loss: cross-entropy Loss
    (6) why work? 将margin 直接作为角度加上去,拉大了同类之间的角度,使神经网络将同类收得更紧。

  3. 其它人脸损失函数:
    (1) SphereFace:
    cos(mθ)
    (2) CosFace:
    cos(θ) - m
    (3) CombinedLoss (in ArcFace Paper):
    cos(m1*θ + m2) - m3
    Note: [
    m1, SphereFace
    m2, CosFace
    m3, ArcFace
    ]
    (4) CenterLoss

中心损失 Center Loss 解释

CenterLoss.png

CenterLoss的公式就是希望每个样本的Feature离Feature中心的距离的平方和越小越好,也就是说类内距离越小越好。


loss function.png
  1. MobileFaceNet: 由MobileNet V2改进来用于人脸识别任务.

(1) 原理: 经典轻量网络中的MobileNet和ShuffleNet中的平均池化层会使得网络在需要精确面部信息的人脸识别任务中表现下降.

(2) 改进:

  • 使用GDConv(深度可分离卷积)替换Global Average Pooling
  • 通道扩张倍数变小
  • 使用PReLU代替ReLU
  • 使用Batch Normalization
  1. VarGFaceNet---Champion in LFR(Light Face Recognition):
    (1) 原理: MobileNet的连续两层DWConv和PWConv之间有巨大的计算量差异,5%用于DWConv , 95%用于PWConv。因为嵌入式设备加载网络的所有参数来执行卷积操作,它需要为1 x 1 卷积准备额外的片上缓冲区域来存储中间feature map的分片。

(2) Variable Group Convolution: 解决深度可分离卷积中连续两层计算量极大不平衡的问题.

(3) 深度可分离中的分组数s, s大于1就意味着组可变卷积比深度可分离卷积有更多的计算量和有更大的网络容量,从而有更大的提取信息能力。

(4) SE block : 通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征。

SE block.png

(5) 知识蒸馏的模型压缩方法

  1. 轻量级网络的设计原则:
  1. 人脸检测MTCNN

(1)为什么需要对图片做“金字塔”变换?
推断的时候,想要检测各种尺度的人脸更准,需要把待检测的人脸的尺度先变化到接近模型尺度。(12*12)

(2) MTCNN算法可以接受任意尺度的图片,为什么?
P-NET 是一个全卷积网络(FCN),可以接受任意尺寸输入。

卷积、池化、非线性激活都是一些可以接受任意尺度矩阵的运算,但全连接运算是需要规定输入。如果网络中有全连接层,则输入的图片尺度(一般)需固定;如果没有全连接层,图片尺度可以是任意的。

(3) 为什么缩放因子factor官方选择0.709?
缩放因子0.709 ≈ sqrt(2)/2,这样宽高变为原来的sqrt(2)/2,面积就变为原来的1/2。

(4) 为什么把图片输入模型的时候要对每个像素做(x – 127.5)/128的操作?
归一化操作,加快收敛速度。由于图片每个像素点上是[0, 255]的数,都是非负数,对每个像素点做(x – 127.5)/128,可以把[0, 255]映射为(-1, 1)。

(5) 特点:准而慢。第一,生成图片金字塔慢;第二,每种尺度的图片都需要输入进模型,相当于执行了多次的模型推断流程。

(6)损失函数

  • Face classification: cross-entropy loss
  • Bounding box regression: Euclidean loss
  • Facial landmark localization: Euclidean loss

相关文章

  • 2020-07-15 总结人脸识别项目

    轻量级人脸识别研究过程: (1) 在VGGFace2数据集上,Inception-ResNet-V1 / VGG1...

  • 人脸识别 -- 活体检测(张嘴摇头识别)

    一:简介 最近项目在做了身份证银行卡识别之后,开始实现人脸识别和活体识别,其中人脸识别包括人脸入库、人脸查找、人脸...

  • Android园区部队人脸识别源码门禁项目讲解

    Android园区部队人脸识别源码门禁项目讲解 这边搞人脸识别相关项目有一段时间,今天抽时间讲述一个经典的人脸识别...

  • 应用层下的人脸识别(一):图像获取

    作者根据多年人脸识别项目经验,总结了人脸识别技术在安防领域应用的完整流程及产品设计细节。系列文章将依照业务流程的顺...

  • android基于虹软的人脸识别+测温+道闸项目实现

    前言: 最近应防疫要求,开发一套人脸识别+腕部测温+身份证+健康码通行的道闸项目,人脸识别采用的是虹软人脸识别算法...

  • 海康SDK人脸摄像头对接

    1、前言 最近有个项目要用到人脸识别,由于很多原因最后决定采购海康的人脸识别摄像头(支持人脸抓拍+人脸比对等功能)...

  • 周记-2018/10/01

    人脸识别 人脸识别作为机器学习的一个领域,有着极其重要的应用价值。 这是一个人脸识别的学习项目,通过它能快速地搭建...

  • 安卓离线动作活体识别项目源码

    最近做一个项目用到人脸识别技术。项目周期比较长,这边研发人脸识别算法用于该项目。 项目是一个公司内部ERP模块一部...

  • 人脸识别技术 通识

    人脸识别技术 通识 1 人脸识别概要 2 人脸识别工作原理 3 人脸识别技术分类 4 人脸识别技术优缺点 5 人脸...

  • 相机原始数据转Bitmap

    项目中需要用到人脸识别技术,外接的第三方人脸识别sdk,用的是本地离线识别方案,但是在注册时和识别人脸成功时都需要...

网友评论

      本文标题:2020-07-15 总结人脸识别项目

      本文链接:https://www.haomeiwen.com/subject/xtvdhktx.html