发表于2017年CVPR。

目标:JPEG图像去压缩失真。

主要内容:

  1. 同时使用感知损失、对抗损失和JPEG损失(已知量化间隔,惩罚落在间隔外的值),让恢复图像主客观质量都更好。

  2. 对像素进行平移-均值化处理,进一步抑制块效应。

亮点:解释了one-to-many的合理性:由于图像恢复是欠定问题,因此理应有多张潜在的高质量图像 可供选择。但是最终没有体现one-to-many啊摔!而是加权组合了这三个损失函数,没有多输出。

评分:⭐⭐

故事

  • 有损压缩被广泛使用,但是带来伪影。 => 去除伪影(压缩失真)是很重要的,因为伪影会导致用户观感下降 和 视觉任务精度下降。 => 当前,深度学习已经展示了强大的性能,但普遍导致过度平滑。

  • JPEG压缩失真主要是由于每个块的独立量化导致的边缘不连续(块效应)。量化是一个多对一的映射,然而目前的网络大多是一对一映射。因此,对于一张有损图像,我们应该得到多张潜在的高质量图像,再挑选。因此,一对多映射是更好的学习方式。毕竟,一千个人心中有一千个哈姆雷特。

  • 一对多映射,就涉及到多个衡量标准。 => 首先,per-pixel损失是不够的。很简单的例子:我们将图像平移一下,per-pixel损失就会特别大。但二者的本质是一样的。 => 因此,我们引入感知质量。感知质量可以衡量高层语义上的距离。 => 但是,感知质量也不够:它对粗糙纹理的辨别能力不强【这里的论证太弱】。因此我们引入对抗损失,可以将网络引向更逼真的纹理细节。 => 在像素域上也希望有约束,因此引入JPEG损失,对落在量化间隔外的样本进行惩罚(已知量化水平和量化表)。

  • 最后,作者还引入了平移-均值化(shift-and-average)方法,进一步抑制块效应(grid-like artifacts)。

网络设计

网络前端

  • \(Z\)是AWGN,经过卷积后,会与 有损图像\(Y\)的卷积 相加,目的是让网络更健壮。有点意思。

  • 一句话挺有意思:

    As JPEG compression is not optimal, redundant information neglected by the JPEG encoder may still be found in a compressed image.

  • 其中的降采样是步长为2的\(4 \times 4\)卷积,升采样是步长为2的\(4 \times 4\)反卷积。之所以降采样:(1)降低计算量;(2)增大感受野。

升采样中的平移-均值化

这里作者介绍了为什么要、如何做 平移-均值化。

假设该信号中每一个值都是常数c。做步长为2的\(4 \times 4\)反卷积的步骤:首先插2个零,变成c00c,然后在卷积时就是平移取互相关。

作者发现,若我们平移一位再做反卷积,然后两个结果求平均,那么结果就是我们想要的常数结果。否则,结果非处处为常数。

当然,作者没有详细说明这样做的合理性。这不过是一个成功的例子。

网络度量

感知损失借助[39]的VGG-16,对抗损失借助[34]的DCGAN。

JPEG损失具体:计算有损图像\(Y\)和重建图像\(\hat{X}\)在每个像素点的距离。理想情况下,如果无损图像某个点的值是\(X\),那么其量化后的值\(Y\)不会超过其正负半个量化间隔。即,二者距离不会超过半个量化间隔。同理,计算出来的结果也应该在半个量化间隔内。

如果超过量化间隔的一半,就作为损失惩罚;若不大于一半,那么就为0。即取一个\(max(dis, 0)\)函数。

训练

果不其然,训练是综合三个损失函数,并非多输出。这怎么能叫one-to-many???

