首页 > 其他分享 >机器学习:人脸识别

机器学习:人脸识别

时间:2022-11-06 00:22:37浏览次数:39  
标签:特征值 照片 人脸识别 机器 hard 三元组 学习 small Anchor

如果用 CNN 按分类做验证的话,会有以下问题

  • 需要每个人都给多个样本照片,比如每个人要提供 100 张自己的人脸照片供模型学习,这本来就不容易,加上人的数量也多,就更是个问题
  • 哪怕有足够的样本数据,另一个问题是人员组成很容易变化,比如公司员工经常变化(大组织甚至每天都有人员进出),分类的数量和类别也就变了,不可能每次都重新训练

如果是为了识别部分公众人物,倒是可以这样做,因为一方面网上有很多公众人物的照片,另一方面公众人物的数量不多,而且也较为稳定

Triplet Loss (三元组损失)

训练集的每个数据,是一个三元组,由 Anchor (锚)、Positive (正确)、Negative (错误) 的三张照片组成

其中 Positive 和 Anchor 是同一个人,而 Negative 和 Anchor 不是同一个人

将照片分别放入卷积网络,得出一维特征值,比如 512 维特征值
然后计算 Anchor 的特征值和 Positive 的特征值的距离 d(A,P)
以及 Anchor 的特征值和 Negative 的特征值的距离 d(A,N)
要求 d(A,N) 至少要比 d(A,P) 大某个值,即 d(A,P) + a <= d(A,N)

损失函数 $\small L = \sum_{i=1}^{n}max(\ (d(A_{i}, P_{i})\ -\ d(A_{i}, N_{i})\ +\ a),\ \ 0) $

有三种三元组
  easy triplets:loss 为 0  d(A,P) + a <= d(A,N) 的时候损失取 0
  hard triplets:d(A,P) > d(A,N)
  semi-hard triplets:d(A,P) + a > d(A,N) > d(A,P)  d(A,N) 比 d(A,P) 大但差距不到 a

训练中如果有样本计算出来的是 semi-hard 那么训练效果会比较好,模型会被调整到满足 loss 为 0

后面验证的时候就是用训练出来的 CNN 网络,得出两张图片的特征,再计算特征距离,小于 a,就认为是同一个人

二分类法

在卷积层提取出特征值,假设特征值是 n 维(比如 512 维),两张图片的特征值分别是 X1 和 X2
不是简单计算距离,而是计算另一个值
  
  \(\small y = sigmoid(\sum_{i=1}^{n}(w_{i} \times | x1_{i} - x2_{i}|) + b)\)
  
\(\small y \approx 1\) 就是同一个人,\(\small y \approx 0\) 就不是



标签:特征值,照片,人脸识别,机器,hard,三元组,学习,small,Anchor
From: https://www.cnblogs.com/moonlight-lin/p/16861776.html

相关文章

  • group by语句学习
    转自:https://www.cnblogs.com/rainman/archive/2013/05/01/3053703.html1.例子按照groupby后的字段分组,相同的为一组,一般是计算数量。select类别,sum(数量)as数......
  • MVVC学习的一点理解
    MVCC全名叫做:多并发版本并行(concurrent)控制是一种并发控制方法再MySQLInnoDB的实现主要是为了提高数据库并发性能,处理读-写冲突MVCC知识一个抽象概念,而在MySQL中,快照读......
  • 课程学习内容
    一、创建文件的三种方法第一种 @Testpublicvoidcreate1(){StringfilePath="D:\\file1.txt";Filefile=newFile(filePath);try{file.createNewFile();......
  • JAVA学习DAY1
    JAVA学习Windos快捷键ctrl+c:复制Ctrl+v:粘贴ctrl+A:全选ctrl+x:剪切ctrl+Z:撤销Ctrl+s:保存win+R:命令窗口win+shift+esc:任务管理器win+e:打开我的电脑shi......
  • 学习笔记
    创建文件的三种方法//方式1@Testpublicvoidcreate1(){StringfilePath="D:\\file1.txt";Filefile=newFile(filePath);try{file.createNewFile();System.......
  • 2022-2023-1 20221425 《计算机基础与程序设计》第十周学习总结
    学期(如2022-2023-1)学号(如:20221425)《计算机基础与程序设计》第十周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这......
  • docker实战学习2022版本(五)之DockFile入门实战
    DockFile:DockFile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。官网:https://docs.docker.com/engine/reference/builder/构建三部曲:编写d......
  • 第二篇Typora学习
    学习java第一次使用Typora做笔记Hello,World(两边加2个*号就变成粗体了)Hello,World(两边加1个*号就变成粗体了)Hello,World!(两边加3个*号就变成斜体加粗了)Hello,World!(......
  • 2022-2023-1 20221306 《计算机基础和程序设计》第十周学习总结
    作业信息这个作业属于那个班级 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10作业目标学习......
  • 大三上学期学习日记7
    这周完成了老年人评估系统的界面管理设计    ......