利用稳定扩散快速修复图像

news2024/11/27 19:51:59
推荐Stable Diffusion自动纹理工具: DreamTexture.js自动纹理化开发包

什么是InPainting?

图像修复是人工智能研究的一个活跃领域,人工智能已经能够提出比大多数艺术家更好的修复效果。

这是一种生成图像的方式,其中缺失的部分已被视觉和语义上合理的内容填充。它可以是相当的 对许多应用程序很有用,如广告,改善你未来的Instagram帖子,编辑和修复你的AI生成的图像,它甚至可以用来修复旧照片。 执行修复的方法有很多种,但最常见的方法是使用卷积神经网络 (CNN)。

CNN 非常适合修复,因为它可以学习图像的特征,并可以使用这些特征和 有许多不同的 CNN 架构可用于此目的。

Stable Diffusion 简介

Stable Diffusion 是一种潜在的文本到图像扩散模型,能够生成风格化和逼真的图像。它是在 LAION-5B 数据集的一个子集上预先训练的,该模型可以在家中的消费级显卡上运行,因此每个人都可以在几秒钟内创作出令人惊叹的艺术作品。

如何用稳定扩散进行修复

本教程可帮助您进行基于提示的修复,而无需使用 Stable Diffusion 和 Clipseg 绘制蒙版。在这种情况下,掩码是 二进制图像,告诉模型要绘制图像的哪一部分以及要保留哪一部分。进一步的要求是你需要一个好的GPU,但是 它在 Google Colab Tesla T4 上也能正常运行。

执行 InPainting 需要 3 个强制输入。

  1. 输入图像 URL
  2. 输入图像中要替换的部件的提示
  3. 输出提示

您可以调整某些参数

  1. 掩模精度
  2. 稳定的扩散生成强度

如果您是第一次使用 Hugging Face 🤗 的 Stable Diffusion,您需要在模型页面上接受 ToS 并从您的用户个人资料中获取您的 Token

所以让我们开始吧!

安装开源 Git 扩展以对大文件进行版本控制

! git lfs install

克隆 clipseg 存储库

! git clone https://github.com/timojl/clipseg 

从 PyPi 安装扩散器包

! pip install diffusers -q

安装更多帮助程序

! pip install transformers -q -UU ftfy gradio  

使用 pip 安装 CLIP

! pip install git+https://github.com/openai/CLIP.git -q

现在我们继续使用 Hugging Face 登录。为此,只需运行以下命令:

from huggingface_hub import notebook_login

notebook_login()

登录过程完成后,您将看到以下输出:

Login successful
Your token has been saved to /root/.huggingface/token
%cd clipseg
! ls
datasets	     metrics.py        supplementary.pdf
environment.yml      models	       Tables.ipynb
evaluation_utils.py  overview.png      training.py
example_image.jpg    Quickstart.ipynb  Visual_Feature_Engineering.ipynb
experiments	     Readme.md	       weights
general_utils.py     score.py
LICENSE		     setup.py
import torch
import requests
import cv2 
from models.clipseg import CLIPDensePredT
from PIL import Image
from torchvision import transforms
from matplotlib import pyplot as plt

from io import BytesIO

from torch import autocast
import requests
import PIL
import torch
from diffusers import StableDiffusionInpaintPipeline as StableDiffusionInpaintPipeline

加载模型

model = CLIPDensePredT(version='ViT-B/16', reduce_dim=64)
model.eval();
model.load_state_dict(torch.load('/content/clipseg/weights/rd64-uni.pth', map_location=torch.device('cuda')), strict=False);

不严格,因为我们只存储了解码器权重(不是 CLIP 权重)

device = "cuda"
pipe = StableDiffusionInpaintPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4",
    revision="fp16", 
    torch_dtype=torch.float16,
    use_auth_token=True
).to(device)

或者,您可以从外部 URL 加载图像,如下所示:

image_url = 'https://okmagazine.ge/wp-content/uploads/2021/04/00-promo-rob-pattison-1024x1024.jpg' 
input_image = Image.open(requests.get(image_url, stream=True).raw)

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    transforms.Resize((512, 512)),
])
img = transform(input_image).unsqueeze(0)

