【08/04更新】在前几天的Commit中,Contextual Loss已经支持多GPU训练

1.Background

对于图像风格迁移,最常用的做法就是通过GAN网络实现,然而,如果你没有很强大的算力,训练GAN网络就是比较困难的一件事儿了。基于传统的前向CNN网络,有相关学者提出了一些感知loss,使用该loss也可以完成图像风格迁移,比较常见的就是Contextual Loss。

首先给出论文作者开源出的源码,基于Tensorflow实现

roimehrez/contextualLoss​www.github.com

代码中包含了风格迁移的几个样例,但我没去测试。我的重点在于将Contextual Loss应用于其他图像增强的领域,来尽可能多地保留图像细节,下面是我用PyTorch对Contextual Loss的实现,现已支持多GPU运行~

z-bingo/Contextual-Loss-PyTorch​github.com

2.Introduction

在计算机视觉中,传统的一些Loss的前提都是已经对齐的数据,如L1 Loss和L2 Loss,对于没有对齐的图像而言是没有意义的。Contextual Loss则是一种可用于非对齐(non-aligned)数据的Loss,其特性在于可以较好地保留ground truth的特征。可以在即便不使用GAN网络的情况下,较好地完成图像风格转换等任务,而对于生成的图像,大多时候也是很难判断真假的。如下图所示,Contextual Loss可以有效地完成多种图像风格转换任务。

Contextual Loss对于多个图像风格转换任务都是有效的

非对齐数据可以通过下图来说明,简言之,对于对齐数据而言,source和target两幅图像在相对应的像素点上,有相同的含义,即,都是背景、都是图片中的一个人....非对齐数据则有更多种可能。

非对齐数据

3.Methods

为了能适应非对齐数据,那么该Loss需要通过特征之间的相似度来衡量。Contextual Loss通过特征之间的余弦相似度确定特征之间的差距。

两个特征之间的相似度图示

如上图所示,不同特征之间的相似度可通过其余弦距离来间接反映,当其余弦距离较小时,可认为两者是相似的,相反,认为其不相似。因此,两个特征是否相似的问题就逐步转化为了最小化特征图之间的余弦相似度问题。


从数学角度分析,两个特征有着自己独特的分布,当两者趋于相似时,两者的分布也趋于一致,此时,两个特征之间的相对熵(KL散度)将会趋近于一个极小值。不妨将两个特征的分布表示为

,其KL散度可表示为:

进一步,

对上式进行进一步化简就可作为最终的Loss使用了。重要就是对

进行求解,文中假设了特征的采样点是足够大的,可以将其认为是一个delta函数(冲激函数),近似为

为了简单,将

表示为
,Loss函数就可以进一步简化为

其实,

就是最重要的需要求解出的相似度。

关于

的计算,文章中给出了详细的计算公式,在此不进行赘述。简单来说,就是计算每个特征(channel维度)与其他特征之间的预先相似度,特征源自VGG中的某一层或几层。实现方式详见源码。

Reference

[1] The Contextual Loss for Image Transformation with Non-Aligned Data

[2] Maintaining Natural Image Statistics with the Contextual Loss

