社区供稿 | AIGC图像分辨率太低?快来试试像素感知扩散超分模型,你想要的细节都在这里!

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 本文介绍了一种全新的基于SD生成先验的图像超分辨率和修复算法,在多个任务上都有着SOTA的表现。

论文&代码

论文链接

https://arxiv.org/abs/2308.14469?spm=a2c6h.12873639.article-detail.7.46318554X4fIr5&file=2308.14469

代码链接

PASD_image_super_resolutions

https://www.modelscope.cn/models/damo/PASD_image_super_resolutions/summary

RealESRGAN图像超分辨率-x2

https://www.modelscope.cn/models/bubbliiiing/cv_rrdb_image-super-resolution_x2/summary

GitHub:

https://github.com/yangxy/PASD?spm=a2c6h.12873639.article-detail.9.46318554X4fIr5

背景介绍

随着大模型,特别是以文生图、ChatGPT为代表的AIGC大模型的快速发展,人工智能进入到发展的新时代和快车道。

以文生图为例,基于大数据大模型训练的模型展示出惊人的生成能力,能够根据文本prompt输出逼真的自然图像,达到以假乱真的程度。创业公司StabilityAI基于latent diffusion框架训练并开源了Stable Diffusion(SD)文生图预训练模型,给普通大众接触和使用大模型的机会,其优越的性能也带来了学术研究和开源社区的热潮,在包括可控生成、个性化定义、图像编辑等等下游任务中都得到了广泛的应用和深刻的影响。

本文着眼于底层视觉任务中的超分辨率与修复算法,这类任务需要特别倚重模型的生成能力以恢复栩栩如生、真实感的纹理细节,而这正是SD这一类的生成模型所擅长的,因此将SD应用到超分辨率任务正在成为一个研究热点,已经有包括LDM、StableSR等工作涌现,本文介绍了一种全新的基于SD生成先验的图像超分辨率和修复算法,在多个任务上都有着SOTA的表现。

效果展示

image.png


image.png

研究基础

在介绍图像超分辨率与修复之前,我们先回顾一下基于SD的可控图像翻译任务 (Image-to-Image Translation),即给定一张控制图像如canny、pose、depth等生成出符合控制图像结构的结果。

大规模文生图模型如SD我们可以理解为具备了生成自然界任意图像的能力,那么可控图像翻译任务本质上就是要在SD的潜空间中找到符合控制图像的结果,所以代表性工作如ControlNet、T2I-Adapter等都是通过引入额外的分支网络,将控制条件引入到SD主网络中,实现其潜能的激发。

超分辨率任务和图像翻译本质上是一样的,都是Image-to-Image的mapping,但不同的是,超分辨率任务的控制条件是一张低分辨率的图像,期待输出的结果需要与这张低分辨率图像做到像素层面上的对应,因此是一种更强约束的图像翻译。考虑到这一点,我们可以从前人的工作如ControlNet中得到启发。一个初步的想法就是直接拿ControlNet来做超分,但遗憾的是,实验发现,用ControlNet做超分,往往做不到像素级的精确控制,会出现输出高清图与输入低清图存在语义结构上差异,如下图所示:

image.png

这主要是因为ControlNet只采用了加的方式传入控制条件信息,而这种方式的控制相对较弱,达不到像素级的感知。

方法介绍

PACA模块

所以我们核心要解决的问题就是如何强化SD对像素级控制信息的感知。我们设计的主要框架图如下:

image.png

与ControlNet采用的简单的加的方式不同,我们引入特别的Pixel-Aware Cross Attention (PACA) 模块来强化像素级信息的传输,其形式与经典的cross attention类似:

image.png

其中Q的来源是SD得到的特征x,而Q和V则是来源于类ControlNet分支网络得到的特征y。这里的y与x有着完全相同的size,我们会把y映射成长度为h*w的embedding。这里的长度h*w蕴含了像素级的信息,因为类ControlNet分支没有使用VAE中的encoder,我们认为y依然保留着控制图像原始的像素信息。正因为此,我们认为PACA强化了像素级信息的感知能力。

降质去除模块

特别的对于真实超分场景,因为输入低清图像往往存在着各类的降质因素,而我们希望基于SD的模块专注于生成能力,所以引入了一个前置的Degradation Removal模块来对真实降质图像做一个简单的去degradations的操作,我们的实验也发现这样的结构有利于改善真实超分的效果。

High-Level信息

为了进一步的增强超分和修复的效果,我们实验发现high-level的语义信息往往对结果有正向的助益,所以我们引入分类、检测、图像打标等网络来提供额外的语义信息,并将这些信息结构化整理成文本prompt输入到SD中。同时,根据Classier-free Guidance理论,我们引入一些负向prompt包括noisy、blurry、lowres等,实验也表明这些信息的因素对结果也有帮助。

实验结果

图像超分辨率

我们在多个合成和采集的benchmark上验证了我们的算法,在多项指标上有着SOTA的表现:

image.png

在视觉对比实验中也有类似的发现:

image.png

自定义风格化

除了超分辨和修复任务之外,我们还发现,通过切换基模,我们的算法能够方便的实现任意的风格变换:

image.png

这本质上是把Image-to-Image mapping与stylization的生成能力分开,我们引入的分支网络解决pixel-wise的image-to-image mapping,而基模解决stylization的生成。这打开了图像风格化的一个全新思路。

图像上色

因为我们提出的算法本质上是一个Pixel-Aware的图像翻译,因此它适合于任意的相关任务,包括图像上色等。我们也在图像上色任务中进行了训练,初步的实验也显示了优于SOTA的效果:

image.png

参考文献

