论文阅读:Feature Refinement to Improve High Resolution Image Inpainting

项目地址:https://github.com/geomagical/lama-with-refiner
论文地址:https://arxiv.org/abs/2109.07161
发表时间:2022年6月29日
项目体验地址:https://colab.research.google.com/github/advimman/lama/blob/master/colab/LaMa_inpainting.ipynb#scrollTo=-VZWySTMeGDM
在这里插入图片描述

解决了在高分辨率下工作的神经网络的非绘制质量的下降问题。inpainting网络往往无法在分辨率高于其训练集的情况下生成全局相干结构。这部分归因于接受域,尽管图像分辨率保持静态。虽然在绘制之前缩小图像会产生相干的结构,但它本质上缺乏更高分辨率的细节。为了充分利用这两个世界,我们通过最小化推理时的多尺度一致性损失来优化网络的中间特征图。这种运行时优化改进了的绘制结果,并建立了一种新的高分辨率的绘制状态。

本文主要是提出一种图像修复效果不断精细化的方法(与模型结构无关),其前置条件时低分辨率修复效果比高分辨效果好,然后基于低分辨率的预测中的可靠部分对模型在推理时进行训练,从而提升高分辨率的预测结果。本文提出的方法与personal-sam存在一定类似,即在运行时进行模型参数的迭代更新

1. Introduction

Image inpainting是填充图像[19]中缺失的像素或区域的任务。该任务可应用于图像恢复、图像编辑、增强现实和减弱现实[12] [4]。人们已经提出了几种方法来解决这个问题。[6,17]使用梯度引导的来自相邻像素的颜色扩散来绘制缺失区域。[5,7]是来自满足定义明确的相似性标准的图像的未掩蔽区域的样本补丁。基于patch的解决方案被广泛应用于图像编辑工具,如Gimp [2]和ps[1]是填充图像[19]中缺失的像素或区域的任务。该任务可应用于图像恢复、图像编辑、增强现实和减弱现实[12] [4]。人们已经提出了几种方法来解决这个问题。[6,17]使用梯度引导的来自相邻像素的颜色扩散来绘制缺失区域。[5,7]是来自满足定义明确的相似性标准的图像的未掩蔽区域的样本补丁。基于补丁的解决方案被广泛应用于图像编辑工具,如Gimp [2]和ps[1]。

当掩蔽区域足够大,足以包含多个纹理或语义区域[20,23]时,现有的方法常常难以实现全局一致性。条件生成对抗网络(cGAN)已经被开发出来,通过一个中间的全局表示[11,14,19,20,25]来解决这个问题。即使使用cGAN,一个大的接受域对于高性能Image inpainting[16]也至关重要。人们提出了各种技术来增加有效的接受域,如傅里叶卷积[16],扩散模型[15],contextual transformations[21],和transformers[8,10]。

在这项工作中,我们专注于提高现有网络在高分辨率下的inpainting质量。在绘制一个区域时,按比例增加操作图像的大小会减少网络的可用局部上下文,从而导致非相干的结构和模糊的纹理[21]。为了解决这个问题,我们提出了一种新的从粗到细的迭代细化方法,它通过多尺度损失来优化特征图。通过使用低分辨率的预测作为指导细化过程产生详细的高分辨率的未绘制结果同时保持来自低分辨率预测的颜色和结构(图1)。不需要对入侵绘制网络进行额外的训练;在推理[13,18]期间,只有特征图被细化。
在这里插入图片描述

2. Multiscale Feature Refinement

我们的多尺度特征细化遵循一种从粗到细的方法来迭代地添加更多的预测细节,具体如图二所示。
在这里插入图片描述
构造了输入RGB图像和绘制掩模的图像金字塔,作为多推理分辨率的网络输入。最小的尺度近似等于网络的训练分辨率。我们假设该网络在训练分辨率方面表现最好,并将其作为所有的inpainting结构指导的基础。

该模型被分为“front”和“rear”部分,类似于论文[18]。通常,这些部分分别对应于网络的编码器部分和解码器部分。在最低分辨率下,我们对整个绘制模型进行一次向前传递,以获得初始绘制预测对于每个后续尺度,我们运行一个通过“front”来生成一个初始特征图z。多个特征图(例如,从跳跃连接)可以联合优化,但本文没有进行研究。

网络的后部处理z以产生一个inpainting预测。然后缩小预测范围,以匹配前一个尺度结果的分辨率。降尺度包括应用高斯滤波器,然后进行双线性插值。高斯滤波器去除高频分量,并防止在降级期间出现混叠。在掩蔽的内绘制区域之间计算一个L1损失,并通过反向传播更新z来最小化。这将优化z,以产生一个更高分辨率的预测,具有与以前的尺度相似的特征。

图3显示了一个细化如何提高预测质量的示例。高分辨率(1024px),与Big-LaMa [16]相比,本文方法在结构完成度方面有了显著的改进。与升级的低分辨率预测(512px)相比,我们的改进还包含了更多的细节。
在这里插入图片描述
算法1中描述了用于多尺度细化的Python伪代码。multiscale_inpaint函数生成图像金字塔并在多个尺度上迭代,而预测_和_细化生成每个尺度的细化预测。

