本竞赛的任务是利用AI算法消除图像中的摩尔纹,其实质还是image2image的low level任务。
组委会给定的训练集只有1000对moire-sharp图像,同时由于图像的分辨率非常大且不相同,没办法直接训练,因此我们需要对训练数据进行裁剪和增强。
(1) 以60%的重叠率将图像切分成512 x 512的patch;
(2) 训练数据增强:水平翻转,竖直翻转。
(1) 放弃基于self-attention的方法
因为算法的推理时间、模型大小和显存大小等也评价指标,因此我们放弃了基于self-attention的方法,包括:Non-Local和Transformer等;
(2) 放弃channel attention (CA)
在RCAN中,作者使用CA模块提升了图像超分辨的效果,但是这种提升在本任务中效果非常小(也许是我们加的方式不对),而且会来额外的参数量,因此我们放弃该方法;
(3) MRNet
我们的MRNet曾获得NTIRE 2021 Defocus Deblurring using Dual-pixel Images Challenge (CVPR 2021)冠军,因此使用MRNet来实现图像去摩尔纹任务。
MRNet是由特征提取模块、融合模块、重建模块和上采样模块构成。
a. 特征提取模块:一个简单的U-Net架构组成,提取输入图像的多尺度特征;
b. 融合模块:一个简单的1x1卷积构成;
c. 重建模块:重建模块是本架构的核心,是由多个Multi-scale Residual Group Module (MSRGM)组成。其中MSRGM融合多尺度特征来提取模型的表达能力,而每个尺度是由多个Residual Group Module (RGM)构成;
d. 上采样模块:使用pixel-shuffle模块进行上采样。
(1) 采用Charbonnier L1 loss function
(2) 采用Cosine学习了调整策略(1000 epoch,lr=1e-4)
(3) input size = 512 * 512
train.py:训练
MRNET.py:模型
losses.py:loss函数
transforms.py:数据增强
predict_demoire_paddle.py:测试
image_to_patch_moire.py:数据预处理