码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 论文复现——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整体结构
    • 二、 快速傅里叶卷积(FFC)
        • Fourier Unit (FU)
        • Local Fourier Unit (LFU)
    • 三、FFC中local和global通道划分比例
    • 四、训练策略

    一、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

  • 相关阅读:
    怎么恢复已删除的全部数据,不小心删除的数据怎么恢复,删除的文件还能找回吗
    Python进行excel处理-01
    linux安装Ftp
    手机无人直播软件在苹果iOS系统中能使用吗?
    深度学习之NLP
    翻译文本的软件有哪些?这几个翻译工具你可以试试看
    时序预测 | MATLAB实现DBN深度置信网络时间序列预测
    Linux C/C++下抓包分析mysql流量(协议解析)
    科研 | 中英文期刊分区介绍及查询方法
    Lyapunov稳定性分析2(连续、离散系统)
  • 原文地址:https://blog.csdn.net/RooKichenn/article/details/126845010
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号