
上QQ阅读APP看书,第一时间看更新
AI源码解读.数字图像处理案例:Python版
2.3.2 创建模型与编译
创建模型需要定义加载VGG-19各层输出函数、风格图Gram矩阵、转换网络、优化损失函数及模型。
1.定义加载VGG-19各层输出函数
加载VGG-19模型,其中imagenet-vgg-verydeep-19.ma'数据文件在http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat中下载。定义一个函数对于给定输入,返回VGG-19各层输出值,可以根据索引得到VGG-19中的权重、偏置和名字,相关代码如下:

2.定义风格图Gram矩阵
选择一张风格图,减去通道颜色均值后,得到图片在VGG-19各层输出值,计算4个风格层(relu1_2、relu2_2、relu3_3、relu4_3)对应的Gram矩阵,层数增高时,内容重构图可变化性增加,具有更大的风格变化能力。而风格使用的层数越多,迁移的稳定性越强。

3.定义转换网络
定义转换网络中的典型卷积、残差、逆卷积结构,对定义好的函数输入图片(Content)进行处理后得到relu3_3层的输出,相关代码如下:

4.优化损失函数及模型
使用原始图片通过生成网络的输出,以及原始图片通过VGG-19网络得到的输出计算内容损失函数,公式为:,相关代码如下:

根据迁移图片和风格图片在指定风格层的输出,计算风格损失函数,公式为:Lstyle(p,x,l)=和
,相关代码如下:
