安妮 编译自 ArXiv
量子位 出品 | 公众号 QbitAI

十图九糊。

置身异国街道,感受着陌生环境里熙熙攘攘的街道,你掏出手机想留住这一刻。

好嘞,一、二、三,咔嚓。

由于行人和车辆都在运动,再加上你的手稍微抖了一抖,照片中的景象是这样的——

这样的——

和 这样的——

这是什么AV画质啊!

拍照时手抖,或者画面中的物体运动都会让画面模糊,女友辛辛苦苦摆好的各种Pose也将淹没在各种模糊的线条中,是时候要有一种新的算法解救水深火热中的你了。

近日,乌克兰天主教大学、布拉格捷克理工大学和解决方案提供商Eleks联手公布了一篇论文,文章标题为《DeblurGAN: Blind Motion Deblurring Using Conditional Adversarial Networks》。

这篇文章中,研究人员提出一种基于条件对抗式生成网络和内容损失(content loss)的端对端学习法DeblurGAN,去除图像上因为物体运动而产生的模糊。

效果嘛,可以说好到让你不太相信自己的眼睛。

比如我们刚刚在异国街头拍糊了的那张,处理后变成了这样——

炉火纯青。

还不来学习一下去糊大法的手艺?

GAN中得到灵感

回归我们的终极议题:在没有提供任何关于核(kernel)或相机的运动信息的情况下,怎样去除单张照片中的运动模糊(Motion Blur)呢?

这不禁让人联想起生成对抗网络(GAN),因为它能够保存高纹理细节,创建的图案又接近真实图像,所以是图像超分辨率和图像修复中的主力军。

能否将这种方法应用到消除运动模糊的工艺中呢?

可以。模糊处理可以看作是图像转化中的一个特例,研究人员提出基于条件生成式对抗网络和多元内容损失的DeblurGAN法。

这是种什么方法?我们继续往下看。

基本原理

因为目标是把模糊图像IB在没有提供模糊核的情况下恢复成清晰图像IS,因此,我们需要训练一个CNN GθG作为生成器。每张IB都对应着一张估计出的清晰图像IS。此外,在训练阶段,我们将引入critic函数DθD,以对抗的方式训练两个网络。

 DeblurGAN生成网络架构

从上图的架构中可以看出,DeblurGAN包含两个1/2间隔的卷积单元、9个剩余residual单元和两个反卷积单元。每个ResBlock由一个卷积层、实例归一化层和ReLU激活组成。

去除运动模糊的整个流程,如下图所示:

先生成运动模糊图像

想去糊,先得知道怎样将清晰图像转换成运动模糊图像,这个准备阶段也学问多多。

与超分辨率和黑白照片上色等流行的图像到图像(image-to-image)的转换问题相比,用于训练算法的清晰和模糊的图像对(image pairs)难以获取,一种典型的获取方法是用高帧频相机捕捉视频中清晰的帧模拟模糊图像。

用这种方法创建真实图片的模糊图像,会将图像空间(image space)局限在拍摄的视频中出现的场景,并将数据集变得更复杂。

根据前人的实验,研究人员提出的方法更真实地模拟了复杂的模糊核(blur kernel)。这种方法遵循了Boracchi和Foi 2012年在论文Modeling the performance of image restoration from motion blur中所描述的随机轨迹生成的概念,对轨迹矢量应用亚像素插值法生成核。每个轨迹矢量都是一个复杂矢量,对应着一个连续域中的二维随机运动物体的离散位置。

 生成的相机运动轨迹和模糊内核以及相应的模糊图像示例

轨迹生成由马尔可夫过程完成、由算法总结。根据前一个点速度和位置、高斯摄动方程和脉冲摄动,随机生成下一个点的位置。

打造DeblurGAN

基本思路和运动模糊生成后,可以开始着手训练模型了。

研究人员用PyTorch中实现了自己的所有模型,整个训练过程是在一个Titan-X GPU上执行三种不同的数据集。

第一个模型DeblurGANWILD是在随机裁剪的256x256像素的GoPro数据集上训练的;第二个模型DeblurGANSynth在用上文所介绍方法模糊过的MS COCO数据集上训练;此外,还有一个特殊的模型DeblurGANComb,所用的训练集中有2/3是合成图像,1/3是高帧率相机拍摄的图像。

由于它们均为全卷积模型,又是在图像patch上训练的,因此可以应用在任意大小的图像中。

为了进行优化,研究人员在DθD上执行了5次梯度下降,在GθG上执行了1次。最初生成器和判别器设置的学习速率为10-4,经过150次迭代后,在接下来的有一轮150次迭代中将这个比率线性衰减。

6天后,研究人员训练出一个DeblurGAN网络,最激动人心的部分终于来了。

开始测试!

GoPro数据集

GoPro数据集包含了2103对从不同的场景拍摄的720p的模糊-清晰的图像对。研究人员将模型的结果与标准指标的模型状态进行比较,并在单个GPU上显示每个算法的运行时间,结果如下:

 GoPro数据集测试图像的平均峰值信噪比和结构相似度

测试结果表明,DeblurGAN在定性和定量两方面都表现出优异的结果。它可以处理由相机抖动和物体运动引起的模糊,不会受到通常的核评估方法的影响,同时参数仅为Multi-scale CNN的六分之一,大大加快了推理速度。

不信?那来看看GoPro数据集测试的去模糊图像——

 GoPro测试数据集的评估结果/从左到右:模糊图像、Nah算法处理结果和我们算法的处理结果

Kohler数据集

