卷积神经网络(五) ——面部验证与神经风格转换

卷积神经网络(五)

——面部验证与神经风格转换

(原创内容,转载请注明来源,谢谢)

一、概述

本文主要讨论面部验证和神经风格转换两种技术,都是CNN的实际应用。

二、面部验证

1、人脸识别与面部验证

总体来说,面部验证是人脸识别的基础。面部验证相对而言数据量小,准确度要求也没有那么高。

2、一次学习

一次学习(one-shot learning),是用于解决面部验证常用的问题。

存在问题:1)面部验证常用于考勤等系统,通常来说没有太多的训练数据,每个员工可能就录入一张照片。而实际验证的时候,会是各种样子出现在人脸识别系统中。2)另外,公司员工人员变动是常事,如果采用训练的方式,则每次人员变动都需要重新训练整个网络。

由于数据量太少,无法进行神经网络的训练,因此面部验证用了称为一次学习的方式,核心思想即比对两张图片的相似性。

记d(图1, 图2) 为两张图的差异值,当d小于等于某个阈值,则认为这两张图是同一个人。

因此,one-shot的目的,在于训练出一个系统,使得同一个人的不同照片的d很小,不同的人照片的d很大。

另外,对于公司人员变动,只需要修改基准照片,增加或删除基准照片即可。

3、slamese网络

上述的训练方式,可以采用一种称为slamese网络来实现,即对基准照片采用cnn,在网络最后去掉softmax层,认为最后一层全连接层的输出,即为该图片经过这个神经网络的编码,记为函数f(x)。

两个图片之间的差异,可以用||f(x1) - f(x2)||²来表示,记为d(x1, x2)。训练的目标是同一个人的不同照片求出来的这个值很小,不同人的照片这个值很大。

4、triplet损失

三元组损失(triplet loss),是slamese网络训练的要素,拿三张图片,一张是基准图片(anchor),一张是和基准照片相同人的照片(positive),一张是不同人的照片(negative)。

拿anchor分别和positive和negative计算||f(x1) - f(x2)||²,会得到两个数值d(A, P)与d(A, N),最终训练出来的函数旨在:

||f(A) - f(P)||² - ||f(A) - f(N)||² + α ≤ 0 ,其中α是一个较小的正数,目的是拉开d(A, P)与d(A, N)的数值的差距。

代价函数记为max(||f(A) - f(P)||² - ||f(A) - f(N)||² + α, 0)。这里训练集需要注意的是,需要同一个人的不同照片,这样才能计算d(A, P),因此建议1万张图片中,包含1千个人左右,这样每个人10张照片。

注意事项:由于相对于P,N如果从图像库中随意抽出一张图片,很容易使得d(A, P)小于d(A, N)。这样训练出来的神经网络不够好,因此最好选择图片的时候,选择P和N比较相似的图片,如尽量着装、发型等较为相似的人的照片放在一起训练。

训练过程是采用梯度下降+反向传播,来优化代价函数,进而训练处神经网络。

这个网络的输出,类似一个二分类问题,输出函数可以用下面的函数定义,训练参数也主要是训练w和b。这里输出加了sigmoid,保证输出结果在0~1之间,0表示不是同一个人,1表示是同一个人。

需要说明的是,因为基准照片已经存在,因此可以提前训练好并且直接存储对应的f(x)的值,则每次新来一个照片,只需要计算这张新照片的f(x),并且从存储调出对应的y,计算二分类结果进行判断。这样每次判断的速度会加快。

三、神经风格转换

1、概述

神经风格转换,是CNN的另一个实际应用,目的是将两张照片合成一张照片。其中一张照片提供内容(content,简称C),另一张照片提供风格(style,简称S),合成的照片(generated image,简称G)既含有C的内容,又含有S的风格,如下图所示:

深度神经网络处理图片时,在不同的层,处理不同的内容,前面的层主要处理识别线条、纹理等内容,而后面的层则处理识别更复杂的图像。

2、训练过程

1)初始化G的时候,可以随便初始化一个图,这个图可能是一堆混杂颜色的噪音图等。

2)对C和S正向神经网络计算输出,并反向传播,优化代价函数。

3)重复步骤2,直到代价函数比较小,输出结果。

3、总代价函数

