论文复现——LaMa:Resolution-robust Large Mask Inpainting with Fourier Convolutions

本次复现的论文是图像修复领域较火的Lama模型中的backbone,LaMa的backbone用在图像分类任务上也能有很好的效果。
原论文:https://arxiv.org/abs/2109.07161
源代码(用于图像修复的代码):https://github.com/saic-mdal/lama
复现的代码(用于图像分类代码):https://github.com/RooKichenn/General-lama-backbone(支持apex混合精度训练、mixup/cutmix、resume)

一、LaMa整体结构

LaMa整体结构
  从图中可以看出,输入到网络的x'是由真实图像x和掩码m在通道方向上进行拼接构成的,公式为x'=stack(x⊙m, m),拼接完成后,x.shape(3, 224, 224) -->x'.shape(4, 224, 224),进行下采样,在第一层下采样时用了一个7x7的快速傅里叶卷积(FFC),LaMa的backbone整体使用的都是FFC进行卷积,第一层使用大卷积核是为了获得全局的感受野,后两层下采样也是使用的FFC,但是卷积核为3x3,经过下采样后,图像缩小了8倍,但是一般图像分类的模型都是下采样32倍,所以可以添加两个下采样模块,就是在原论文的基础上再下采样4倍,就变成了整体下采样32倍(我复现的是下采样8倍,32倍的还没试过)。下采样完成后,将特征图送入FFC ResNet Blocks,在FFC ResNet Blocks中特征图尺寸是不会变化的,主要目的就是为了让模型学习特征映射,后面的上采样我们不需要,我们只需有backbone,所以不做过多讲解,具体可以去阅读原论文。

二、 快速傅里叶卷积(FFC)

在这里插入图片描述

  传统的卷积在网络的前几层并不能获得很大的感受野,这将浪费很多计算空间来对感受野进行建模,而且较小的感受野缺失全局的信息,于是作者使用了快速傅里叶卷积来获得全局的感受野。快速傅里叶卷积原论文地址:快速傅里叶卷积论文FFC用傅里叶变换到频域,在频域内做卷积,然后再逆变换回去。FFC包含四个部分:局部-->局部局部-->全局全局-->局部全局-->全局,前三部分都是使用标准3x3卷积实现的,只有最后一部分是使用频域变换。频域变换由两部分组成:Fourier Unit (FU)Local Fourier Unit (LFU)

Fourier Unit (FU)

伪代码如下图所示:
在这里插入图片描述
作者给出的伪代码介绍的非常清楚,其实就是先做傅里叶变换,在频域对实部和虚部做卷积,然后再逆变换回去。内部的卷积层是1×1卷积。

Local Fourier Unit (LFU)

在这里插入图片描述
目的是捕捉半全局信息,做法是将input feature map分为4个patch,分别使用FU即可。这样影响的是四分之一空间内的特征关联。就相当于是局部的nonlocal,想法合理。LFU 计算量比FU大,因为通道数多。实验说明在分类实验中,LFU还是很有用的。

三、FFC中local和global通道划分比例

在这里插入图片描述
FFC原论文实验中给出了效果最好的比例,ratio=0.5,在LaMa模型中作者也使用的是ratio=0.5。

四、训练策略

