最近尝试了对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!!!