吴恩达深度学习笔记(十) —— 神经风格迁移
主要内容:
一.神经风格迁移简介
二.计算content cost
三.计算style cost
一.神经风格迁移简介
1.神经风格迁移(Neural Style Transfer),简称为NST,就是以一张图为内容基础,以另一张图为风格基础,生成一张新的图:
2.NST使用一张已经训练好的神经网络VGG network作为算法的基础。可知神经网络的浅层学习一些比较低级的特征诸如边界和纹理的等,深层学些一些复杂抽象的特征。为了学习得比较精确但又不过于苛刻,我们一般选择VGG network的中间的隐藏层作为最后的输出(以此计算代价函数,然后进行反向传播)。
3.NST的大概步骤是:
1)加载训练好的VGG神经网络
2)随机初始化生成图像G
3)输入内容图像C,进行前向传播,计算content cost;输入风格图像G,进行前向传播,计算style cost。最后统计总的cost
4)根据计算出的cost,进行反向传播,更新生成图像G的每个像素点
5)重复3)4)步一定的次数
6)输出最终的申城图像G
二.计算content cost
1.content cost,就是计算内容图像与生成图像的“内容差异”,所以直接是对应位置的差值。
2.在计算时,最好将每个信道展开成一个向量。此步骤不是必须的,但可以方便操作:
3.content cost的计算公式如下:
其中a为选中的VGG网络的隐藏层的输出值。
三.计算style cost
1.与content cost直接用对应位置与衡量不同,style cost似乎没有什么直接的衡量的依据。确实是没有,但是可以通过信道间接地去衡量。
2.据称(突然想到这个词,很好用),在同一个卷积层中,不同的信道学习的东西是不同的,比如:
第一个信道主要学习纹理特征、第二个信道主要学习橙色特征。如果在出现纹理的地方,其颜色总是为橙色,则表明信道一盒信道二有很强的的关联性。而提到关联性,就很自然能想到协方差矩阵。因此,风格可以用信道的协方差矩阵去衡量。同时说明,风格,实际上就是不同特征之间的关联度。
3.为了计算信道之间的协方差矩阵,最好将一个信道展开成一个向量,然后根据 A*AT的公式计算协方差矩阵:
最后,style的计算公式如下: