最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

如何使用大蒙版修复 LaMa 隐藏图像中的对象?

  • 2022-03-03
  • 本文字数:2746 字

    阅读完需:约 9 分钟

如何使用大蒙版修复 LaMa 隐藏图像中的对象?

当前的图像修复系统往往需要处理大量缺失的部分,近来,Roman Suvorov 等人提出了一种叫做 LaMa 的 SOTA 技术,能够在给定的图像中屏蔽任意尺度的对象,并返回一个不包括我们所屏蔽物体的修复图像。在本文中,我们将从理论上探讨这种方法,并了解其具体工作原理。

关于图像修复


重建图像中缺失的区域,使得观众不能辨别出哪些区域是否被修复,称为图像修复。这种方法通常用于删除图片中不需要的内容,或者还原老照片的受损部分。

 

图像修复是一种有数百年历史的技术,是由人类艺术家手工完成的。它涉及填补艺术品的受损、变质或缺失区域,从而创造一幅完整的图像。油画或丙烯酸颜料、化学照片版画、雕塑、数字照片和视频都是可以用于这种方法的物理和数字艺术载体的例子。要解决图像修复问题,逼真地填补缺失的部分,就需要“理解”自然图像的大尺度结构,并对其进行图像合成。


近年来,学者们提出了各种自动化的修复方法。除了图像之外,这些算法中大多数都需要一个蒙版来显示修复区域作为输入。这个主题在深度学习出现之前就已经被研究过,近年来由于深入的、广泛的神经网络以及对抗学习的应用,发展加快了。

 

修复系统通常在一个庞大的自动生成的数据集上进行训练,该数据集通过随机掩蔽真实图像建立。复杂的两阶段模型结合中间预测,如经常被使用的平滑图像、边缘和图像分割。

LaMa 是如何解决这个问题的?

 

这种修复网络是基于最近发展起来的快速傅立叶卷积(Fast Fourier Convolutions,FFC)。即使在网络的早期阶段,FFC 也允许一个横跨整个图像的感受野。


研究人员表示,FFC 的这一特性提高了感知质量和网络参数效率。有趣的是,FFC 的归纳偏好使得网络能够得到高分辨率,这在训练期间是不存在的。这一发现具有重要的实际意义,因为它减少了所需的训练数据量和计算量。

 

它还采用了感知损失,这是基于一个具有较大感受野的语义分割网络。这是基于一个发现,一个不足的感受野影响着修复网络和知觉损失。这种损失支持全局结构和形状的一致性。

 

一种积极的训练蒙版生成技术,可以利用前两个组成部分的高感受野的潜力。这种方法生成了大量的、庞大的蒙版,使得网络能够充分利用模型和损失函数的高感受野。

 

所有这些促成了大蒙版修复(LaMa),即一种划时代意义的单阶段图像修复技术。高感受野架构 (i) 具有高感受野损失函数 (ii) 和激进的训练掩模生成算法 LaMa (iii) 的核心组成部分。我们将 LaMa 和目前的基准进行了严格的对比,并且对每一个建议组成部分的效果进行了评估。



大蒙版修复方案如上图所示(LaMa)。可以看出,LaMa 是基于一种前馈 ResNet 类修复网络,该网络采用了以下技术:最近提出的快速傅立叶卷积 (FFC),一个结合了对抗性损失和高感受野感知损失的多分量损失,以及一个训练时间较长的蒙版生成过程。

实施 LaMa

 

在本节中,我们将了解 LaMa 的官方实现,以及它是怎样有效地掩蔽用户标记的对象的。

 

让我们通过安装并导入所有的依赖关系来创建环境。

 

# Cloning the repo!git clone https://github.com/saic-mdal/lama.git # installing the dependencies!pip install -r lama/requirements.txt --quiet!pip install wget --quiet # change the directory% cd /content/lama # Download the model!curl -L $(yadisk-direct https://disk.yandex.ru/d/ouP6l8VJ0HpMZg) -o big-lama.zip!unzip big-lama.zip # Importing dependenciesimport base64, osfrom IPython.display import HTML, Imagefrom google.colab.output import eval_jsfrom base64 import b64decodeimport matplotlib.pyplot as pltimport numpy as npimport wgetfrom shutil import copyfileimport shutil
复制代码

 

为了方便用户在给定的图像中掩蔽所想掩蔽的对象,我们需要编写 HTML 代码。

 


现在,我们将上传我们想要掩盖其中的对象的图片,为其设置为 fname=None,蒙版将掩盖该对象。

 

if fname is None:  from google.colab import files  files = files.upload()  fname = list(files.keys())[0]else:  fname = wget.download(fname) shutil.rmtree('./data_for_prediction', ignore_errors=True)! mkdir data_for_prediction copyfile(fname, f'./data_for_prediction/{fname}')os.remove(fname)fname = f'./data_for_prediction/{fname}' image64 = base64.b64encode(open(fname, 'rb').read())image64 = image64.decode('utf-8') print(f'Will use {fname} for inpainting')img = np.array(plt.imread(f'{fname}')[:,:,:3]) draw(image64, filename=f"./{fname.split('.')[1]}_mask.png", w=img.shape[1], h=img.shape[0], line_width=0.04*img.shape[1])
复制代码

 


现在,我们将掩蔽图像中的鹿,就像我们通常在 Paint 应用程序中做的那样。

 


下面我们可以看到该模型是如何将被掩蔽的图像与原始图像进行卷积。

 


现在我们将进行推理。

 