def predict_and_refine(image, mask, inpainted_low_res,
model, lr=0.001, n_iters=15):
	z = model.front.forward(image, mask)
	# configure optimizer to update the featuremap
	optimizer = Adam([z], lr)
	for _ in range(n_iters):
	optimizer.zero_grad()
	inpainted = model.rear.forward(z)
	inpainted_downscaled = downscale(inpainted)
	loss = l1_over_masked_region(
	inpainted_downscaled, inpainted_low_res, mask
	)
	loss.backward()
	optimizer.step() # Updates z
	# final forward pass
	inpainted = f_rear.forward(z)
	return inpainted
	
def multiscale_inpaint(image, mask, model, smallest_scale=512):
	images, masks = build_pyramid(image, mask, smallest_scale)
	n_scales = len(images)
	# initialize with the lowest scale inpainting
	inpainted = model.forward(images[0], masks[0])
	for i in range(1, n_scales):
	image, mask = images[i], masks[i]
	inpainted_low_res = inpainted
	inpainted = predict_and_refine(
	image, mask, inpainted_low_res, model
	)
	return inpainted

3. Experiments

在我们的实验中,我们应用迭代多尺度细化到Big-LaMa[16]。用2的降比例因子来建立图像金字塔。从大lama降尺度部分的部分(见图2)的输出特性图将进行优化。该特征图的选择是基于观察到离预测层更远的特征图有更大的接受域,并且能够影响更多的输出[18]。

在每个尺度上,我们使用Adam优化器执行15次细化迭代,学习率为0.002。为了防止网络在网络已经表现良好的薄区域对低分辨率填充进行优化,我们在对已绘制区域应用L1损失之前,用15像素的圆形核侵蚀mask。

4. Results

图像修复网络通常在Places2[24]上作为基准。然而,该数据集并没有用于评估目的的高分辨率图像。相反,我们将使用来自 Unsplash-Lite数据集的图像,其中包含2.5k张高分辨率的自然主题照片[3]。我们随机抽取了1000张图片来进行评估(链接到[这里])。

每个图像都被调整大小并裁剪到1024x1024,并使用[16]中描述的方法,用薄、中、厚的笔触生成一组掩模。这些不同的掩模类型分别进行评估,以观察掩模宽度对图像inpainting质量的影响。根据最近的工作[8,16],使用FID评分[9]和LPIPS [22]来评估性能。

我们与表1和图4、5中的其他方法进行了比较。我们的方法在中和厚掩模方面的性能优于报道的最先进的绘制网络,而在薄掩模上的性能与Big-LaMa [16]类似。薄掩模的性能是相似的,因为有足够的周围上下文来完成结构。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
虽然我们的细化产生了更高的评分结果,但处理图像也需要花费更长的时间。对于每个图像,需要多次正向和反向传递。这与尺度和优化步骤的数量成比例地增加了推理时间。细化还增加了内存的使用,因为在运行时需要梯度,从而降低了GPU内存的最大分辨率。我们的方法产生了填充与更强的全局一致性和更清晰的纹理。其他的结果可以通过这个链接的视频获得。

5. Conclusion

我们提出了一种多尺度细化技术来提高神经网络在分辨率高于原生训练分辨率的图像上的嵌入性能。这种细化是网络不可知的,不需要额外的模型再训练。我们的结果表明,该技术在高分辨率的inpainting上显著优于其他最先进的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/316048.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之访问者模式【行为型模式】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某…

Redis重点总结补充