Robin Rombach and Andreas Blattmann and Dominik Lorenz and Patrick Esser and Björn Ommer. High-Resolution Image Synthesis with Latent Diffusion Models. Arxiv. 2021.

Lvmin Zhang and Maneesh Agrawala. Adding Conditional Control to Text-to-Image Diffusion Models. Arxiv. 2023.

Chong Mou, Xintao Wang, Liangbin Xie, Yanze Wu, Jian Zhang, Zhongang Qi, Ying Shan, Xiaohu Qie. T2I-Adapter: Learning Adapters to Dig out More Controllable Ability for Text-to-Image Diffusion Models. Arxiv. 2023.

Wang, Jianyi and Yue, Zongsheng and Zhou, Shangchen and Chan, Kelvin CK and Loy, Chen Change. Exploiting Diffusion Prior for Real-World Image Super-Resolution. Arxiv. 2023.

魔搭实践体验

目前,PASD图像修复算法主要包括两个版本模型,其中v1版本有更强的生成能力,v2版本对图像的保真度会更好一点。这两个系列模型现都已在ModelScope社区开源:

PASD_image_super_resolutions:https://www.modelscope.cn/models/damo/PASD_image_super_resolutions/summary

PASD_v2_image_super_resolutions

https://www.modelscope.cn/models/damo/PASD_v2_image_super_resolutions/summary

服务器连接与环境准备

1、进入ModelScope首页:modelscope.cn,进入我的Notebook

image.png

2、选择GPU环境,进入PAI-DSW在线开发环境

image.png

3、新建Notebook

image.png


模型下载

PASD_image_super_resolutions

from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('damo/PASD_image_super_resolutions', revision='v1.0.0')

PASD_v2_image_super_resolutions

from modelscope.hub.snapshot_download import snapshot_downloadmodel_dir = snapshot_download('damo/PASD_v2_image_super_resolutions', revision='v1.0.0')

模型推理

实验环境准备

pip install diffusers==0.21.2

PASD v1的推理代码

import cv2
import torch
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
input_location = 'https://modelscope-open.oss-cn-hangzhou.aliyuncs.com/resources/woman.png'
prompt = ''
output_image_path = 'result.png'
input = {
    'image': input_location,
    'prompt': prompt,
    'upscale': 2,
    'fidelity_scale_fg': 1.0,
    'fidelity_scale_bg': 1.0
}
pasd = pipeline(Tasks.image_super_resolution_pasd, model='damo/PASD_image_super_resolutions', version='pasd')
output = pasd(input)[OutputKeys.OUTPUT_IMG]
cv2.imwrite(output_image_path, output)
print('pipeline: the output image path is {}'.format(output_image_path))

PASD v2的推理代码

import cv2
import torch
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
input_location = 'https://modelscope-open.oss-cn-hangzhou.aliyuncs.com/resources/woman.png'
prompt = ''
output_image_path = 'result.png'
input = {
    'image': input_location,
    'prompt': prompt,
    'upscale': 2,
    'fidelity_scale_fg': 1.0,
    'fidelity_scale_bg': 1.0
}
pasd = pipeline(Tasks.image_super_resolution_pasd, model='damo/PASD_v2_image_super_resolutions', version='pasd_v2')
output = pasd(input)[OutputKeys.OUTPUT_IMG]
cv2.imwrite(output_image_path, output)
print('pipeline: the output image path is {}'.format(output_image_path))

用户可以设置合适的prompt用来描述图片中的内容来得到更理想的效果。这也可以通过调用modelscope上图像描述模型来实现,推荐工具:https://www.modelscope.cn/models/damo/ofa_image-caption_coco_large_en/summary

点击直达魔搭开源模型地址

https://www.modelscope.cn/models/damo/PASD_image_super_resolutions/summary

相关文章
|
5月前
|
机器学习/深度学习 数据采集 自然语言处理
|
3月前
|
JSON Serverless 数据格式
函数计算生成冰冻风格的AIGC图像
【9月更文挑战第05天】
56 3
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC-Transformer 模型
8月更文挑战第6天
|
5月前
|
弹性计算 人工智能 自然语言处理
通义万相AIGC快速生成图像体验测评
通义万相AI绘画创作部署与体验。
|
5月前
|
自然语言处理
AIGC使用问题之GPT-1如何优化目标函数,如何做模型微调
AIGC使用问题之GPT-1如何优化目标函数,如何做模型微调
|
5月前
|
弹性计算 人工智能 自然语言处理
通义万相AIGC快速生成图像体验测评
通义万相AI绘画创作部署与体验。
|
5月前
|
机器学习/深度学习 运维 算法
「AIGC算法」K-means聚类模型
**K-means聚类模型概览:** - 是无监督学习算法,用于数据集自动分组。 - 算法步骤:初始化质心,分配数据点,更新质心,迭代直至收敛。 - 关键点包括K的选择、初始化方法、收敛性和性能度量。 - 优点是简单快速,适合大样本,但对初始点敏感,需预设K值,且仅适于球形簇。 - 应用场景包括图像分割、市场分析、异常检测等。 - 示例展示了使用scikit-learn对Iris数据集和自定义CSV数据进行聚类。
65 0
「AIGC算法」K-means聚类模型
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC领域中的模型
7月更文挑战第6天
|
5月前
|
机器学习/深度学习 人工智能 大数据
AIGC使用问题之多模态大模型如何升级AIGC的内容创作能力
AIGC使用问题之多模态大模型如何升级AIGC的内容创作能力
|
5月前
|
人工智能
AIGC使用问题之视觉大模型如何提高AIGC的感知能力
AIGC使用问题之视觉大模型如何提高AIGC的感知能力

热门文章

最新文章