由于输入的是两张图片,而且一张取内容,一张取风格,因此代价函数是由这两张照片的代价函数加权求和的结果。

采用加权求和,说明C和S的代价函数计算方式不一样,后面会逐一介绍。

4、内容代价函数

内容代价函数为了让C的内容在G中也有相似的内容。

内容相似很好理解,两张图片内容相近,则一张图片的每个位置的输出,在另一张图片也应有类似的输出。

从数学角度来看,即两张图片对应的矩阵,每个对应位置的元素的值,都应该接近,则表示两张图片的内容相似。

计算方式:使用VGG神经网络来计算,取隐藏层第l层,这里的l最好是中间的层。定义这一层的输出是a[l],则内容代价函数如下图蓝色字体部分内容,乘以1/2目的是归一化。

5、风格代价函数

风格代价函数为了让S的风格在G中也有相似的风格。

风格相近的判断,并不能像内容相近那样,简单的要求对应位置的数值相近。

考虑到神经网络的某一层l,其为nH*nW*nC,即一个图片的多个信道,现在从这里入手来考虑图片的风格相似。

当一幅图片中,出现条纹的地方都是黄色的,如果另一幅图片也具有这样的性质,则可以认为两幅图片的风格比较相似。而处理条纹的信道和处理颜色的信道通常不在一个信道中。

因此,这两个信道对应位置的元素相乘,会得出一个值。

如果另一个图片和这个图片风格相似,这同一层,同两个信道的对应位置元素相乘,得到的值应该和之前那个图片的值相近。

这就是处理风格相似的原理。

从数学角度,定义第l层,第k个信道,第(i, j)位置的输出为a[l]i,j,k。第l层第k和k’信道的对应位置元素乘积定义为符号 G[l]kk’,则G的值如下图所示。这个G又称为gram矩阵。

进而,定义出第l层的代价函数如下图所示,其中前面乘以1/(2nh*nw*nc)²是归一化项。这里两个G都是矩阵,相减需要采用F范数(frobenus norm)计算方式。

因此,总的风格代价函数是所有层代价函数的求和,这里给每一层加上一个不同的权重λl。

至此,就完成神经风格转换的计算。

四、不同维度的卷积计算

二维卷积已经很熟悉了,这里可以推广到一维和三维,比较简单不再赘述,直接附图。

——written by linhxx 2018.03.14

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-03-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法工程师

《机器学习》笔记-决策树(4)

作者:刘才权 编辑:黄俊嘉 写在最前面 如今机器学习和深度学习如此火热,相信很多像我一样的普通程序猿或者还在大学校园中的同学,一定也想参与其中。不管是出于好奇,...

4089
来自专栏算法channel

机器学习逻辑回归:原理解析及代码实现

? 前到现在为止,我们通过大约1周的时间初步对机器学习是怎么一回事算是有一些基本的理解了,从最基本的线性回归入手,讨论了如何在拿到一堆数据时,先进行数据预处理...

2857
来自专栏GAN&CV

详解机器学习中的梯度消失、爆炸原因及其解决方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/d...

1.7K4
来自专栏PPV课数据科学社区

机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是 机器学习/数据挖...

28311
来自专栏用户2442861的专栏

神经网络与深度学习(4):改进神经网络的学习方法

本文总结自《Neural Networks and Deep Learning》第3章的内容。 

1761
来自专栏IT派

机器学习算法梳理

前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘...

3578
来自专栏大数据智能实战

《Attributed Social Network Embedding》论文学习笔记

一、研究背景         本文提出了一种网络表示学习算法:将结构信息和属性信息同时输入深度神经网络,实现非线性特征抽象,相对传统的浅层神经网络语言模型,有较...

4105
来自专栏数据科学与人工智能

【陆勤践行】面试之机器学习算法思想简单梳理

找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且...

2318
来自专栏大数据挖掘DT机器学习

常见面试之机器学习算法思想简单梳理

 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,...

4638
来自专栏AI科技大本营的专栏

详解计算机视觉五大技术:图像分类、对象检测、目标跟踪、语义分割和实例分割

译者 | 王柯凝 【 AI 科技大本营导读】目前,计算机视觉是深度学习领域最热门的研究领域之一。计算机视觉实际上是一个跨领域的交叉学科,包括计算机科学(图形、算...

2.2K7

扫码关注云+社区

领取腾讯云代金券