一种照片图像快速智能风格化方法
技术领域
本发明涉及神经网络、深度学习、图像识别领域,特别是涉及到基于神经网络的模式学习和预测。
背景技术
近年来深度学习在图像处理、图像识别领域取得了巨大成功,在人脸识别、图像分类等应用中达到了80%以上的准确率,远远超过传统的机器学习算法(SVM模型、决策树模型)。
然而深度学习的能力不仅仅限于这些目标明确的单一任务,它更重要的部分在于能够模拟人的大脑,产生全新的内容。例如,德国的研究者利用深度学习算法自动谱曲和写词,美国的研究者使用深度学习模型来生成文章。在图像领域,如何使用深度学习来进行绘画创作是另一个火热的研究领域。然而图像作为高维度数据,比文字和声音蕴含更多的信息。如何让机器创造出来既有现实意义,又具有一定的美感的图像是非常具有挑战的课题。
德国的研究者首先提出了使用风格化的方式来实现图像创作,他们将著名画家的风格与用户的照片融合,产生新的图片,效果非常吸引人。然而他们方法的主要问题是速度极慢,一个中等大小的图片(1024*768)需要几十分钟的学习和训练;而一个相对较大的图片(2000*2000)则需要几个小时。因此,该方法无法满足互联网用户在线生成照片的需要。本发明则采用新的神经网络模型,提供接近实时的图像风格化算法。
发明内容
本发明的目的在于针对照片风格化性能方面的不足,提供了一种照片图像快速智能风格化方法。
本发明解决其技术问题所采用的技术方案包括如下步骤:
步骤1、基于多层卷积网络的图像分类网络;
该图像分类网络采用标准的16层VGG网络,每一层包含多个卷积层和ReLU层,负责对图像的内容和材质进行分段抽象,通过反复将卷积层、采样层进行叠加,从而抽取出高层级的图像特征;提取出高层次的语义特征,最终能够准确的识别出图像中包含的物体信息;
步骤2、基于时间递归网络的内容学习模型;
该模型能够抽象出图像中的多粒度信息,该多粒度信息用于图像风格和内容的学习;该模型将图像中每一个点看作是其他若干点时间延续结果,从而构建出一个基于时间递归网络的模型,该模型利用概率分布能够预测出图像在下一行的可能的像素值分布,从而对整个图像的风格和内容形成一个准确的描述;
步骤3、建立风格化训练模块;
该模块负责协调步骤1和步骤2的神经网络模型,从用户选择的图像中抽取出风格信息,用于风格化的图像生成;该模块接受一个风格化图像和一个种子训练图像集合;对于任意一张种子训练图,该模块首先生成一张和该图大小一致的随机图,随机图通过步骤2的时间递归网络抽取出的特征向量再输入到步骤1的分类模型中,在分类模型内计算和风格化图以及种子图的误差,并用梯度下降的方法反馈训练步骤1和步骤2的神经网络;训练过程持续5万次左右,当训练结束,步骤2的神经网络已经包含了该风格化图片的特征信息;
步骤4、风格化图像生成模块;
该模块使用步骤3训练好的时间递归网络进行图像的风格化;对于任意一张输入图像,该模块首先使用一个全连接卷积层将输入图像转化为和训练图一样的高度和宽度,然后在通过步骤2的时间递归网络将输入图像的内容和网络中的风格特性进行融合,融合的结果最终输出为一个新的和输入大小一样的图像。
步骤1具体实现过程如下:
1-1.首先采用64个2*2的内核对原图像进行卷积,卷积的结果为和原图像大小一致的64个特征图像,特征图像通过ReLU层进行数值处理;如此过程连续2次,在通过2*2的最大采样层对图像进行压缩,共得到64个特征图像,特征图像变成原来长宽的一半;
1-2.继续采用64个2*2的内核对步骤1-1获得的特征图像进行卷积,特征图像通过ReLU层进行数值处理;如此过程连续2次,在通过2*2的最大采样层对图像进行压缩,共得到128个特征图像,特征图变成原来长宽的四分之一;
1-3.继续采用64个2*2的内核对步骤1-2获得的特征图像进行卷积,特征图像通过ReLU层进行数值处理;如此过程连续2次,在通过2*2的最大采样层对图像进行压缩,共得到256个特征图像,特征图变成原来长宽的八分之一;
1-4.继续采用64个2*2的内核对步骤1-3获得的特征图像进行卷积,特征图像通过ReLU层进行数值处理;如此过程连续2次,在通过2*2的最大采样层对图像进行压缩,共得到512个特征图像,特征图变成原来长宽的十六分之一;
1-5.采用2*2的最大采样层对图像进行压缩,仍然是512个特征图像,但特征图像变为原图的长宽的三十二分之一;
1-6.将1-5所产生的所有512个特征图像通过一个包含4096个神经元的全连接层,全连接层在连接指向1000个最终的图像分类标签,每一个指向边的权重等于某个图像属于该标签类的概率,最终模型将选择拥有最大概率的标签作为图像的最终分类结果。
步骤2所述的内容学习模型的建立步骤如下:
2-1.为一个像素建立一个神经元,采用窗口为k的时间递归网络,则:代表第i行第j列像素的神经元,其像素值是由来自于第i-1行的第(j-k)/2列到第(j+k)/2列的像素神经元的值进行加权平均,并经过神经网络激活函数而计算得到的;如此能够扫描图像内容,建立一个h层的时间递归网络,每一层拥有w个神经元;其中h为图像高度,w为图像宽度;
2-2.不同于卷积网络,时间递归网络要一层层计算,速度较慢,因此,对2-1建立的h层的时间递归网络进行调整,每一行像素相比上一行向右平移k-1个像素;如此,在计算第j列像素点新值的时候,只需要知道上一行第j列以及第j列之前的像素值即可;因此,能够将2-1建立的h层的时间递归网络转化为一个卷积网络,增加计算速度。
步骤3的具体实现过程如下:
3-1.生成一张全白的和风格化图大小一致的图做为训练图;
3-2.训练图经过步骤2的时间循环网络,产生一张新的生成图,该图即为最终的图Ⅰ和图Ⅱ的融合训练结果;
3-3.生成图和图Ⅰ、图Ⅱ分别经过步骤1的卷积网络,生成的向量进行像素之间的色彩误差计算;生成图和图Ⅰ的误差为风格误差,生成图和图Ⅱ的误差为内容误差,整个的训练结果的目标是最小化风格误差和内容误差之和,这两者的重要程度能够通过权重进行调节;
具体误差公式如下:
其中W、H、C分别表示图像的宽、高以及特征图片的数量,xij表示第i行第j列的像素值,α表示内容和风格的权重;
3-4.将步骤3-3的总误差,即风格误差和内容误差的加权总和通过SGD传递到时间递归网络,误差值函数的导数乘以预先设置的学习率作为修正值,神经元的原值减去修正值作为其新值,来接近达到降低误差的目标;
3-5.采用多个图像作为图Ⅰ内容图输入到网络中,对同一个风格化图进行反复训练,从而达到对该风格的描述网络。
本发明有益效果如下:
本发明提升了图像风格化的速度,支持对超大图片(分辨率1920*1080以上)的实时风格化过程。本发明针对特定的风格化底板图案进行后台学习,将风格化滤镜存储在时间循环网络(RNN)中,然后利用该网络快速的对新图片进行风格化变化。产生的图片风格化效果远高于photoshop、美图秀秀等传统滤镜的风格化,接近神经网络滤镜DeepArt,但速度比DeepArt快100倍以上。
附图说明
图1是本发明实施步骤流程图。
图2是本发明的卷积网络的图像分类模型图。
图3是本发明的基于时间递归网络的模型图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
如图1-3所示,一种照片图像快速智能风格化方法,具体包括如下步骤:
步骤1、基于多层卷积网络的图像分类网络;
1-1.首先采用64个2*2的内核(带边缘补全padding)对原图像进行卷积,卷积的结果为和原图像大小一致的64个特征图像,特征图像通过ReLU层进行数值处理;如此过程连续2次,在通过2*2的最大采样层对图像进行压缩,共得到64个特征图像,特征图像变成原来长宽的一半。
1-2.继续采用64个2*2的内核(带边缘补全padding)对步骤1-1获得的特征图像进行卷积,特征图像通过ReLU层进行数值处理;如此过程连续2次,在通过2*2的最大采样层对图像进行压缩,共得到128个特征图像,特征图变成原来长宽的四分之一。
1-3.继续采用64个2*2的内核(带边缘补全padding)对步骤1-2获得的特征图像进行卷积,特征图像通过ReLU层进行数值处理;如此过程连续2次,在通过2*2的最大采样层对图像进行压缩,共得到256个特征图像,特征图变成原来长宽的八分之一。
1-4.继续采用64个2*2的内核(带边缘补全padding)对步骤1-3获得的特征图像进行卷积,特征图像通过ReLU层进行数值处理;如此过程连续2次,在通过2*2的最大采样层对图像进行压缩,共得到512个特征图像,特征图变成原来长宽的十六分之一。
1-5.采用2*2的最大采样层对图像进行压缩,仍然是512个特征图像,但特征图像变为原图的长宽的三十二分之一。
1-6.将1-5所产生的所有512个特征图像通过一个包含4096个神经元的全连接层,全连接层在连接指向1000个最终的图像分类标签,每一个指向边的权重等于某个图像属于该标签类的概率,最终模型将选择拥有最大概率的标签作为图像的最终分类结果。
该图像分类网络采用标准的16层VGG网络,每一层包含多个卷积层和ReLU层,负责对图像的内容和材质进行分段抽象,通过反复将卷积层、采样层进行叠加,从而抽取出高层级的图像特征;提取出高层次的语义特征,最终能够准确的识别出图像中包含的物体信息。
步骤2、基于时间递归网络的内容学习模型,该模型能够抽象出图像中的多粒度信息,该多粒度信息用于图像风格和内容的学习。该模型将图像中每一个点看作是其他若干点时间延续结果,从而构建出一个基于时间递归网络的模型,该模型利用概率分布能够预测出图像在下一行的可能的像素值分布,从而对整个图像的风格和内容形成一个准确的描述。该内容学习模型的建立步骤如下:
2-1.为一个像素建立一个神经元,采用窗口为k的时间递归网络,则:代表第i行第j列像素的神经元,其像素值是由来自于第i-1行的第(j-k)/2列到第(j+k)/2列的像素神经元的值进行加权平均,并经过神经网络激活函数而计算得到的。如此能够扫描图像内容,建立一个h层的时间递归网络,每一层拥有w个神经元;其中h为图像高度,w为图像宽度。
2-2.不同于卷积网络,时间递归网络要一层层计算,速度较慢,因此,对2-1建立的h层的时间递归网络进行调整,每一行像素相比上一行向右平移k-1个像素。如此,在计算第j列像素点新值的时候,只需要知道上一行第j列(包括第j列)之前的像素值即可。因此,能够将2-1建立的h层的时间递归网络转化为一个卷积网络,增加计算速度。
步骤3、风格化训练模块;
该模块负责协调步骤1和步骤2的神经网络模型,从用户选择的图像中抽取出风格信息,用于风格化的图像生成。该模块接受一个风格化图像和一个种子训练图像集合。对于任意一张种子训练图,该模块首先生成一张和该图大小一致的随机图,随机图通过步骤2的时间递归网络抽取出的特征向量再输入到步骤1的分类模型中,在分类模型内计算和风格化图以及种子图的误差,并用梯度下降的方法反馈训练步骤1和步骤2的神经网络。训练过程持续5万次左右,当训练结束,步骤2的神经网络已经包含了该风格化图片的特征信息。
实施例:
3-1.生成一张全白的和风格化图大小一致的图做为训练图。
3-2.训练图经过步骤2的时间循环网络,产生一张新的生成图,该图即为最终的图1和图2的融合训练结果。
3-3.生成图和图1、图2分别经过步骤1的卷积网络,生成的向量进行像素之间的色彩误差计算。生成图和图1的误差为风格误差,生成图和图2的误差为内容误差,整个的训练结果的目标是最小化风格误差和内容误差之和,这两者的重要程度能够通过权重进行调节。
具体误差公式如下(其中W、H、C分别表示图像的宽、高以及特征图片的数量,xij表示第i行第j列的像素值,α表示内容和风格的权重):
3-4.将步骤3-3的总误差,即风格误差和内容误差的加权总和通过SGD(梯度下降法)传递到时间递归网络,误差值函数的导数乘以预先设置的学习率(一般为0.01)作为修正值,神经元的原值减去修正值作为其新值,来接近达到降低误差的目标。
3-5.采用多个图像作为图1内容图输入到网络中,对同一个风格化图进行反复训练,从而达到对该风格的描述网络。
步骤4、风格化图像生成模块;
该模块使用步骤3训练好的时间递归网络进行图像的风格化。对于任意一张输入图像,该模块首先使用一个全连接卷积层将输入图像转化为和训练图一样的高度和宽度,然后在通过步骤2的时间递归网络将输入图像的内容和网络中的风格特性进行融合,融合的结果最终输出为一个新的和输入大小一样的图像。