使用restormer网络做2022年中兴捧月图像去噪

目录

1、预处理

 2、神经网络

3、数据增强

4、训练细节

5、loss选择

6、小trick

7、没来得及用的手段

1、预处理

由于官方提供的图像的分辨率过大,所以为了计算高效,先将其裁剪为200*200大小的图片,然后进行[black_level, white_level]之间的标准化。

38bf536367d74684b8a874abb7983624.png

 2、神经网络

github上找到restormer网络的源码,修改网络的dim参数,尽量使其保存的参数文件大小接近50M。毕竟参数越多,模型的表示能力越强。

还需要修改forward函数的部分,将输入的x加padding至能整除2的网络深度次方。最后返回也使用切片out[:,:,:h,:w]。 

3、数据增强

数据增强仿照SRMNet源码里使用到的数据增强方法,具体有随机水平、垂直翻转,随机裁剪,随机旋转90°、180°、270°。

4、训练细节

1. 使用95%做训练集,5%做验证集。

2. 使用AdamW优化器,(beta1, beta2) = (0.9, 0.999),batch_size = 8,一张图像大小为(4, 192, 192)。

3. 使用ReduceLROnPlateau动态调整学习率,设置初始学习率为1e-4,最小学习率为1e-6,patience = 4,factor = 0.7。

4. 预测时必须以整张图预测,该网络预测时需要32G内存。

5、loss选择

loss函数可选:L1、MSE、Carbonnier Loss、PSNRLoss

由于PSNR是根据MSE计算的,但是直接使用MSE作为损失函数会有优化问题。 所以为了达到更高的PSNR,我先使用L1损失训练42个epoch,然后换MSE一直训练。直到MSE损失也不再降低时,我试图将其更换为Carbonnier Loss或者PSNRLoss,然而结果都没有变得更好。

在loss不再降低时,我试图学习restormer论文中的训练策略,更换不一样大小的图片继续训练,效果提升不明显。

6、小trick

最后一张图片多预测几次可以刷到更高的分。最终分数57.11

github链接:https://github.com/xiaowukongkong/zxpy

7、没来得及用的手段

1. 由于restormer网络耗内存和算力,所以有必要对其使用的transformer块重写,而已经有很多研究表明,在不影响性能的条件下多头自注意力可以被其他网络结构替换,比如BiLSTM、FFN以及其他的子结构。也可以使用结构重参数化来设计多路分支训练,推理时使用等效的一层卷积。若显存受限,可将网络中的BN层换成FRN层,因为其对batch_size不敏感。

2. 数据增强时可以使用cutmix。

3. 训练时可以使用混合精度来增大batch_size,加快训练速度。若网络结构中在子结构中使用到了skip connection,则可以使用随机深度训练。

4. 在loss函数选择时,可以根据官方要求的score的计算方法自己设计loss函数。

 

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
上一篇 2022年5月31日 下午12:25
下一篇 2022年6月1日 上午10:57

相关推荐