Andrew Ng's deeplearning Course4Week4 Special applications(特殊应用:人脸识别及神经风格转换)
一、人脸识别与验证
1.什么是人脸识别
人脸验证就是输入一个图片和姓名/ID,然后去数据库找这人的图像与当前图像进行匹配看看是不是同一个人。
而人脸识别是有一个K个人图像的数据库,而输入仅仅只有一个图像,你就得去数据库中找哪个人最接近输入的这个图像,识别出来(或者没有这个人)。
2.one-shot学习(一次学习)
因为人脸识别只能通过一个样本来学习,因此我们需要解决的就是一次学习问题。而这就需要一个similarity函数,它被用来计算2个图片之间的距离,如果距离小于我们设定的一个值,我们就认为它们是同一个人,反之则不是。那么该如何计算距离呢?我们看下图:
siamese网络将输入的图片经过一系列卷积、池化操作后,变为一个128维的向量,然后通过L2范数的平方来计算2者之间的距离。
正如上图所示,如果是相同的人,那么距离就会很小;不同的人,则距离会很大。
假设f(A)代表输入图像,f(P)代表相同的人的图像,f(N)代表不同的人的图像。
那么我们以||f(A)-f(P)||²-||f(A)-f(N)||²+α <=0来判断是否是同一个人,那么为什么要加α呢?是为了避免全都为0的情况,0-0自然小于等于0。
3.Triplet损失
根据上面所述,我们就可以得到一个损失函数如上图所示,J就是我们所定义的三元组损失函数。
还有一点要注意的是,如果APN是随机选择的,那么d(A,P)+α <= d(A,N)是很容易满足的,我们需要选择一些难度大的,如很接近但不是同一个人的图片集来训练。α就起到了拉大两对之间的距离的作用。
在人脸验证上,我们还可以用二分类,逻辑回归单元进行预测。
如上图所示,将2个图片转换为128维的向量,应用上图的公式去进行预测。在实际中,我们可以将数据库里的图片去进行预处理,这样可以加快识别的速度。
训练集x是一对图片,而y则是0.1集合。如下图所示:
二、神经风格转换
1.什么是神经风格转换
2.深度网络在做什么
3.代价函数
4.内容代价函数
5.风格代价函数
三、一维到三维推广
类似于2维过滤的方法,我们也可以将其应用到1维和3维上。14*1的序列与一个5*1的过滤器(16个),最终输出10*16,再与1个5*16(32个)的过滤器,最终输出6*32。
三维的方法与二维及上面的一维类似,这里不过多阐述。