Redis重点总结 1.redis分布式锁 2.redission实现分布式锁 注意:加锁、设置过期时间等操作都是基于lua脚本完成. redisson分布式锁,实现可重入(前提是同一个线程下 3.redis主从集群 实现主从复制 ( Master-slave Replication)的工作原理 : …

Vulnhub靶机:driftingblues 1

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:driftingblues1(10.0.2.17) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entr…

redis夯实之路-主从复制详解

Redis中可以通过执行slaveof命令或者设置slaveof选项,让一个服务器区复制另一个服务器,被复制的为主服务器,复制的为从服务器。 复制 Redis中可以通过执行slaveof命令或者设置slaveof选项,让一个服务器区复制另一个服务器&#…

实录分享 | 央企大数据平台架构发展趋势与应用场景的介绍

分享嘉宾: 孟子涵-中国华能集团信息中心平台架构师 2021年华能就与Alluxio建立了合作,共同写了整个华能统一纳管的架构方案。这个方案我认为是现在我们在央企里边比较核心的一套体系,能让全集团所有我们认为重要的数字化资源实现真正的统一集…

什么是网络数据抓取?有什么好用的数据抓取工具?

一、什么是网络数据抓取 网络数据抓取(Web Scraping)是指采用技术手段从大量网页中提取结构化和非结构化信息,按照一定规则和筛选标准进行数据处理,并保存到结构化数据库中的过程。目前网络数据抓取采用的技术主要是对垂直搜索引…

U盘用完到底能不能直接拔?一篇搞懂

有没有人懂这种情况!! 传输完文件之后,觉得大功告成 以十分帅气的姿势 and 迅雷不及掩耳之势 “咻”地一下把U盘直接给……拔掉了…… 然后瞬间想起没有安全退出,陷入深深的懊悔…… (甚至还要再花时间&#xff0…

使用 EmbeddingBag 和 Embedding 完成词嵌入

🍨 本文为[🔗365天深度学习训练营学习记录博客\n🍦 参考文章:365天深度学习训练营\n🍖 原作者:[K同学啊 | 接辅导、项目定制]\n🚀 文章来源:[K同学的学习圈子](https://www.yuque.co…

【开源】基于JAVA语言的民宿预定管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用例设计2.2 功能设计2.2.1 租客角色2.2.2 房主角色2.2.3 系统管理员角色 三、系统展示四、核心代码4.1 查询民宿4.2 新增民宿4.3 新增民宿评价4.4 查询留言4.5 新增民宿订单 五、免责说明 一、摘要 1.1 项目介绍 基于…

Sectigo有几种泛域名SSL证书买一年送一个月

Sectigo是一家知名的数字证书颁发机构,提供了很多种类型的SSL证书,可以满足不同用户的需求。其中,泛域名SSL证书是一种常见的证书类型,可以同时保护主域名以及主域名下所有子域名。今天就随SSL盾小编了解Sectigo旗下有几种泛域名S…

【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(上)

HashMap工作原理全揭秘 — 核心源码解析 知识盲点概念介绍数据结构数组链表数组VS链表哈希表不同JVM版本HashMap的展现形式 HashMap VS HashTable特性区别对比 hashcodehashCode的作用equals方法和hashcode的关系key为null怎么办执行步骤 核心参数容量探讨负载因子探讨加载因子…

JVM基础(11)——G1垃圾回收器

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

用vcpkg安装openssl

用vcpkg安装openssl 背景解决方案1 安装vcpkg1.1 下载代码组件1.1 生成vcpkg.exe1.2 安装openssl 2 配置环境变量3 重新编译运行,正常通过 背景 最近学习Rust的时候,有个依赖需要用到Openssl,但是cargo编译的时候提示如下信息: …

Unity 编辑器篇|(四)编辑器拓展GUI类 (全面总结 | 建议收藏)

目录 1. 前言2. 参数2.1 静态变量2.2 静态函数2.3 委托 3. 功能3.1 按钮:Button、RepeatButton3.2 文本:Label 、TextField 、TextArea 、PasswordField3.3 滑动条:HorizontalScrollbar 、VerticalScrollbar3.4 滑条:VerticalSlid…

【python】08.面向对象编程基础

面向对象编程基础 活在当下的程序员应该都听过"面向对象编程"一词,也经常有人问能不能用一句话解释下什么是"面向对象编程",我们先来看看比较正式的说法。 "把一组数据结构和处理它们的方法组成对象(object&#…

Spark Doris Connector 可以支持通过 Spark 读取 Doris 数据类型不兼容报错解决

1、版本介绍: doris版本: 1.2.8Spark Connector for Apache Doris 版本: spark-doris-connector-3.3_2.12-1.3.0.jar:1.3.0-SNAPSHOTspark版本:spark-3.3.1 2、Spark Doris Connector Spark Doris Connector - Apache Doris 目…

FLUKE 8588A数字多用表

181/2461/8938产品概述: 福禄克校准8588A参考万用表是世界上最稳定的数字化万用表。这款长量程高精度参考万用表专为校准实验室设计,具有出色的精度和长期稳定性,测量范围广泛,具有直观的用户界面和彩色显示屏。8588A具有超过12种…

使用Mixtral-offloading在消费级硬件上运行Mixtral-8x7B

Mixtral-8x7B是最好的开放大型语言模型(LLM)之一,但它是一个具有46.7B参数的庞大模型。即使量化为4位,该模型也无法在消费级GPU上完全加载(例如,24 GB VRAM是不够的)。 Mixtral-8x7B是混合专家(MoE)。它由8个专家子网组成,每个子…

阿尔泰科技——PXIe8912/8914/8916高速数据采集卡

阿尔泰科技PXIe8912/8914/8916高速数据采集卡是2通道同步采样数字化仪,专为输入信号高达 100M 的高频和高动态范围的信号而设计。 与Labview无缝连接,提供图形化API函数。模拟输入范围可以通过软件编程设置为1V 或者5V。配备了容量高达 2GB的板载内存。…

硬盘重新分区怎么恢复分区之前的文件?

分区是常见的故障,通常由多种原因引起。一方面,硬盘老化或者受到损坏可能会导致分区表出现问题;另一方面,用户误操作,如格式化或分区不当,也可能导致分区丢失。针对此问题,解决方法包括使用专业…