GAN网络生成:感知损失(Perceptual Losses)

2024-06-11 04:08

本文主要是介绍GAN网络生成:感知损失(Perceptual Losses),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Reference: http://blog.csdn.net/stdcoutzyx/article/details/54025243

本文是参考文献[1]的笔记。该论文是Li Fei-Fei名下的论文。

引入

最近新出的图像风格转换算法,虽然效果好,但对于每一张要生成的图片,都需要初始化,然后保持CNN的参数不变,反向传播更新图像,得到最后的结果。性能问题堪忧。

但是图像风格转换算法的成功,在生成图像领域,产生了一个非常重要的idea,那就是可以将卷积神经网络提取出的feature,作为目标函数的一部分,通过比较待生成的图片经过CNN的feature值与目标图片经过CNN的feature值,使得待生成的图片与目标图片在语义上更加相似(相对于Pixel级别的损失函数)。

图像风格转换算法将图片生成以生成的方式进行处理,如风格转换,是从一张噪音图(相当于白板)中得到一张结果图,具有图片A的内容和图片B的风格。而Perceptual Losses则是将生成问题看做是变换问题。即生成图像是从内容图中变化得到。

图像风格转换是针对待生成的图像进行求导,CNN的反向传播由于参数众多,是非常慢的,同样利用卷积神经网络的feature产生的loss,训练了一个神经网络,将内容图片输入进去,可以直接输出转换风格后的图像。而将低分辨率的图像输入进去,可以得到高分辨率的图像。因为只进行一次网络的前向计算,速度非常快,可以达到实时的效果。

架构

下面这个网络图是论文的精华所在。图中将网络分为Transform网络和Loss网络两种,在使用中,Transform网络用来对图像进行转换,它的参数是变化的,而Loss网络,则保持参数不变,Transform的结果图,风格图和内容图都通过Loss Net得到每一层的feature激活值,并以之进行Loss计算。

在风格转换上,输入x=yc是内容图片。而在图片高清化上,x是低分辨率图片,内容图片是高分辨率图片,风格图片未曾使用。

网络细节

网络细节的设计大体遵循DCGAN中的设计思路:

  • 不使用pooling层,而是使用strided和fractionally strided卷积来做downsampling和upsampling,
  • 使用了五个residual blocks
  • 除了输出层之外的所有的非residual blocks后面都跟着spatial batch normalization和ReLU的非线性激活函数。
  • 输出层使用一个scaled tanh来保证输出值在[0, 255]内。
  • 第一个和最后一个卷积层使用9×9的核,其他卷积层使用3×3的核。

确切的网络参数值请参考文献2。

输入输出

  • 对于风格转换来说,输入和输出的大小都是256×256×3。
  • 对于图片清晰化来说,输出是288×288×3,而输入是288/f×288/f×3,f是压缩比,因为Transform Net是全卷积的,所以可以支持任意的尺寸。

Downsampling and Upsampling

  • 对于图片清晰化来说,当upsampling factor是f的时候,使用后面接着log2f个stride为1/2卷积层的residual blocks. 
    • fractionally-strided卷积允许网络自己学习一个upsampling函数出来。
  • 对于风格转换来说,使用2个stride=2的卷积层来做downsample,每个卷积层后面跟着若干个residual blocks。然后跟着两个stride=1/2的卷积层来做upsample。虽然输入和输出相同,但是这样有两个优点: 
    • 提高性能,减少了参数
    • 大视野,风格转换会导致物体变形,因而,结果图像中的每个像素对应着的初始图像中的视野越大越好。

Residual Connections

残差连接可以帮助网络学习到identify function,而生成模型也要求结果图像和生成图像共享某些结构,因而,残差连接对生成模型正好对应得上。

损失函数

同图像风格转换算法类似,论文定义了两种损失函数。其中,损失网络都使用在ImageNet上训练好的VGG net,使用φ来表示损失网络。

Feature Reconstruction Loss

  • j表示网络的第j层。
  • CjHjWj表示第j层的feature_map的size

使用不同层的重建效果如下:

Style Reconstruction Loss

对于风格重建的损失函数,首先要先计算Gram矩阵,

产生的feature_map的大小为CjHjWj,可以看成是Cj个特征,这些特征两两之间的内积的计算方式如上。

两张图片,在loss网络的每一层都求出Gram矩阵,然后对应层之间计算欧式距离,最后将不同层的欧氏距离相加,得到最后的风格损失。

不同层的风格重建效果如下: 

Simple Loss Function

  • Pixel Loss,像素级的欧氏距离。
  • Total Variation Regularization,是之前feature inversion和super resolution工作中使用的损失,具体还需参考论文的参考论文[6,20,48,49]

Loss对比

在图像风格转换任务上,针对不同分辨率的图像,Loss值在Perceptual Loss(ours)和图像风格转换([10])以及内容图片上的。

可以看到,使用Perceptual Loss相当于原始算法迭代50到100次。

而就时间来看:

可以提升几百倍,在GPU上0.0015s可以达到相当的效果,在CPU上更具实用性。

效果图

风格转换



虽然风格转换是在256的图片上训练的,但也可以应用到其他size上,比如512的

图片超清

4倍清晰度提升:


8倍清晰度提升:

总结

贡献当然就是图像风格转换的实用化:

  • 速度三个量级的提升。
  • fully convolutional network可以应用于各种各样的尺寸。

参考文献

  1. Perceptual Losses for Real-Time Style Transfer and Super-Resolution.
  2. Perceptual Losses for Real-Time Style Transfer and Super-Resolution: Supplementary Material

这篇关于GAN网络生成:感知损失(Perceptual Losses)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1050150

相关文章

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I