在ImageNet上做预训练,也可以在自己的数据集上进行训练,只需要修改config.py中的类别个数即可。目前学习率还有各种超参数我都是默认使用的Swin Transformer的超参,在ImageNet上做预训练开销太大,超参也没时间调。如果想训练自己的数据集,可以把学习率和优化器的参数适当调大一点。
代码开源地址:https://github.com/RooKichenn/General-lama-backbone

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
解释这些参数optional arguments: -h, --help show this help message and exit --host HOST --port PORT --config-installer Open config web page, mainly for windows installer (default: False) --load-installer-config Load all cmd args from installer config file (default: False) --installer-config INSTALLER_CONFIG Config file for windows installer (default: None) --model {lama,ldm,zits,mat,fcf,sd1.5,cv2,manga,sd2,paint_by_example,instruct_pix2pix} --no-half Using full precision model. If your generate result is always black or green, use this argument. (sd/paint_by_exmaple) (default: False) --cpu-offload Offloads all models to CPU, significantly reducing vRAM usage. (sd/paint_by_example) (default: False) --disable-nsfw Disable NSFW checker. (sd/paint_by_example) (default: False) --sd-cpu-textencoder Run Stable Diffusion text encoder model on CPU to save GPU memory. (default: False) --local-files-only Use local files only, not connect to Hugging Face server. (sd/paint_by_example) (default: False) --enable-xformers Enable xFormers optimizations. Requires xformers package has been installed. See: https://github.com/facebookresearch/xformers (sd/paint_by_example) (default: False) --device {cuda,cpu,mps} --gui Launch Lama Cleaner as desktop app (default: False) --no-gui-auto-close Prevent backend auto close after the GUI window closed. (default: False) --gui-size GUI_SIZE GUI_SIZE Set window size for GUI (default: [1600, 1000]) --input INPUT If input is image, it will be loaded by default. If input is directory, you can browse and select image in file manager. (default: None) --output-dir OUTPUT_DIR Result images will be saved to output directory automatically without confirmation. (default: None) --model-dir MODEL_DIR Model download directory (by setting XDG_CACHE_HOME environment variable), by default model downloaded to ~/.cache (default: /Users/cwq/.cache) --disable-model-switch Disable model switch in frontend (default: False)
06-09
这是一些可选参数,可以在命令行中使用来配置运行环境和模型选择等。下面是每个参数的解释: - -h, --help:显示帮助信息并退出。 - --host HOST:设置服务器主机地址。 - --port PORT:设置服务器端口号。 - --config-installer:打开配置页面,主要用于Windows安装程序(默认值为False)。 - --load-installer-config:从安装程序配置文件中加载所有命令参数(默认值为False)。 - --installer-config INSTALLER_CONFIG:Windows安装程序的配置文件路径(默认值为None)。 - --model {lama,ldm,zits,mat,fcf,sd1.5,cv2,manga,sd2,paint_by_example,instruct_pix2pix}:选择要使用的模型。 - --no-half:使用完整精度模型。如果生成的结果总是黑色或绿色,请使用此参数(仅适用于sd/paint_by_exmaple模型)(默认值为False)。 - --cpu-offload:将所有模型卸载到CPU上,大大减少vRAM的使用(仅适用于sd/paint_by_example模型)(默认值为False)。 - --disable-nsfw:禁用NSFW检查器(仅适用于sd/paint_by_example模型)(默认值为False)。 - --sd-cpu-textencoder:在CPU上运行稳定扩散文本编码器模型以节省GPU内存(默认值为False)。 - --local-files-only:仅使用本地文件,不连接到Hugging Face服务器(仅适用于sd/paint_by_example模型)(默认值为False)。 - --enable-xformers:启用xFormers优化。需要安装xformers软件包。请参见:https://github.com/facebookresearch/xformers(默认值为False)。 - --device {cuda,cpu,mps}:选择使用的设备(默认值为cuda)。 - --gui:将Lama Cleaner作为桌面应用程序启动(默认值为False)。 - --no-gui-auto-close:在GUI窗口关闭后防止后端自动关闭(默认值为False)。 - --gui-size GUI_SIZE GUI_SIZE:设置GUI窗口的大小(默认值为[1600,1000])。 - --input INPUT:如果输入为图像,则默认加载图像。如果输入为目录,则可以在文件管理器中浏览并选择图像(默认值为None)。 - --output-dir OUTPUT_DIR:自动将结果图像保存到输出目录,无需确认(默认值为None)。 - --model-dir MODEL_DIR:模型下载目录(通过设置XDG_CACHE_HOME环境变量),默认情况下模型下载到~/.cache(默认值为/Users/cwq/.cache)。 - --disable-model-switch:禁用前端的模型切换功能(默认值为False)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值