图像修复系列(CVPR2020-Recurrent Feature Reasoning for Image Inpainting)
文章目录
前言
现有的画中画方法在恢复常规或小的图像缺陷方面取得了很好的性能。然而,由于缺乏对孔中心的约束,填补大的连续孔仍然是困难的。在Recurrent Feature Reasoning for Image Inpainting论文中,设计了一个循环特征推理(RFR)网络,主要由一个即插即用的循环特征推理模块和一个知识一致注意(KCA)模块构成。类似于人类解决难题的方式(即先解决较容易的部分,然后将结果作为额外的信息来解决困难的部分),RFR模块经常性地推断卷积特征图的孔边界,然后将其作为进一步推理的线索。该模块逐步加强了对孔中心的约束,结果变得明确。为了捕捉特征图中远处的信息用于RFR,进一步开发了KCA并将其纳入RFR。从经验上看,首先将提议的RFR-网络与现有的骨干网络进行了比较,证明RFR网络更加有效(例如,在相同的模型大小下,SSIM提高了4%)。然后,将该网络放在目前最先进的背景下,它表现出更高的性能。
提示:以下是本篇文章正文内容,下面案例可供参考
一、基本流程
提出的绘画方案的概述。被遮挡的图像首先被映射到卷积特征空间,并由一个共享的特征推理模块反复处理。在特征图完全恢复后,生成的特征图被合并在一起(本图省略),合并后的特征被翻译回RGB图像。
递归特征推理模块的图示。区域识别过程和特征推理过程是连续进行的。经过几次推理,特征图以一种自适应的方式合并,并生成一个固定通道数的输出特征图。该模块是即插即用的,可以放置在现有网络的任何一层。RFR模块是一个即插即用的模块,采用重现推理设计,可以安装在现有网络的任何部分。RFR模块可以分解成三个部分:1)一个区域识别模块,用于识别这个递归中要推断的区域;2)一个特征推理模块,旨在推断识别区域中的con-tent;3)一个特征合并操作器,合并中间的特征图。在这个模块中,区域识别模块和特征推理模块交替地、经常地工作。在孔洞被填满后,推理过程中产生的所有特征图被合并,产生一个具有固定通道编号的特征图。下面我们将详细说明这些过程。我们模块的7762个模型流水线见图2。
二、代码实现github
1.先说明一个bug
model.py里面关于masks,如果你自己数据集的标签mask图是一个通道,那么在self.forward(masked_images, masks, gt_images)前加入masks = torch.cat([masks] * 3, dim=1),将其转换为三通道,否则送入网络训练会出错。
关于test时也会又相识问题。
源代码时这样的。
2.使用GPU 0训练网络,使用预训练的模型
命令如下:
python run.py --data_root image路径 --mask_root mask路径 --model_path checkpoints/checkpoint_paris.pth --batch_size 6 --gpu 0
3.测试网络
命令如下:
python run.py --data_root test/image --mask_root test/mask --model_path checkpoints/g_10000.pth --test --mask_mode 2