返回目录

%cd ..

转换输入的图像

input_image.convert("RGB").resize((512, 512)).save("init_image.png", "PNG")

在plt的帮助下显示图像

from matplotlib import pyplot as plt
plt.imshow(input_image, interpolation='nearest')
plt.show()

这将显示下图:

现在,我们将为掩码定义一个提示,然后进行预测,然后可视化预测:

prompts = ['shirt']
with torch.no_grad():
    preds = model(img.repeat(len(prompts),1,1,1), prompts)[0]
_, ax = plt.subplots(1, 5, figsize=(15, 4))
[a.axis('off') for a in ax.flatten()]
ax[0].imshow(input_image)
[ax[i+1].imshow(torch.sigmoid(preds[i][0])) for i in range(len(prompts))];
[ax[i+1].text(0, -15, prompts[i]) for i in range(len(prompts))];

现在我们必须将此掩码转换为二进制图像并将其保存为 PNG 文件:

filename = f"mask.png"
plt.imsave(filename,torch.sigmoid(preds[0][0]))

img2 = cv2.imread(filename)

gray_image = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

(thresh, bw_image) = cv2.threshold(gray_image, 100, 255, cv2.THRESH_BINARY)

# For debugging only:
cv2.imwrite(filename,bw_image)

# fix color format
cv2.cvtColor(bw_image, cv2.COLOR_BGR2RGB)

Image.fromarray(bw_image)

现在我们有一个看起来像这样的面具:

现在加载输入图像和创建的蒙版

init_image = Image.open('init_image.png')
mask = Image.open('mask.png')

最后是最后一步:根据您选择的提示进行修复。根据您的硬件,这将需要几秒钟的时间。

with autocast("cuda"):
    images = pipe(prompt="a yellow flowered holiday shirt", init_image=init_image, mask_image=mask, strength=0.8)["sample"]

在 Google Colab 上,您只需输入图像名称即可打印出图像:

images[0]

现在你会看到我们为其创建面具的衬衫被我们的新提示所取代!🎉

 转载:利用稳定扩散快速修复图像 (mvrlink.com)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【音视频 | Ogg】libogg库详细介绍以及使用——附带libogg库解析.opus文件的C源码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

RIP路由配置

RIP路由配置步骤与命令: 1.启用RIP路由:router rip 2.通告直连网络:network 直连网络 3.启用RIPv2版本:version 2 4.禁用自动汇总:no auto-summary 注意:静态路由通告远程网络,动态路由通告…

天空卫士在全球和中国两大报告中被Gartner列为推荐和代表性供应商

DLP连续五年被Gartner 列为推荐厂商的理由 Gartner2023年9月份发布的《Gartner全球企业数据防泄露市场指南》中,天空卫士被列为DLP领域代表供应商,包括EDLP、IDLP和云原生DLP。 这已经是天空卫士第五次入选《Gartner全球企业数据防泄露市场指南》。天空…

[极客大挑战 2019]LoveSQL 1

题目环境:判断注入类型是否为数字型注入 admin 1 回显结果 否 是否为字符型注入 admin 1 回显结果 是 判断注入手法类型 使用堆叠注入 采用密码参数进行注入 爆数据库1; show database();#回显结果 这里猜测注入语句某字段被过滤,或者是’;被过滤导致不能…

突破性的多语言代码大模型基CodeShell:北京大学与四川天府银行联合打造,引领AI编程新时代

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实…

【数据结构】归并排序 的递归实现与非递归实现

