- AI源码解读:数字图像处理案例(Python版)
- 李永华编著
- 440字
- 2022-07-27 17:26:15
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=1734456061-wkSRijqZmQzzN9pV46IRCPxDZtT7B2Li-0-b57a0bb692f28269f5bd0fbca38bce72)
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=1734456061-177CnCjNMQVp3VlWUCl9Qeriky05emxE-0-fff1108d1945be4bc3130b003221d23f)
3.定义转换网络
定义转换网络中的典型卷积、残差、逆卷积结构,对定义好的函数输入图片(Content)进行处理后得到relu3_3层的输出,相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P68_24452.jpg?sign=1734456061-uyCKnbE3IO6lO1crTHXonJz4eZlZnhMi-0-702ccd351ae2a7856ba9a31a73950296)
4.优化损失函数及模型
使用原始图片通过生成网络的输出,以及原始图片通过VGG-19网络得到的输出计算内容损失函数,公式为:,相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P69_24458.jpg?sign=1734456061-4QUl4u9NPrd4XFDzRJpFcSH7S5cHMfdY-0-ce2615d2faa2b33f3545a9c29e87f0cf)
根据迁移图片和风格图片在指定风格层的输出,计算风格损失函数,公式为:Lstyle(p,x,l)=和
,相关代码如下:
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P70_24464.jpg?sign=1734456061-SXfE2pvwdyiD48xglVbSRFApvbdIPvdU-0-5765040bb8b182bcaf66af3e5489e37f)