学习目标:
- 深度学习吴恩达lesson4-week4:特殊应用:人脸识别和神经风格转换(Special applications: Face recognition &Neural style transfer)
学习内容:
目录
4.1 什么是人脸识别?(What is face recognition?)
4.2 One-Shot学习(One-shot learning)
4.3 Siamese 网络(Siamese network)
学习时间:
- 10月24-10月30
学习产出:
4.1 什么是人脸识别?(What is face recognition?)
人脸识别主要包括两个比较常见的术语:人脸验证:如果你有一张输入图片,以及某人的 ID或者是名字,这个系统要做的是,验证输入图片是否是这个人。有时候也被称作1对1问题,只需要弄明白这个人是否和他声称的身份相符。人脸识别:
4.2 One-Shot学习(One-shot learning)
一次学习问题:你需要通过单单一张图片或者单单一个人脸样例就能去识别这个人。
个人理解:大概意思就是,假设数据库中已经存在各个成员的信息。我们需要通过输入一张图片去识别他是否是数据库中某个人的信息,或者并不在数据库当中出现过。
所以在一次学习问题中,只能通过一个样本进行学习,以能够认出同一个人。大多数人脸识别系统都需要解决这个问题,因为在你的数据库中每个雇员或者组员可能都只有一张照片。
寻找能够一次学习得出正确结果的解决方法:
思路一:可以使用softmax,softmax是逻辑回归的扩展,可以实现对输入照片进行分类,把识别问题转换为分类问题。但是存在的问题是,训练这样一个逻辑回归网络本身就需要很多的训练样本去提取数据库中各个人的特征,并且输出很不方便(当有新的公司成员进入的时候,就需要改变输出的形式),所以 该思路行不通。
思路二:构造d函数
d(img1,img2)=degree of difference between images,它以两张图片作为输入,然后输出这两张图片的差异值。如果你放进同一个人的两张照片,你希望它能输出一个很小的值,如果放进两个长相差别很大的人的照片,它就输出一个很大的值。
所以在识别过程中,如果这两张图片的差异值小于某个阈值\tauτ,它是一个超参数,那么这时就能预测这两张图片是同一个人,如果差异值大于τ,就能预测这是不同的两个人,这就是解决人脸验证问题的一个可行办法。
4.3 Siamese 网络(Siamese network)
对于两个不同的输入,运行相同的卷积神经网络,然后比较它们,这一般叫做Siamese网络架构。
4.4 Triplet 损失(Triplet 损失)
为了应用三元组损失函数,你需要比较成对的图像,比如这个图片,为了学习网络的参数,你需要同时看几幅图片,比如这对图片(编号1和编号2),你想要它们的编码相似,因为这是同一个人。然而假如是这对图片(编号3和编号4),你会想要它们的编码差异大一些,因为这是不同的人。
转化为数学公式: