MIMO-UNet学习

看了一篇去模糊的论文,使用这个MIMO-UNet跑自己找的数据集,效果图还没跑完。先记录一下学到的东西,有不正确的地方还望指出。

摘要

由粗到细的策略广泛应用于单图片去模糊网络结构当中。传统的方法是堆叠以多尺度图像作为输入的子网络。从底层子网络到顶部网络逐渐提高图像清晰度。产生了不可避免的高计算量消耗。为了设计一个快速而精确的去模糊网络,提出了MIMO-UNet。

MIMO-UNet的三个特点:

  1. MIMO-UNet的单个编码器输入多尺度的图像,降低了训练难度。
  2. MIMO-UNet的单个解码器输出多尺度的去模糊图像,单个U型网络,模拟多级联U-Net。
  3. 引入非对称特征融合(AFF),对多尺度特征进行有效融合。

介绍

这部分我觉得一半说的都是摘要和去模糊背景的东西,感觉不是那么重要,可以直接跳过,这里就记一下自己的笔记吧。

背景: 相机模块近十来年得到快速发展,当摄像机或目标移动的时候,模糊和伪影的现象仍然存在。早期:CNN的方法,用CNN作为模糊核的估计器,构建两阶段图像去模糊框架。CNN估计阶段 + 基于核的去卷积阶段。(我的理解就是一个用来估计模糊核,一个通过学习,学习使用模糊核来去模糊,用非盲去模糊的方式去模糊)。近期:基于CNN的去模糊方法,直接端到端的方式,学习模糊-清晰图像之间的复杂关系。Deepblur:由多个堆叠的子网络组成,用于处理多尺度模糊,每个子网络取一个缩小的图像,然后以粗到细的方式逐渐恢复一个清晰图像。

由粗到细的网络设计原则已被证明是有效的图像去模糊方法。

然而,这却增加了计算量和内存的使用,在移动设备,车辆,机器人上面难以使用。提出了一个轻量CNN的网络,比传统的网络浅,但无法达到最先进方法的精度。

提出了MIMO-UNet。解码器输出多个去模糊图像,multi-output single decoder(MOSD)。单编码器输入多尺度图像,multi-input single encoder(MISE)。非对称特征融合,对多尺度特征进行有效融合,asymmetric feature fusion(AFF)。

结构



MIMO-UNet的编码器和生成器是由3个EBs(Encoder Blocks)和3个DBs(Decoder Blocks)组成。

多输入的单编码器 MISE

有研究表明,多尺度图像可以更好地处理图像中不同程度的模糊。

在MIMO-UNet当中,一个EB用不同尺寸的模糊图像作为输入。然后用缩小后的特征和下采样的图像互补信息。这种方法可以有效处理各种图像的模糊。

使用shallow convolutional module(SCM)从下采样提取特征,考虑到效率问题,如图4(a),使用3 x 3和1 x 1卷积层堆叠。将最后1x1层的结果和前边输入B结合,在用1 x 1细化连接特征。对于SCMkoutSCM^{out}_{k}SCMkout​的特征和EBk−1outEB^{out}_{k-1}EBk−1out​的融合,使用一个stride为2的卷积给到EB上,使得大小和SCM的输出一致进行融合。

这里也提出了一个feature attention module(FAM)特征注意力模块,用来主动强调或者抑制尺度特征,并且从SCM中学习空间/通道特征的重要特征。(EBk−1out)↓(EB^{out}_{k-1})^{\downarrow}(EBk−1out​)↓(就是前面说的经过那个卷积之后,尺寸缩小的那个)和SCM之间是元素之间相乘,之后通过一个3 x 3 的卷积,输出包含互补信息来进行去模糊,最终加到(EBk−1out)↓(EB^{out}_{k-1})^{\downarrow}(EBk−1out​)↓中,最后用残差块进行细化,使用了8个修改过的残差块。

EB(Encoder Block)详细解释

MIMOUnet中的EB,不仅仅是接收上一个EB中提取的缩小特征外,还从下采样的模糊图像中提取特征,然后两者结合起来。利用了压缩特征下采样的特征。图中EB有三层(紫色,绿色,蓝色)

