![AI源码解读:数字图像处理案例(Python版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/118/44510118/b_44510118.jpg)
上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中的权重、偏置和名字,相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P66_24446.jpg?sign=1738860009-TNeT7aLV4ts5UMBCEw7VwgmOW7WV681T-0-4285d76b70461fbb58a499ac5e542c49)
2.定义风格图Gram矩阵
选择一张风格图,减去通道颜色均值后,得到图片在VGG-19各层输出值,计算4个风格层(relu1_2、relu2_2、relu3_3、relu4_3)对应的Gram矩阵,层数增高时,内容重构图可变化性增加,具有更大的风格变化能力。而风格使用的层数越多,迁移的稳定性越强。
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P67_24449.jpg?sign=1738860009-yjUGFPLpdzELpi2HHYQZTuleIZVBkLDy-0-23a2ffbee5cd03691c200f5a321e46ea)
3.定义转换网络
定义转换网络中的典型卷积、残差、逆卷积结构,对定义好的函数输入图片(Content)进行处理后得到relu3_3层的输出,相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P68_24452.jpg?sign=1738860009-0TIxub6Q2GhXnA8K7uiAEhwGQnvDURIk-0-3aee75a36b8c2747381642e2a6e63566)
4.优化损失函数及模型
使用原始图片通过生成网络的输出,以及原始图片通过VGG-19网络得到的输出计算内容损失函数,公式为:,相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P69_24458.jpg?sign=1738860009-tKaPPd9dVepzJgbOj4TYhwOcBUet4ntY-0-89467d3e9e6bb5bcaf7b6af2ba6146b5)
根据迁移图片和风格图片在指定风格层的输出,计算风格损失函数,公式为:Lstyle(p,x,l)=和
,相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P70_24464.jpg?sign=1738860009-cifDdb8GjNWt4aNSwAGncCqOG30hzw8L-0-abb337fb1568c74c4e4b7149ec2fd265)