Kohler数据集由4张图像组成,每张用12个不同的核模糊图像。这是一个标准的基准数据集,用于评价去模糊算法。数据集通过记录和分析真实的相机运动产生,并在机器人载体上回放,这样在6D相机运动轨迹上会留下一系列清晰的图像。

 在Kohler基准数据集上进行的平均峰值信噪比和结构相似度测度结果

YOLO上的目标检测基准

这项研究中还有一个小彩蛋。

研究人员探索了动态模糊对目标检测的影响,基于在预训练的YOLO网络上目标检测的结果,提出一种评估质量的去模糊算法的新方式。

通过用高帧率摄像机模拟相机抖动,研究人员构建了一个清晰-模糊的街景数据集。之后,对240fps(每秒显示帧数-帧率)相机拍摄的5到25帧进行随机抽样,并计算中间帧的模糊版作为这些帧的平均值。

总体来说,数据集包括410对模糊-清晰图像,这些图像是从不同街道和停车场拍摄的,包含不同数量和类型的汽车。

 在模糊化前后的目标检测

在recall和F1 socre上,DeblurGAN的表现远远超过了竞争对手。

去糊宝典

你也想告别AV画质?

别着急,论文地址在这:

https://arxiv.org/abs/1711.07064

相关代码(PyTorch):

https://github.com/KupynOrest/DeblurGAN

加入社群

量子位AI社群11群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot4入群;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进群请加小助手微信号qbitbot4,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

DeblurGAN消除运动模糊效果惊人相关推荐

  1. 手抖有救了!DeblurGAN消除运动模糊效果惊人 | 附论文+代码

    置身异国街道,感受着陌生环境里熙熙攘攘的街道,你掏出手机想留住这一刻. 好嘞,一.二.三,咔嚓. 由于行人和车辆都在运动,再加上你的手稍微抖了一抖,照片中的景象是这样的-- 这样的-- 和 这样的-- ...

  2. 拍照手抖有救了!DeblurGAN消除运动模糊效果惊人 | 附论文+代码

    安妮 编译自 ArXiv 量子位 出品 | 公众号 QbitAI 十图九糊. 置身异国街道,感受着陌生环境里熙熙攘攘的街道,你掏出手机想留住这一刻. 好嘞,一.二.三,咔嚓. 由于行人和车辆都在运动, ...

  3. CSDN开发者周刊第 20 期:Google 下一代操作系统 Fuchsia 源码正式公开;AI 消除马赛克 效果惊人

    CSDN开发者周刊:只为传递"有趣/有用"的开发者内容,点击 Star(CodeChina)! 本周热门项目 1.红帽停止维护 CentOS 8,创始人另起炉灶 12 月 8 日, ...

  4. 简单的运动模糊效果实现

    当一个物体快速移动的时候, 人眼会感觉它变模糊. 同样的现象在电影和照片上也存在. 产生这种现象的原因是人眼并不是无限快地接收信息的, 而是每隔一段很短的时间" 截取" 一幅画面. ...

  5. Unity URP运动模糊效果Shader

    实现原理 见这篇文章Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)_puppet_master的 ...

  6. 如何消除运动后肌肉酸痛 (DOMS - Delayed Onset Muscle Soreness)

    http://blog.tangcs.com/2009/05/28/delayed-onset-muscle-soreness/ 转载于:https://www.cnblogs.com/WarrenT ...

  7. 如何消除摄影中的运动模糊?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|计算机视觉life 如果你试过去拍摄一些运动场景,例如拍 ...

  8. 如何消除图片中的运动模糊?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI 算法与图像处理 如果你试过去拍摄一些运动场景,例如 ...

  9. Corona如何消除过度的噪点?

    对于 Corona 和其他路径跟踪渲染器,细微的高频噪点是正常的,尤其是在渲染过程开始时.但是经过多次传递或长时间渲染后仍不会消失的强烈噪点可能表明渲染引擎在您的场景设置中遇到了一些问题.从 Coro ...

最新文章

  1. 2012年技术图书大盘点
  2. python读取文件模式_python如何读取文件的数据
  3. 【Android 进程保活】应用进程拉活 ( 系统 Service 机制拉活 | Service 组件 onStartCommand 方法分析 | 源码资源 )
  4. 第五章 随机事件及其概率
  5. Centos/Red Hat7.9 源码和在线yum 安装 vsftpd
  6. npm安装vue-cli时报错解决方法
  7. Python 参数解析(getopt模块)
  8. 一名技术leader的工作随笔
  9. 分享一些前端优质的掘金小册,学完技术感觉已经超神了
  10. 8uftp是不是要保存,4步掌握8uftp保存密码的方法
  11. LOJ6070 基因 分块+回文自动机
  12. 一元云购系统接入手机短信功能说明【V3版】
  13. google阅读器快捷键
  14. Cox 比例风险模型中HR和置信区间
  15. AT88SC0104C加密芯片的工作原理
  16. 算法工程师应该具备哪些工程能力
  17. 计算机网络实验入门一
  18. Photoshop cs6 如何让图层渐变透明
  19. 联想型号启天M420-N000台式机进入bios设置u盘启动
  20. 流水账——12.15

热门文章

  1. Android 获取手机硬件信息
  2. 炉石传说服务器维修,值25卡包! 炉石传说服务器故障补偿你满意吗?
  3. 包邮送一款2021年全新的机械键盘,写bug啪啪啪超级好听!!
  4. pandas在excel中的应用
  5. Raft 算法(详细版)
  6. mysql创建表之前判断表是否存在
  7. Python自动化运维-丁志文-专题视频课程
  8. 做PPT怎么能少了素材!(收藏的高清图片素材网站二)
  9. errmsg:invalid message type hint 群发图文消息
  10. 教你同时分析优速多个已签收单号的物流信息