MIMO-UNet网络改进策略和取得效果

最近尝试了对MIMO-UNet进行改进,作出的尝试和改进效果如下所示:
说明,先跑出来源码结果进行评估,跑1000轮,评估最好的训练权重(注意为了节省时间,所有的模型都在跑1000轮上面进行测试),所有改进的代码,环境和全部设置和上述一样,同维度可比:
0. 源MIMO-UNet的效果:最高是30.69 23H训练
**效果:**这是源码的效果,执行train.py的test。在GoPro上的test进行测试,测试指标是PSNR=30.69,Average time=0.006359
网络结构和效果图
在这里插入图片描述
1.MIMO-UNet的残差模块替换为带有傅里叶变换的RFTResnet模块
**效果:**比源码下降0.27,执行train.py中的test,在GoPro上的test进行测试,测试指标是PSNR=30.42,Average time=0.08,PSNR下降的同时推理速度是原来的10倍(相当于根据DeepRFT网络结构,替换了残差模块,实际DeepRFT网络还换了卷积模块,这里没有效果的原因可能是仅仅更换该模块不太起作用,能有效果的是多个因素相互影响,DeepRFT中残差模块更换为带有傅里叶变换,卷积模块也变了,通过复现RFTResnet源码发现确实是,RFTResnet的效果是很好的,最高是32+)
在这里插入图片描述
复现DeepRFT结果如下:
在这里插入图片描述
2.MIMO-UNet的残差模块替换为NAFNetblock模块
**效果:**比源码下降0.93,执行train.py的test,在GoPro上的test进行测试,测试指标是PSNR=29.76,Average time=0.011376
(思路来源下面这个文献,没有源码,我是把MIMO-UNet的残差模块换成了NAFNet)
效果其实是下降了,主要原因应该是原来的八个残差模块,改成现在的一个,网络的复杂度降低了(训练13H),提取特征的能力也降低了,可以考虑增加NAF的个数
在这里插入图片描述
下面是使用3个NAFNet代替原来的8个残差模块(效果确实比1个要好,但还是没有源码的效果好,且推理速度也下降了)
**效果:**比源码下降0.93,执行train.py的test,在GoPro上的test进行测试,测试指标是PSNR=29.76,Average time=0.011376
在这里插入图片描述
感觉使用NAFNet替换原来的残差结构是不可行的,又或者还需要改别的地方,这些都是多个因素一起影响的

3.MIMO-UNet中的FAM模块里加入CBAM通道和空间注意力机制
**效果:**比源码下降0.01,执行train.py的test,在GoPro上的test进行测试,测试指标是PSNR=30.68,Average time=0.009237

在这里插入图片描述
4.MIMO-UNet中在解码部分的特征拼接中把concat更换为CGAFusion模块
**效果:**比源码下降9,执行train.py的test。在GoPro上的test,测试指标是
PSNR=21.93,Average time=0.008138
在这里插入图片描述
想法来自于一篇文献,主要考虑两部分进行拼接,卷积进行特征融合是不是太单一了,考虑更深层次的融合,负效果。
5.MIMO-UNet原图在缩小为原来1/4的图中,在传入网络之前经过BAM模块进行特征提取
**效果:**比源码下降0.02,执行train.py的test,在GoPro上的test进行测试,测试指标是PSNR=30.57,Average time=0.025647
在这里插入图片描述
在这里插入图片描述
对原图进行下采样后,再次利用BAM对特征进行提取,然后再进行下一步,总体来说有一定的效果,参数量有一定的增加(这里产生的想法是,是否可以把所有去模糊模块都加上,然后做消融实验,最后保留最好的,会不会有效果呢,就好像保留特征提取最有效果的部分,特征融合最有效果的部分,也不算抄袭);上升了0.02,感觉很奇怪啊,这个不应该这么少吧,因为文献中就使用的这个模块。解释:1.文献中确实使用这个模块,但是改的也不仅仅是这个模块,还有损失函数之类的;2.这个文献确实创新程度很高,有很多值得学习的地方,但是貌似拿出来一个模块去用的话,还是很难,因为和其他的部分有配合的地方

6.MIMO-UNet里面加入了自注意力机制RSAM,和BANet是一样的,同一个自注意力机制
**效果:**比源码上升0.28,执行train.py的test,在GoPro上的test进行测试,测试指标是PSNR=30.97,Average time=0.7865(速度太慢了跟实时性相去甚远)
在这里插入图片描述
在这里插入图片描述
相当于复现了文献,确实有效果,但是训练时间太长了,这种情况参数量也很大,在文献中完全不提参数量的事情,只关注指标,能不能只保留一些效率最高的模块

7. MIMO-UNet下采样后第三个残差模块,后面接RDAFB最高
**效果:**比源码下降0.6,执行train.py的test,在GoPro上的test进行测试,测试指标是PSNR=30.36,Average time=0.007278
(思路来源:相当于复现了文献)在这里插入图片描述
按照道理来说,应该是有效果的,但是这里效果很差

8.MIMO-UNet的AFF里面添加CBAM通道和空间注意力机制
**效果:**比源码上升0.16,执行train.py的test。在GoPro上的test,测试指标是
PSNR=30.85,Average time=0.012102
在这里插入图片描述

总结:目前发现的两个有用的改进
0.在源网络中,PSNR=30.69,Average time=0.006359
1.目前改进都成了负优化,唯一有效果的是MRD网络PSNR上升0.28个点,为30.97,速度是0.7865,速度下降了接近100倍,这个网络太复杂了,相当于复现了MRD网络,很难达到实时性
2.在AFF里面加入CBAM注意力机制,属于创新点,网络PSNR上升0.16个点,为30.85,Average time=0.012102,下降的不多能够满足实时性

不得不说,这个网络的推理速度是真的快,源网络8个残差快,推理速度是0.006359!!!

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MIMO-UNET是一种用于图像去模糊的算法,它结合了MIMO(Multiple-Input Multiple-Output)和UNET两种技术。下面是对MIMO-UNET去模糊算法的介绍: MIMO-UNET算法是基于深度学习的图像去模糊方法,它通过使用多个输入和多个输出来提高去模糊的效果。传统的UNET算法只使用单个输入和单个输出,而MIMO-UNET则引入了多个输入和多个输出,以更好地捕捉图像中的细节和纹理信息。 MIMO-UNET算法的核心思想是将图像的模糊处理问题转化为一个端到端的深度学习任务。它使用编码器-解码器结构,其中编码器负责提取图像的特征,解码器则负责将特征映射回原始图像空间。通过多个输入和多个输出,MIMO-UNET可以同时处理多个模糊程度的图像,并生成对应的清晰图像。 MIMO-UNET算法的训练过程包括两个阶段:训练编码器-解码器网络和训练多输入多输出网络。在第一个阶段,使用已知的清晰图像和对应的模糊图像对编码器-解码器网络进行训练,以学习图像的特征表示和重建能力。在第二个阶段,使用多个模糊程度的图像对多输入多输出网络进行训练,以学习不同程度模糊图像的去模糊映射。 MIMO-UNET算法在图像去模糊任务中具有较好的性能,它可以有效地恢复图像的细节和纹理信息。同时,MIMO-UNET还可以处理多个模糊程度的图像,适用于不同场景下的图像去模糊需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值