归并排序 前言一、归并排序递归实现(1)归并排序的核心思路(2)归并排序实现的核心步骤(3)归并排序码源详解(4)归并排序效率分析1)时间复杂度 O(N*logN&#xf…

[AUTOSAR][诊断管理][ECU][$85] 设置DTC功能

文章目录 一、简介功能描述应用场景服务请求请求格式请求实例关闭DTC监控(OFF)开启DTC监控(ON)服务响应正响应格式正响应实例负响应NRC支持三、 示例代码85_ctl_dtc_set.c一、简介 功能描述 根据ISO14119-1标准中所述,诊断服务85服务主要用于开启或者停止DTC状态位的更新功能…

口袋参谋:如何玩转手淘“问大家”?这招超好用!

​现在应该不会还有商家不知道,手淘“问大家”分析吧! “问大家”模块对于转化率的影响非常关键,它的影响力不亚于买家秀,以前买家下单前都会去参考买家秀,现在买家更倾向于参考“问大家”然而,真正玩转“问…

云安全—docker Deamon攻击面

0x00 前言 本篇文章主要是讲docker Deamon的原理以及docker Deamon攻击面相关的内容,属于抛砖引玉系列,如有不妥之处还请斧正。 0x01 docker Deamon 还是先来看一下docker Deamon的一些相关知识,依旧是采用问答的方式来进行。为了文章的整…

【音视频 | opus】opus编解码库(opus-1.4)详细介绍以及使用——附带解码示例代码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

自动曝光算法(第二讲)

序言 第一章说了,自动曝光算法的目的:已知当前raw图亮度、当前曝光时间、当前增益和目标亮度,当环境光发生变化的时候,是通过控制增益、曝光时间和光圈使raw图的亮度,保持在目标亮度附近。本章想讲一下目标亮度的相关…

修改c盘用户名后的注意

文章目录 修改C盘及相关配置形成原因修改用户名和文件夹名解决软件双击无法打开问题修改其它相关注册表修改环境变量的内容 修改C盘及相关配置 形成原因 曾修改过文件夹,具体哪个文件夹,待会会有所参透 由于我感觉自己的用户文件夹不是太好看&#xff…

记录--这个前端Api管理方案会更好?

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 简介 大家好,前端小白一枚,目前接触后台管理系统比较多,经常遇到不同对象的增删改查的接口,如何对Api进行一个有比较好的管理是个问题。在学习偏函数的时…

[概述] 点云滤波器

拓扑结构 点云是一种三维数据,有几种方法可以描述其空间结构,以利于展开搜索 https://blog.csdn.net/weixin_45824067/article/details/131317939 KD树 头文件:pcl/kdtree/kdtree_flann.h 函数:pcl::KdTreeFLANN 作用&#xff1a…

压缩软件 7-Zip VS WinZips?

7-zip在联想应用商店给强烈推荐? 要说它好用还行,但每次压缩都显示网络连接失败等异常广告信息。 相反好用的7-ZIP必须鼠标点击右键点击更多才能够看到,这次更新体验也太差了吧? 用户放在第一位? 要不是更新后一直推…

编译原理学习:随机生成算术表达式

最近用Python写了一个随机向右生成数学表达式的算法。如下图所示,点一下运行就能随机生成一个二叉树形式的算术表达式。这个树形图是用“graphviz”画的,完全是它自动布局画出来的,画的还挺不错的。代码在:becomequantum (becomeq…

Ubuntu 系统内核 kernel panic

Ubuntu 系统内核 kernel panic 不能进入系统:报错end kernel panic -not syncing: attemped to kill init! exit code 0x00000100 系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,选择“kernel /vmlinuz-XXXXro root…

【LeetCode:117. 填充每个节点的下一个右侧节点指针 II | DFS | BFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【强化学习】15 —— TRPO(Trust Region Policy Optimization)

文章目录 前言TRPO特点策略梯度的优化目标使用重要性采样忽略状态分布的差异约束策略的变化近似求解线性搜索算法伪代码广义优势估计代码实践离散动作空间连续动作空间 参考 前言 之前介绍的基于策略的方法包括策略梯度算法和 Actor-Critic 算法。这些方法虽然简单、直观&…

银行和金融企业为何青睐这8款项目管理工具

银行、金融行业中主流的8款项目管理系统:1.PingCode;2.Worktile;3.Microsoft Project;4.Jira by Atlassian;5.Asana;6.Trello;7.Wrike;8.Teambition。 银行和金融性质的公司在项目管…