【论文阅读】The Contextual Loss for Image Transformationwith Non-Aligned Data(ECCV2018 oral)

目录:
- 相关链接
- 方法亮点
- 相关工作
- 方法细节
- 实验结果
- 总结与收获
相关链接
论文:https://arxiv.org/abs/1803.02077
代码:https://github.com/roimehrez/contextualLoss
方法亮点
- 文章主要提出了一个新的损失函数Contextual Loss,这个loss一开始是针对Non-Align Data提出的损失函数。主要通过计算图像特征的相似度来衡量两张图片的相似性。
最令人惊艳的是,使用该损失函数,一个简单的CNN网络就能够达到和CycleGAN一样的效果。
作者在紧接着的论文中也证明了该损失函数在一对一图像超分中也能取得不错的结果。
相关工作
目前针对loss的研究有很多,在今年ECCV上收录的文章中就可以看出来。
目前已有的loss主要有一下几种:
- 针对图像的pixel2pixel的loss:L1 , L2,SSIM
- 针对图像特征的loss:perceptual loss,Gram loss
- 针对生成图像和目标图像的“逼真”程度的loss:GAN loss
L1 , L2,SSIM这类损失函数对input 和GT 的要求比较高,是逐像素进行匹配的,对以PSNR、SSIM为客观评价指标的问题贡献比较大,但是从目前的研究来看,单单用这类损失函数,已经不能够满足我们的需求了。比如SRGAN这篇论文中提到MSE代价函数使重建结果有较高的信噪比PSNR,但是缺少了高频信息,出现过度平滑的纹理。perceptual loss的提出主要是为了更好的保留图像的高频信息https://www.jianshu.com/p/58fd418fcabf,与perceptual loss相似的,Gram loss也是计算在特征层上的损失,这两个损失都是在整个VGG网络中得到的特征层进行的计算,约束的是全局高频特征的相似性;然而图像的相似性一般是局部的,这些约束也不是十分的合理,本文的方法提出的损失函数约束的是局部的特征。在风格转换、图像翻译等任务中,GAN loss是一个常见的损失函数,通过简单的判断生成的图像是否“逼真”到以假乱真的程度,但是GAN的模式崩溃问题到目前都没有一个较好的解决办法。
方法细节


两张图片要怎么判断是否相似呢?作者认为只要两张图片的特征中,相同区域的大部分特征能找到彼此相似的点就可以认为两张图片是相似的。如图3(a),两张图像同一区域的特征块中大部分是相似的(与点在特征图块的位置无关,只要能相似即可),就可以认为两张图像相似。这跟perceptual loss最不同的就是perceptual loss是跟特征的位置相关的(位置按点一一对应起来)。
在这篇文章中,作者利用了余弦相似的方法,通过计算特征之间的余弦距离衡量两个特征的相似性。
具体计算方法如下:

其中的xi ,yj 为1*1*Channel大小的特征向量,N为特征patch大小
实验结果
作者通过一系列的实验来验证他们提出的损失函数的有效性;

图6的实验:一张噪声图像(input)和多张清晰图像(GT)(数据采集方法为,一张高清图像中裁剪出N+1张图片,每张图片的采集的位置随机小偏移,对其中一张图片加入噪声作为input,其他N张图片作为GT),从图6可以看出,由于随机偏移的存在,如果单纯的使用L1 损失(位置相关)的话,会引入模糊而使用本文提出的损失函数并不会引入模糊。并且我们训练的时候并不需要指定一张GT和input进行训练,每一轮的GT都可以是不一样的。(即Non-paired)
本文还通过修改一些经典方法的损失函数与原有的方法进行对比,修改方式如下表所示:

style transfer:

从上面的结果对比中可以看出来,本文提出的方法学习的是局部的特征,而不是全局的特征。CNNMRF方法学习到的是图片的全局特征,将Target的背景信息也学习到了。

在上面这个实验中,本文的方法仅使用了一个简单的CNN网络和本文提出的损失函数就能够达到和CycleGAN(两个生成器和两个判别器)差不多的效果。
另外两个实验的结果是以动画的形式展现的,这里没法展现就不放出来了,有兴趣的可以下载原论文看。
紧接着作者将提出的损失函数应用到超分中,也取得不错的效果,这便是另外一篇文章的工作了。Maintaining Natural Image Statistics with the Contextual Loss
文章对比实验的设置如下:(其中我们的方法的网络结构是基于SRGAN,只修改了损失函数)


