美文网首页
深度学习—人脸识别·笔记

深度学习—人脸识别·笔记

作者: 90000Tank | 来源:发表于2020-07-14 23:42 被阅读0次

    依赖知识

    • 互相关,寻找与模板所匹配的特征
    • 卷积,滤波,机器学习中就是互相关
    • 图像、信号处理参考资料:https://item.jd.com/11974394.html
      • 采样、量化
      • 插值:邻近插值、样条插值、线性插值
      • 1D、2D傅里叶变换:所有卷积和滤波基础
      • 小波变换
      • 局部预处理:Sober变换、高斯模糊、角点(兴趣点)检测
      • 边缘图像阈值化
    • 深度学习算法是较容易实现的。
    • 学习过程中需要大家实现正向计算过程,推断过程。

    问题分类

    人脸检测
    • 从任意大小照片中找到人脸,box
    • 难点如何处理任意大小图像
    关键点检测
    • 检测人脸关键点位置
    • 用于美颜、人脸校正
    人脸识别
    • 识别不同的人
    • 用于安全领域
    识别过程
    • step1:从任意大小的图片中检测到人脸(人脸检测)
    • step2:将检测到的人脸放正,人脸对齐(人脸关键点检测)
    • step3:识别不同的人 (人脸识别)

    人脸检测模型

    模型1:小波变换 + Adaboost算法

    • 思路:特征工程+机器学习算法
    • 明确训练和推断过程

    训练过程

    - 输入固定大小的图像:24×24灰度图 
    - 使用HaarLike小波提取特征:得到10w+个特征 
    - 特征过多需要进行特征筛选 
    - 使用Adaboost进行二分类 
    - 训练过程中需要24×24大小的人脸进行训练
      - 提取特征需要付出较多精力 
      - 数据预处理很麻烦 
    

    推断过程

    - 输入任意大小的图像进行检测 
    - 使用滑动窗在图像上进行检测 
    - 有些时候人脸是大于28×28 
      - 建立图像金字塔
      - 为检测不同大小的人脸 
    - 候选Box过多:非极大值抑制(NMS)
      - 概念:交并比IoU 
      - 按照置信度排序,并删除交并比较大的候选Box 
    

    模型2:卷积神经网络

    • 思路:原始数据+卷积神经网络模型
    • 模型:多层卷积神经网络
    • 细节:Multi-task CNN
      • 使用三个卷积神经网络进行人脸识别
      • PNet:纯卷积神经网络,相当于一个滑动窗,其可以处理任意大小图像
      • RNet,ONet:对PNet的结果进行更精细处理

    预测过程

    PNet
    - 输入固定12×12大小的彩色图像 
    - 网络为纯卷积神经网络
    - 主要目标为识别候选区域
    - 需要注意,人脸较小,因此读取零碎文件时可能较慢。
    
    RNet,ONet
    - 输入固定大小的彩色图像
    - 网络为卷积+全连接
    

    预测过程

    PNet
    - 输入任意大小的彩色图像 
    - 网络为纯卷积网络
    
    RNet、ONet
    - 输入也是固定大小的 
    - 其需要使用PNet识别后进行截取输入到网络中 
    - 可以获取更高精度 
    

    整合——MTCNN

    1. 使用了多级结构,PNet可以较快速度检测候选区域,RNet、ONet较高精度处理
    2. 相比于传统机器学习算法,不需要特征工程(或少量特征工程)
    3. 相比于传统机器学习算法,准确度相对更好
    4. 可以使用后续课程中的物体检测模型
    5. MTCNN同样可以用于物体检测

    注意问题

    • 感受野很重要
    • 其代表什么含义,以及如何计算感受野需要熟悉。

    拓展应用

    • 可以进行物体检测
    • 可以进行OCR预处理,字符分割
    • 可以用于语音识别(较不常见)
    • 类似思想可以用于1D、2D数据。

    重点知识

    • 滑动窗
    • 图像金字塔
    • 纯卷积结构可以处理任意大小图像
    • NMS:删除冗余的候选Box
    • 感受野问题

    人脸识别问题

    识别不同的人

    • 此时输入是固定大小的图像,需要使用人脸检测方法检测人脸
    • 输入一个深度神经网络模型进行分类

    如何搭建一个合理的深度神经网络

    • 最早的代表性的深度神经网络:AlexNet
      • 第一层卷积:11×11的KernelSize
      • 使得卷积核心非常大,可训练参数多,难以训练。
    • 改进模型:VGGNet
      • 改进方式:将大的卷积核心拆为3×3大小。
      • 神经网络可训练参数存在冗余,因此考虑使用更加精简的模型。
    • 后续改进1:GoogleNet
      • 改进方式:将大的卷积核心拆分为不同分支
      • 可训练参数更少,更加容易训练
    • 后续改进2:ResNet
      • 改进方式:添加支路
      • 改进梯度消失问题,使得网络更好训练
      • 可以使得网络层数更多
    • 后续改进3:BatchNorm
      • 显著的改善了梯度消失问题
      • 使得深度神经网络更容易训练

    如何识别任意多类人脸

    • 在全连接网络中无法直接增加类别
    • 使用固定长度(128)向量表示不同人脸
    解决方式1:构建三元损失函数
    - 使用三张图片两张是同一个人脸,一张不同人脸
    - 分别计算成向量v1,v2,vp 
    - 使得相同人脸距离越来越近 
    - $loss = \max((v1-v2)^2+\alpha-(v1-vp)^2, 0)$
    - 收敛速度较慢,可能需要训练几个星期。 
    
    解决方式2:构建分类问题损失函数+中心损失
    - 先使用分类问题进行训练
    - 再加入中心损失(使得同一类之间的距离更近,同一类的方差更小)
    - 收敛速度会更快 
    

    目前人脸识别问题

    • 一张图片即可破解
      • 可以使用3D人脸识别,成本高
      • 活体检测,成本低
    • 计算代价过高
      • 深度学习模型压缩
      • 设计专门硬件

    知识重点

    • GoogleNet和ResNet的优化
    • 三元损失函数的构建

    相关文章

      网友评论

          本文标题:深度学习—人脸识别·笔记

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