图像风格迁移_【论文解读】图像风格迁移中的Contextual Loss相关推荐

  1. cnn生成图像显著图_CVPR2020论文解读:CNN合成的图片鉴别

    CVPR2020论文解读:CNN合成的图片鉴别 <CNN-generated images are surprisingly easy to spot... for now> 论文链接:h ...

  2. keras神经风格迁移_知识分享 | 神经风格迁移-把每一张图片都变成自己喜欢的样子...

    原标题:知识分享 | 神经风格迁移-把每一张图片都变成自己喜欢的样子 有 爱 就 有 阳 光 灿 烂 虽然大家总是自嘲,但还是要开开心心的哦~ 选择了打工这条路,也就选择了终身学习 ,今天也让小编带领 ...

  3. enet分割_[论文笔记] 图像语义分割——ENet(ICLR 2017)

    [论文笔记] 图像语义分割--ENet(ICLR 2017) bluestyle • 2019 年 05 月 03 日 介绍 Motivation: 移动应用上的实时像素级语义分割是一个重要的问题,然 ...

  4. GAN-风格迁移-CycleGAN论文解读

    文章目录 解决问题 创新点 算法 损失函数 判别器 实验结果 总结 论文: <Unpaired Image-to-Image Translation using Cycle-Consistent ...

  5. 为什么正则化可以起到对模型容量进行控制_论文解读 | 基于正则化图神经网络的脑电情绪识别...

    ©PaperWeekly 原创 · 作者|张玮玮 学校|东北大学硕士生 研究方向|情绪识别 引言论文动机 现有的基于脑电图的情绪识别方法大多不能很好地解决以下三个方面的问题:1. 脑电图信号的拓扑结构 ...

  6. python画二次函数图像的顶点_画二次函数图像的步骤

    画二次函数图像的步骤2019-11-14 09:26:25文/叶丹 画二次函数图像的步骤:五点法是选五个极其重要的点,分别为顶点.与x轴的交点.与y轴的交点及其关于对称轴的对称点,然后根据这五点作图. ...

  7. 数字图像处理课设图像的锐化_数字图像处理图像锐化处理.ppt

    数字图像处理图像锐化处理 4.7.2 灰度级到彩色转换 灰度级到彩色转换(例) 在HSI彩色空间的直方图均衡强度均衡处理没有改变图像的色调和饱和度值,但它的确影响了整体图像的彩色感观. 向量分量可以用 ...

  8. 信号检测与估计理论_论文解读 | 利用脑功能连接实现疲劳驾驶检测

    ©PaperWeekly 原创 · 作者|张玮玮 学校|东北大学硕士生 研究方向|脑电情绪识别 论文标题:Driving Fatigue Recognition with Functional Con ...

  9. 论文解读:基于迁移移学习的深卷积神经网络,用于从蛋白质主要序列预测与白血病相关的磷酸化位点

    A Transfer-Learning-Based Deep Convolutional Neural Network for Predicting Leukemia-Related Phosphor ...

最新文章

  1. 【LDA学习系列】LDA-Python库
  2. Tensorflow:interactivesession和session的区别。
  3. 前端ui 后台管理系统 简洁_Github上前端不可不知的可视化后台管理系统(1)
  4. 安徽大学线性代数习题册(第三章详细解答)
  5. php毕设周记_毕设周记(一)
  6. 用计算机怎么汇款,工行批量转账工具怎么用,要详细的步骤。
  7. 降噪蓝牙耳机哪个品牌好?降噪蓝牙耳机排行推荐
  8. 64位系统最大支持多少内存
  9. 音乐播放器微信小程序开发-歌单界面(简陋版)
  10. 简单易懂 LNMP 架构详解适合入门级别可跟做
  11. .net core 和 WPF 开发升讯威在线客服系统:调用百度翻译接口实现实时自动翻译
  12. 【转】Vczh Library++3.0之可配置语法分析器(前言)
  13. tl wdr5620虚拟服务器,TP-Link TL-WDR5620无线桥接怎么设置?
  14. 三星q90r音效_入手三星Q90R全景声回音壁,开箱
  15. 少儿学习硬笔书法的好处,你了解多少?
  16. python使用turtle画一个三角形、正方形(矩形或四边形)
  17. zephyr笔记 1.2 软件开发环境准备
  18. 高通平台GPS工程测试接收参数解析
  19. 如何对扫描文件进行编辑
  20. 在罗湖火车站乘搭 Z24 直达武汉

热门文章

  1. 西安电子科技大学第16届程序设计竞赛G题
  2. access找不到输入表或者dual_数据表dual表的用途是什么?
  3. 新款苹果手机_苹果宣布新系统 性能依旧“压制quot;安卓
  4. 北京大学计算机研究所所长,北大计算机研究所所长郭宗明:探索新机制,释放科研创新能力...
  5. 编程式事务控制相关对象
  6. RStudio(You‘re using a non-UTF8 locale, therefore only ASCII characters will work)
  7. springboot+swagger传递参数的几种格式
  8. Python——文本中读取到【\ufeff】解决方案
  9. Visual C++——黄维通《 Visual C++面向对象与可视化程序设计》——例题9-3
  10. Spring Security——获取当前已登录用户UserDetails对象