而历史上深度学习系统只有一个训练样例时,它的表现并不好。
通过一个样本来进行学习,以能够认出同一个人--因为在工业界中你的员工照片往往只有一张。
\[d(img1,img2)=degree\ of\ differemce\ between\ images\]
然后输出两张图片的差异值--如果你放进同一个人的两张照片,你希望他能输出一个很小的值,如果你放进两个长相差别很大的人的照片
\[If\ d(img1,img2)<=u 则判别这两张图片为同一张图片\]
\[>u则判别这两张图片为不同的图片\]
Taigman Y, Yang M, Ranzato M, et al. DeepFace: Closing the Gap to Human-Level Performance in Face Verification[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2014:1701-1708.
Schroff F, Kalenichenko D, Philbin J. FaceNet: A unified embedding for face recognition and clustering[J]. 2015:815-823.
在训练过程中\(d(A,P)+\alpha\le d(A,N)\)往往很容易达到,这就使在选择图片数据构成难以训练的A,P,N三元组-- \[d(A,P) \approx d(A,N)\]
对于深度学习领域网络模型的命名方式可以采用“_Net”或"Deep_"的形式,例如对于用于人脸识别的网路,可以将其命名为“FaceNet”或“DeepFace”
Triplet loss 是一个学习人脸识别卷积神经网络参数的好方法;将人脸识别当成一个二分类问题也可以很好地调整神经网络的参数。
Taigman Y, Yang M, Ranzato M, et al. DeepFace: Closing the Gap to Human-Level Performance in Face Verification[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2014:1701-1708.
将Siamese 网络得到的两个128维的编码向量后接上回归用的神经元,将其转化为一个回归问题,并且输出为0或1表示两个输入的图片是否来自同一张人脸。这就将人脸识别问题转化为一个二分类的问题。
\[\hat{y}=\sigma(\sum^{128}_{k=1}W_{i}|f(x^{(i)})_{k}-f(x^{(j)}_{k})|+b)\]其中\(\sigma\)表示非线性激活函数。
或基于 X-square similarity函数的回归方法
\[\hat{y}=\sigma(\sum^{128}_{k=1}W_{i}\frac{(f(x^{(i)})_{k}-f(x^{(j)}_{k}))^{2}}{f(x^{(i)})_{k}+f(x^{(j)}_{k})}+b) \]
[DeeplearningAI笔记]卷积神经网络4.1-4.5 人脸识别/one-shot learning/Siamase网络/Triplet损失/将面部识别转化为二分类问题
原文:https://www.cnblogs.com/cloud-ken/p/9490354.html