print('Run inpainting')if '.jpeg' in fname:  !PYTHONPATH=. TORCH_HOME=$(pwd) python3 bin/predict.py model.path=$(pwd)/big-lama indir=$(pwd)/data_for_prediction outdir=/content/output dataset.img_suffix=.jpeg > /dev/nullelif '.jpg' in fname:  !PYTHONPATH=. TORCH_HOME=$(pwd) python3 bin/predict.py model.path=$(pwd)/big-lama indir=$(pwd)/data_for_prediction outdir=/content/output  dataset.img_suffix=.jpg > /dev/nullelif '.png' in fname:  !PYTHONPATH=. TORCH_HOME=$(pwd) python3 bin/predict.py model.path=$(pwd)/big-lama indir=$(pwd)/data_for_prediction outdir=/content/output  dataset.img_suffix=.png > /dev/nullelse:  print(f'Error: unknown suffix .{fname.split(".")[-1]} use [.png, .jpeg, .jpg]') plt.rcParams['figure.dpi'] = 200plt.imshow(plt.imread(f"/content/output/{fname.split('.')[1].split('/')[2]}_mask.png"))_=plt.axis('off')_=plt.title('inpainting result')plt.show()fname = None
复制代码

 

下面是修复后的图像:

 


真是令人振奋的结果。

结语

 

我们在本文中讨论了一个基本的、单阶段的解决方案的用法,用于大部分掩蔽部分的修复。我们认为,只要有合适的架构、损失函数和蒙版生成方法,这样的方法将会极具竞争力,从而促进图像修复技术的发展。特别是当涉及重复性像素时,这种方法能取得很好的效果。我建议大家用自己的照片多做实验,或者也可以在论文中找到更多的信息。

参考文献

 

 

作者介绍:

 

Vijaysinh Lendave,机器学习和深度学习的爱好者。熟练掌握机器学习算法,数据操作,处理和可视化,模型构建。

 

原文链接:

 

https://analyticsindiamag.com/how-to-hide-objects-in-images-using-large-mask-inpainting-lama/

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2022-03-03 15:242162

评论

发布
暂无评论
发现更多内容

Topaz Video AI for Mac:视频增强和修复工具

彩云

Topaz Video AI 视频增强修复工具

语音识别技术在智能客服领域的应用与挑战

来自四九城儿

1024程序员节,飞桨星河社区开发者们一起闯关升级、玩转Prompt应用赢大奖~

飞桨PaddlePaddle

飞桨 大模型 Prompt 一言插件

Mac电脑专业思维导图软件 ConceptDraw MINDMAP最新激活版

胖墩儿不胖y

Mac软件 思维导图软件

iStatistica Pro 5 for Mac(系统活动监控工具)

展初云

Mac Mac软件

故障解析丨Clone节点导致主从故障

GreatSQL

与创新者同行,Doris Summit Asia 2023 线下技术峰会圆满落幕!

SelectDB

数据库 大数据 数据分析 实时数仓 apache doris

ps插件:alpaca增效工具 v2.8.1 中文版

彩云

ps插件 Alpaca插件

大模型训练助力获取高精度CV模型

百度开发者中心

自然语言 大模型

火山引擎 LAS Spark 升级:揭秘 Bucket 优化技术

字节跳动数据平台

数据库 大数据 火山引擎 企业号10月PK榜 Spark Bucket

概念回顾:负载均衡、四层负载均衡、七层负载均衡

NGINX开源社区

负载均衡 四层负载均衡 七层负载均衡

为何在中国 Navicat 远比 DBeaver 流行

Bytebase

数据库 sql DevOps navicat Dbeaver

ConceptDraw PROJECT 14 for Mac(项目管理软件)

展初云

项目管理 Mac软件

VideoProc Converter 4K for mac(视频转换软件)

展初云

Mac 格式转换 Mac软件 视频格式

「我在淘天做技术」双11背后的营销技术体系

阿里技术

营销 淘天 营销技术

Mac系统设置维护工具TinkerTool System最新激活版

mac大玩家j

系统维护 Mac软件 系统维护软件

After Effects 2024 for Mac(视频特效制作软件) v24.0.1.2完整激活版

mac

苹果mac Windows软件 视频特效软件 After Effects 2024 AE2024

Vuepress 三分钟搭建一个精美的文档或博客

凌览

Vue 博客 vuepress

3种方法,用Java找出两个List中的重复元素

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟

语音识别技术在移动设备上的应用与优化

来自四九城儿

2023平台工程崭露头角,AI 带来新机遇与挑战

SEAL安全

AI 平台工程 企业号10月PK榜

安全攻防实战丨如何预防利用中间人攻击进行小程序刷分

华为云开发者联盟

网络安全 安全 华为云 系统安全 华为云开发者联盟

18万奖金!开放原子开源大赛OpenCloudOS赛题征集开启

开放原子开源基金会

开源 大赛

【万字长文】基于阿里云PAI平台搭建知识库检索增强的大模型对话系统

阿里云大数据AI技术

人工智能

Khronos: 面向万亿规模时间线的性能监控引擎建设实践

阿里技术

性能监控 Khronos 时序数据管理

大模型训练中CPU与GPU使用率的优化策略

百度开发者中心

训练 大模型

基于大模型训练的中文自然语言处理平台

百度开发者中心

自然语言处理 模型训练 大模型

如何使用大蒙版修复 LaMa 隐藏图像中的对象?_文化 & 方法_Vijaysinh Lendave_InfoQ精选文章