深度卷积网络图像风格转移(一)需求分析

来源:互联网 发布:股票预测 python 编辑:程序博客网 时间:2024/05/21 18:42

深度卷积网络图像风格转移(一) 需求分析

Taylor Guo , 2017年5月5日

目标

这里写图片描述

图像风格转移
* 一天内的光照变化,不同天气的变化,四季变化
* 与背景相容的物体风格变化
这里指的是图像风格转移,并没有包含优化抠图与图像分割产生的效果

问题

  • 效果图对比
    这里写图片描述

  • 图像局部扭曲
    这里写图片描述

  • 风格溢出
    这里写图片描述

  • 图像与风格无法匹配
    这里写图片描述

    图像与风格无法匹配
    由于极端匹配导致失效:比如花与城市场景,沙发与火焰,等等
    输入图像与参考图像的内容不同:不相关的内容不在预期范围内
    可以使用手动场景分割解决这个问题。

分析

    最优化问题
风格转移问题:是利用CNN生成一张新图像,内容和输入图像一样,风格和想要变成的风格的参考图像一致;也可以将这个问题理解成最优化问题进行数学表示;

最优化两个图像之间的内容差别:
这里写图片描述
图像内容差异最小化为:卷积神经网络中某层滤波后的结果的差的平方的平均值;

最优化两个图像之间的风格差别:
这里写图片描述
图像风格差异最小化为:卷积神经网络中某层滤波后的结果的差的平方的平均值;其中的格莱姆矩阵是表示图像特征的向量之间的內积。向量內积的几何意义可以理解为两个向量在方向上的接近程度。

    色彩空间仿射变换
1 . 输出图像在局部出现扭曲 (为什么会扭曲,真相不明?风格变换导致的扭曲?)
2 . 如果是风格转移导致扭曲,将变换约束在色彩空间上;全局色彩变换使用空间不变转移函数,处理全局颜色平移,调整色调曲线(高低对比度)。可以用色彩概率分布函数,可以用直方图类比,但这些方法不能处理复杂的风格。如果要进行整体强烈变化,比如摩天大楼几个房间灯光点亮,但又不能扭曲局部几何空间。
3 . 局部风格变换:对新建的图像进行局部仿射色彩变换约束,防止扭曲;在构建新图像的过程中,需要从输入图像中获取内容,从参考图像中取得风格,在这个过程中要最小化内容和内容的差别、风格和风格的差别;同时要防止图像局部扭曲,引入局部线性模型的拉普拉斯抠图代价函数作为正则项作为修正。
4 . 局部线性拉普拉斯抠图代价函数,是输入图像与输出图像向量化的矩阵乘积。
这里写图片描述
    拉普拉斯抠图
抠图,是将任何一个需要的物体无缝插入到一个指定的背景中, 当然也可以将电影演员融入到计算机所绘制的虚拟场景中去。实践中,通用的抠图技术是将用户感兴趣的部分(前景部分)从图像其他部分中分离出来的数字图像处理技术,比如著名的蓝屏抠像, 它需要将那些待抠取的物体置于蓝色或者绿色背景前面, 具有很大的局限性。自然图像抠像主要分为三类:基于采样的方法,基于传播的方法,采样与传播相结合的方法。 基于采样的方法需要用户给出较为精确的三分图, 然后对于未知区域的像素的一些抠像参数, 通过利用附近的样本来近似求得. 该方法的优点是计算速度快, 缺点是需要较为精确的三分图, 并且当采样不准确时会得到较差的抠像结果, 因此鲁棒性不强。基于传播的方法 一般只需要用户给出简单的前景和背景指示线条, 然后通过某种方式将信息传播到附近的像素. 该方法的优点是只需要用户提供粗糙的三分图, 并且该方法对大部分的图片均能获得较好的抠像效果, 因此具有较强的鲁棒性. 缺点是部分先验信息浪费, 好的传播方法的设计较为困难, 计算速度慢. 采样与传播相结合的方法是目前研究的热点, 它能够有效结合前两类方法的优点, 但当采用的采样方法以及传播方法不好时, 它也会遗传前两类方法的缺点.

采样与传播相结合的方法通常将抠像问题转换为能量函数最小化问题, 能量函数由两部分构成, 一部分为数据能量项, 另外一个部分为光滑能量项, 求解图像的前景掩码层a的一般数学模型如下:
这里写图片描述
根据Es和E的构造方法的不同, 基于采样与传播相结合的抠像方法有多种。

能量函数也就是损失函数,在抠图里面就是希望前景颜色和背景颜色差异最小化,利用最小化问题求出不透明度值。继而得到前景颜色和背景颜色。图像可以表示成多个图层的合成;每个图层的系数为该层的掩码,这个掩码是稀疏的,图像中的每个像素只受少数几个层的影响,只有少部分像素由多个不同层混合而成。 掩码与拉普拉斯矩阵特征向量之间是线性变换。 这个线性变换矩阵就是不同图像层之间的连通块,由像素子集构成。

拉普拉斯抠图矩阵,可以简单理解为像素之间是否联通的关联矩阵。

拉普拉斯矩阵及局部平滑能量函数
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

图像抠图算法假设每个像素由前景颜色和背景颜色线性合成,参数为不透明值α。对毛发,烟雾,火焰等无法用单像素表达或半透明的物体,图像抠图相比图像分割有明显优势。

参考:
自然图像抠图技术综述
闭合型抠图的研究与应用

    图像语义分割
采用图像语义分割,因为Gram Matrix 对神经元响应值进行了编码,限制了语义内容变化,导致风格“溢出”。
因此,用语义分割算法,对输入图像和风格参考图像生成图像分割遮罩。将遮罩添加到输入图像上作为另外一个通道,增强CNN中的风格算法。

语义分割增强的风格损失函数
这里写图片描述
c是语义分割遮罩中的通道数量;Ml,c是通道图像。

方案

VGG-19 网络架构
参考代码分析

INPUT: [224x224x3]        memory:  224*224*3=150K   weights: 0CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*3)*64 = 1,728CONV3-64: [224x224x64]  memory:  224*224*64=3.2M   weights: (3*3*64)*64 = 36,864POOL2: [112x112x64]     memory:  112*112*64=800K   weights: 0CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*64)*128 = 73,728CONV3-128: [112x112x128]  memory:  112*112*128=1.6M   weights: (3*3*128)*128 = 147,456POOL2: [56x56x128]        memory:  56*56*128=400K   weights: 0CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*128)*256 = 294,912CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824CONV3-256: [56x56x256]  memory:  56*56*256=800K   weights: (3*3*256)*256 = 589,824POOL2: [28x28x256]      memory:  28*28*256=200K   weights: 0CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*256)*512 = 1,179,648CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296CONV3-512: [28x28x512]  memory:  28*28*512=400K   weights: (3*3*512)*512 = 2,359,296POOL2: [14x14x512]      memory:  14*14*512=100K   weights: 0CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296CONV3-512: [14x14x512]  memory:  14*14*512=100K   weights: (3*3*512)*512 = 2,359,296POOL2: [7x7x512]        memory:  7*7*512=25K  weights: 0FC: [1x1x4096]  memory:  4096  weights: 7*7*512*4096 = 102,760,448FC: [1x1x4096]  memory:  4096  weights: 4096*4096 = 16,777,216FC: [1x1x1000]  memory:  1000 weights: 4096*1000 = 4,096,000TOTAL memory: 24M * 4 bytes ~= 93MB / image (only forward! ~*2 for bwd)TOTAL params: 138M parameters
0 0
原创粉丝点击