• 【60】什么是人脸识别;One-Shot学习;Similarity函数


    1. 人脸识别
    现在可以看到很多产品在运用人脸识别,如手机解锁、车站身份识别认证、刷脸支付等

    在人脸识别的相关文献中,人们经常提到

    人脸验证(face verification)
    人脸识别(face recognition)
    人脸验证问题:
    如果有一张输入图片,以及某人的ID或者是名字
    这个系统要做的是,验证输入图片是否是这个人
    有时候也被称作1对1问题
    只需要弄明白这个人是否和他声称的身份相符

    而人脸识别问题比人脸验证问题难很多
    因为这是1对多问题(1:K)
    假设有一个验证系统,准确率是99%,自我感觉还可以
    但是现在,假设在识别系统中,K=100
    如果把这个验证系统应用在100个人身上,人脸识别上,犯错的机会就是100倍了
    如果每个人犯错的概率是1%,如果有一个上百人的数据库
    如果想得到一个可接受的识别误差,要构造一个验证系统,其准确率为99.9%或者更高
    然后才可以在100人的数据库上运行,而保证有很大几率不出错
    事实上,如果有一个100人的数据库,正确率可能需要远大于99%,才能得到很好的效果

    2. One-Shot学习
    人脸识别所面临的一个挑战就是需要解决一次学习问题
    这意味着在大多数人脸识别应用中:
    需要通过单单一张图片或者单单一个人脸样例就能去识别这个人

    而历史上,当深度学习只有一个训练样例时,它的表现并不好
    看一个直观的例子,并讨论如何去解决这个问题:

    假设数据库里有4张成员照片,分别是哆啦A梦、大雄、胖虎、小夫

    现在假设有个人(编号1所示)来到一个地方,并且想通过带有人脸识别系统的任意门
    现在系统需要做的就是,仅仅通过一张已有的胖虎照片,来识别前面这个人确实是他
    相反,如果机器看到一个不在数据库里的人(编号2所示),应该能分辨出她不是数据库中四个人之一

    所以在一次学习问题中,只能通过一个样本进行学习,以能够认出同一个人
    大多数人脸识别系统都需要解决这个问题
    因为在数据库中每个成员可能都只有一张照片

    有一种办法是,将人的照片放进卷积神经网络中
    使用softmax单元来输出4种,或者说5种标签,分别对应这4个人,或者4个都不是
    所以softmax里会有5种输出
    但实际上这样效果并不好
    因为如此小的训练集不足以去训练一个稳健的神经网络

    而且,假如有新人加入伐木累,现在将会有5个成员需要识别,所以输出就变成了6种
    这时要重新训练神经网络吗?这听起来实在不像一个好办法

    3. Similarity函数
    所以要让人脸识别能够做到一次学习,为了能有更好的效果
    现在要做的应该是学习Similarity函数

    详细地说,想要神经网络学习这样一个用d dd表示的函数:
    d(img1,img2) d(img1,img2)d(img1,img2) = degree of difference between images
    它以两张图片作为输入,然后 输出这两张图片的差异值
    如果放进同一个人的两张照片,希望它能输出一个很小的值
    如果放进两个长相差别很大的人的照片,它就输出一个很大的值

    所以在识别过程中:
    如果这两张图片的差异值小于某个阈值 τ ττ,它是一个超参数,那么就预测这两张图片是同一个人
    如果差异值大于 τ ττ,就能预测这是不同的两个人,这就是解决人脸验证问题的一个可行办法

    将它应用于识别任务:

    要做的是拿这张新图片(编号6)
    然后用d dd函数去比较这两张图片(编号1和编号6)
    这样可能会输出一个非常大的数字,在该例中,比如说这个数字是10
    之后再让它和数据库中第二张图(编号2)片比较
    这样可能会输出一个非常大的数字,在该例中,比如说这个数字是10
    之后再让它和数据库中第三张图(编号3)片比较
    这样可能会输出一个非常大的数字,在该例中,比如说这个数字是11

    之后再让它和数据库中第四张图(编号4)片比较
    因为这两张照片是同一个人,所以希望会输出一个很小的数
    然后再用它与数据库中的其他所有图片(编号1、2、3)进行比较
    通过这样的计算,最终能够知道这个人确实是胖虎

    对应的,如果某个人(编号7)不在数据库中,通过函数d dd将他们的照片两两进行比较
    最后希望d dd会对所有的比较都输出一个很大的值
    这就证明这个人并不是数据库中4个人的其中一个

    要注意在这过程中是如何解决一次学习问题的
    只要能学习这个函数d dd,通过输入一对图片,它将会告诉这两张图片是否是同一个人

    如果之后有新人加入了伐木累(编号5),只需将他的照片加入数据库,系统依然能照常工作

  • 相关阅读:
    【linux】安装java步骤
    webpack4.15.1 学习笔记(五) — 生产环境构建
    webpack4.15.1 学习笔记(一) — 基本概念
    webpack4.15.1 学习笔记(三) — 模块热替换HMR
    webpack4.15.1 学习笔记(七) — 懒加载(Lazy Loading)
    可视化 — D3学习笔记小小案例记录一下
    webpack4.15.1 学习笔记(六) — 代码拆分(Code Splitting)
    webpack4.15.1 学习笔记(四) — Tree shaking
    webpack4.15.1 学习笔记(二) — 配置及开发环境构建
    三维地图中如何设置视频进行播放
  • 原文地址:https://www.cnblogs.com/lau1997/p/12384740.html
Copyright © 2020-2023  润新知