从上图中可以很直观的看出,引用了本文提出的损失函数,生成的图像更接近GT,而不会像baseline方法,在耳朵地方多出一些皱纹。并且加入本文的损失函数,不仅在客观指标上,在感知指标上均得到了很大的提升。
总结与收获
本文主要是提出了一个基于余弦相似度的损失函数,该函数应用在VGG提取的特征层上,与以往的损失函数最大不同的是,该损失函数应用在特征层相应位置上的patch块,而不是应用在整个特征。高层特征层一般包含的是图像的语义特征,也就是说文章的损失函数是基于语义的,这也就是本文的loss为什么Contextual Loss。应用该损失函数做图像风格转换任务,能够实现眼睛-》眼睛、嘴巴-》嘴巴等对应区域的风格转换。该损失函数目前看来可以应用的领域有很多,不仅仅局限于风格转换的任务,缺点大概就是计算量比16年提出的perceptual loss要来的高,不过这主要取决于特征的patch块(或对特征进行采样)的大小。从这个角度来看,perceptual loss算是 Contextual Loss 的一个特例。
【论文阅读】The Contextual Loss for Image Transformationwith Non-Aligned Data(ECCV2018 oral)的更多相关文章
- 【论文阅读】Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks 参考 1. 人脸关键点: 2. ...
- 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)
今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...
- 论文阅读 | FCOS: Fully Convolutional One-Stage Object Detection
论文阅读——FCOS: Fully Convolutional One-Stage Object Detection 概述 目前anchor-free大热,从DenseBoxes到CornerNet. ...
- 论文阅读 | FoveaBox: Beyond Anchor-based Object Detector
论文阅读——FoveaBox: Beyond Anchor-based Object Detector 概述 这是一篇ArXiv 2019的文章,作者提出了一种新的anchor-free的目标检测框架 ...
- 论文阅读 | Region Proposal by Guided Anchoring
论文阅读 | Region Proposal by Guided Anchoring 相关链接 论文地址:https://arxiv.org/abs/1901.03278 概述 众所周知,anchor ...
- 论文阅读:Face Recognition: From Traditional to Deep Learning Methods 《人脸识别综述:从传统方法到深度学习》
论文阅读:Face Recognition: From Traditional to Deep Learning Methods <人脸识别综述:从传统方法到深度学习> 一.引 ...
- YOLO 论文阅读
YOLO(You Only Look Once)是一个流行的目标检测方法,和Faster RCNN等state of the art方法比起来,主打检测速度快.截止到目前为止(2017年2月初),YO ...
- [论文阅读]阿里DIEN深度兴趣进化网络之总体解读
[论文阅读]阿里DIEN深度兴趣进化网络之总体解读 目录 [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 0x00 摘要 0x01论文概要 1.1 文章信息 1.2 基本观点 1.2.1 DIN的 ...
- BERT 论文阅读笔记
BERT 论文阅读 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 由 @快刀切草莓君 ...
随机推荐
- 两行代码玩转SUMO!
两行代码玩转SUMO! 这篇博客很简单,但是内容很丰富 如何生成如下所示的研究型路网结构? 只需要打开ubuntu终端输入如下代码即可,grid.number代表路口数量,grid.length代表路 ...
- 23 个重难点突破,带你吃透 Service 知识点「长达 1W+ 字」
前言 学 Android 有一段时间了,想必不少人也和我一样,平时经常东学西凑,感觉知识点有些凌乱难成体系.所以趁着这几天忙里偷闲,把学的东西归纳下,捋捋思路. 这篇文章主要针对 Service 相关 ...
- nginx原理和优化
Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是 ...
- 数据文件包解析工具类 RandomAccessFile
public class ReadTextFile { public static void main(String[] args) { pic2txt(); parseFrmFile(); //ur ...
- java中的时区转换
目录 java中的时区转换 一.时区的说明 二.时间的表示 三.时间戳 四.Date类和时间戳 五.java中的时区转换 java中的时区转换 一.时区的说明 地球表面按经线从东到西,被划成一个个区域 ...
- Logstash 安装及简单实用(同步MySql数据到Elasticsearch)(Windows)
Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件 Windows环境: 1.下载logstas ...
- asp.net core Api集成Swagger
当我们通过vs创建了一个api项目后,便可以开始集成swagger了 一.Swagger集成 从“程序包管理器控制台”窗口进行安装,执行Install-Package Swashbuckle.AspN ...
- 在线热备份数据库之innobackupex 增量备份InnoDB
在线热备份数据库之innobackupex 增量备份InnoDB 什么是增量备份?其原理是什么? 增量备份是基于上一次备份后对新增加的内容进行备份,优点相较于完整备份而言备份内容少时间短,能够节省磁盘 ...
- 路由传参 query 和 params
vue路由传参分为两种情况: 一.query和params传参的区别: 1.query传参显示参数,params传参不显示参数,params相对于query来说较安全一点. 2.取值方法也有不同:qu ...
- python学习之【第九篇】:Python中的变量作用域
1.前言 Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的. 2.变量作用域 变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称.Python的作 ...