紫色: 一个步长为2的卷积层,用来将上层EB输出的特征进行压缩,同时也是降低尺寸和下采样的SCM产生的特征图大小一致。

绿色: 为FAM模块,用来主动强调或抑制尺度特征,期望获得互补信息用来去模糊。逐个元素相乘(个人理解是,通过图中的做法可以列出公式方便理解。(EBk−1out)↓(EB^{out}_{k-1})^{\downarrow}(EBk−1out​)↓假设为X1,下边SCM模块的特征为X2,中间的卷积可以作为f(x)的操作。那么总公式则为X1 + f(X1 * X2),中间的卷积理解为权重的调整W,提出X1得到。X1 * (1 + W * X2),那么也就是说,中间的卷积是起到了自动调节增强或抑制各个特征权重的功能)FAM模块,文中使用了消融实验证实该模块有助于提高PSNR指标。

蓝色: 为残差模块,MIMO-UNet中是8个残差块,将前面的特征进行总结细化。MIMO-UNet++则是20个残差块。

多输出的单解码器 MOSD

在MIMO-UNet中,不同的DB有不同的特征图尺寸,文中的做法就是将中间监督应用到每个解码器当中。就是每个Decoder Block的产出都是有对应尺寸的清晰图进行训练。但是DB产生的是特征图而不是图像,然后就用的一个o()函数将特征图映射到图像。公式如下

这个映射其实就是一个卷积。转为三通道的一个卷积。

非对称特征融合 AFF

每个AFF拿到所有EB的输出作为输入,用卷积结合多尺度特征。解决的问题: 传统的由粗到细的去模糊方法中粗尺度网络中特征用于细尺度网络,导致信息流动不灵活。提出了AFF模块,让不同尺度信息在一个U-Net中流动。每个AFF将所有EB的输出作为输入,并用卷积结合多尺度特征。传入对应的DB中。让每个DB可以得到不同尺度的特征,提高去模糊的性能。

loss函数

内容损失使用的是L1Loss

由于去模糊的目的是恢复丢失的高频分量,因此减少频率空间的差异至关重要,所以提出了MSFR损失

F指的是快速傅里叶变换(FFT),最终损失为

文中设定lambda为0.1

代码注意点

论文中提供的是pytorch代码,版本比较老,如果是较新的pytorch版本需要将代码有些改动。改动如下:

# 插值修改尺寸部分
F.interpolate(...., recompute_scale_factor=True)
# 所有代码中做插值修改尺寸大小中,要添加recompute_scale_factor=True参数,明确按照老版本的方式执行。不加会有警告。# 傅里叶变换部分代码修改
# 旧版
label_fft1 = torch.rfft(label_img4, signal_ndim=2, normalized=False, onesided=False)
# 新版
t = rfft2(label_img4, dim = (-2))
label_fft1 = torch.stack((t.real, t.imag), -1)

效果图

以下是用的是自己找的数据集跑的,是跑的30个epoch的结果。论文中的使用的是GoPro和RealBlur数据集,在GoPro训练了3000个epoch,Adam优化器,初始化学习率为10−410^{-4}10−4,每500个epoch减小为原始的0.5。在Realblur中训练1000epoch,相同学习率,也是500个epoch减小为原始的0.5
模糊图

生成图

Ground Truth

额,我把我修改过能跑通的MIMOUNet代码也放出来吧。
MIMOUNet

相关链接

Rethinking Coarse-to-Fine Approach in Single Image Deblurring

论文中源码MIMO-UNet