Paper | One-to-Many Network for Visually Pleasing Compression Artifacts Reduction的更多相关文章

  1. Paper | Compression artifacts reduction by a deep convolutional network

    目录 1. 故事 2. 方法 3. 实验 这是继SRCNN(超分辨)之后,作者将CNN的战火又烧到了去压缩失真上.我们看看这篇文章有什么至今仍有启发的故事. 贡献: ARCNN. 讨论了low-lev ...

  2. 【Paper】Deep & Cross Network for Ad Click Predictions

    目录 背景 相关工作 主要贡献 核心思想 Embedding和Stacking层 交叉网络(Cross Network) 深度网络(Deep Network) 组合层(Combination Laye ...

  3. 读paper:Deep Convolutional Neural Network using Triplets of Faces, Deep Ensemble, andScore-level Fusion for Face Recognition

    今天给大家带来一篇来自CVPR 2017关于人脸识别的文章. 文章题目:Deep Convolutional Neural Network using Triplets of Faces, Deep ...

  4. Paper | Dynamic Residual Dense Network for Image Denoising

    目录 1. 故事 2. 动机 3. 做法 3.1 DRDB 3.2 训练方法 4. 实验 发表于2019 Sensors.这篇文章的思想可能来源于2018 ECCV的SkipNet[11]. 没开源, ...

  5. Paper | A Pseudo-Blind Convolutional Neural Network for the Reduction of Compression Artifacts

    目录 非盲增强网络结构 训练目标 压缩系数预测子网络 网络结构 根据块QP判决结果得到帧QP预测结果 保持时序连续性 实验 发表在2019年TCSVT. 本文提出了一个兼具 预测压缩系数 和 非盲去压 ...

  6. Paper | Non-Local ConvLSTM for Video Compression Artifact Reduction

    目录 1. 方法 1.1 框图 1.2 NL流程 1.3 加速版NL 2. 实验 3. 总结 [这是MFQE 2.0的第一篇引用,也是博主学术生涯的第一篇引用.最重要的是,这篇文章确实抓住了MFQE方 ...

  7. CVPR 2017 Paper list

    CVPR2017 paper list Machine Learning 1 Spotlight 1-1A Exclusivity-Consistency Regularized Multi-View ...

  8. Deep Learning-Based Video Coding: A Review and A Case Study

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 1.Abstract: 本文主要介绍的是2015年以来关于深度图像/视频编码的代表性工作,主要可以分为两类:深度编码方案以及基于传统编码方 ...

  9. DeepCoder: A Deep Neural Network Based Video Compression

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract: 在深度学习的最新进展的启发下,我们提出了一种基于卷积神经网络(CNN)的视频压缩框架DeepCoder.我们分别对预测 ...

随机推荐

  1. golang数据结构之插入排序

    //InsertSort 插入排序 func InsertSort(arr *[]int) { ; i < len(arr); i++ { insertVal := (*arr)[i] inse ...

  2. python做中学(五)多线程的用法

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条 ...

  3. JS实现网站楼层导航效果

     壹 ❀ 引 我在angularjs中使用锚点这篇文章中,踩坑并简单实现了楼层导航中点击小图标跳转到对应楼层的功能:但对于楼层导航而言,还有个重要的功能就是,随着滚动条滚动,达到某层时得同步点亮楼层导 ...

  4. 1+x 证书 Web 前端开发 css 专项练习

    官方QQ群 1+x 证书 Web 前端开发 css 专项练习 http://blog.zh66.club/index.php/archives/192/

  5. Tkinter最佳实践(半小时)

    概述: 简介 Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和 ...

  6. 洛谷 P1351 (枚举)

    ### 洛谷P1351 题目链接 ### 题目大意: 给你 n 个节点, n-1 条边的无向联通图.若定义(u,v)表示 u 与 v 点的最短距离,如果 (u,v)值为 2 ,则这两个点的点权之积(即 ...

  7. javascript刷新当前页面的几种方式

    这里总结一下JavaScript刷新当前页面的几种方式. 1.history对象. history.go(0); 2.location对象. location.reload(); location = ...

  8. 编译安装最新版nettle和gnutls

    编译安装最新版gnutls的时候,总是会出libnettle 3.4.1 was not found的报错信息. 即使编译安装了nettle的最新版3.5之后,依然会报该错. 原因是gnutls编译的 ...

  9. mysql 优化之 is null ,is not null 索引使用测试

    关于mysql优化部分,有很多网友说尽量避免使用is null, is not null,select * 等,会导致索引失效,性能降低?那是否一定收到影响呢?真的就不会使用索引了吗? 本文的测试数据 ...

  10. java.lang.ClassNotFoundException: XXX (no security manager: RMI class loader disabled)

    在搞RMI远程发布,consumer去获取rmi远程服务的代理对象的时候出现了如下的错误 问题发现: 由于我发布的对象的包路径和获取的对象的包路径不一致,导致了这样的问题 解决方案: 包路径改为一致就 ...