MIMO-UNet学习相关推荐

  1. U-Net深度学习灰度图像的彩色化

    U-Net深度学习灰度图像的彩色化 本文介绍了使用深度学习训练神经网络从单通道灰度图像生成3通道彩色图像的实验.在我看来,虽然它们因主题而异,但结果令人震惊,模型产生了幻觉,原始主题应该是什么颜色. ...

  2. 深度学习之语义分割unet算法解读

    0 背景 在语义分割领域,unet 也是一个经典网络,尤其是在医学影像分割方面,效果很好.本文对 unet 算法进行一个解读介绍. 1 FCN 网络 语义分割的开山之作是 FCN 网络,具体解读可以参 ...

  3. 计算某个时间距离现在_计算成像amp;深度学习(1)

    从今天开始,我们一起顺着文献摸一摸计算成像&深度学习的来龙去脉.有时间就会更新. 1. U-Net的问世(2015年) 这张图大家应该已经很熟悉了,长得像字母"U",名叫U ...

  4. 从零开始的U-net入门

    目录 前言 一.U-net基础知识 (1)ReLU函数 (2)图像的卷积和反卷积(上采样) (3)池化层(下采样) (4)损失函数 二.U-net入门 (1)U-net的结构是怎么样的? (2)U-n ...

  5. 基于深度学习的超级分辨率,无需使用GAN

    本文介绍了技术和培训深度学习模型的图像改进,图像恢复,修复和超分辨率.这利用了Fastai课程中教授的许多技术,并利用Fastai软件库.这种训练模型的方法是基于非常有才华的AI研究人员的方法和研究, ...

  6. 华为云的研究成果又双叒叕被MICCAI收录了!

    语义/实例分割问题是近年来医学图像计算领域的一个热门研究课题,70%以上的国际竞赛都是围绕着它展开.在临床上,分割方法使能临床辅助决策.术前规划.肿瘤动态监控等任务,具有极高的临床使用价值. 2020 ...

  7. Artificial Intelligence for the Metaverse: A Survey

    本文是对<Artificial Intelligence for the Metaverse: A Survey>的原文翻译,只针对文字部分,图表请参看原文. 元宇宙的人工智能:综述 摘要 ...

  8. 通过AI为黑白照片着色。

    介绍 (Introduction) When I see a historical black and white photo, I always wonder what was the real c ...

  9. 基于FCN,U-Net的深度学习医学影像分割算法(细胞分割算法)以及传统算法分析

    本博文主要分析了基于传统计算机视觉的细胞分割算法和基于深度学习的细胞分割算法.主要针对医学影像分割算法.包括了FCN全卷积网络的细胞分割效果,U-Net细胞分割效果.查阅了采用深度学习分割医学影像的几 ...

  10. 3D U-Net:从稀疏注释中学习密集的体积分割

    作者:Tom Hardy Date:2020-01-10 来源:3D U-Net:从稀疏注释中学习密集的体积分割

最新文章

  1. Raspberry Pi 4B安装 OpenVINO™ 工具包
  2. 内核与ramdisk到底是什么关系?
  3. 成功解决AttributeError: ‘str‘ object has no attribute ‘decode‘
  4. MapReduce: map读取文件的过程
  5. Python文件读写——使用“with open ... as f”进行文件打开的操作
  6. 强势推出第九代酷睿处理器,大敌当前,英特尔不挤牙膏了
  7. eclipse提示打不开java虚拟机
  8. 3D游戏引擎入门课程——场景渲染
  9. 计算机课怎么管纪律,作为班主任,班级纪律应该怎么管?丨班级圆桌派
  10. sprinboot打包jar后读取不到/resource/data/ip2region.xdb的文件.
  11. 转载 ADB logcat 过滤方法(抓取日志)
  12. 35岁前要培养的66种思维(中)
  13. Oracle PL/SQL 循环
  14. excel汇总软件如何快速汇总多个表格数据
  15. ARM体系结构与编程(更)
  16. 网站跨域请求的解决方案
  17. 【期末复习】操作系统结构与分析(南邮信安)
  18. ArchLinux 安装导航
  19. STC8系列固件函数库开源
  20. 电脑核显可以用html吗,核显跟独显能一起用吗 电脑核显和独显一起用,电脑会用哪个...

热门文章

  1. 如何选购一台笔记本电脑
  2. torch.bmm()验证
  3. 用JavaScript制作简单的网页计算器
  4. [ CTF ]【天格】战队WriteUp-第六届“强网杯”全国安全挑战赛(初赛)
  5. sincerit 王者荣耀(01背包)
  6. Fater-RCNN
  7. 甄别客户需求,提高解决问题的效率
  8. 关于暗影骑士擎重装win10纯净版遇到的问题(使用的u盘作为系统盘)
  9. SQLite3在IOS中的用法
  10. Fabric 版本问题