当前位置:   article > 正文

使用Stable Diffusion和PyTorch创建艺术二维码_stable diffusion 二维码

stable diffusion 二维码

本文将介绍如何使用Stable Diffusion和PyTorch创建AI生成的艺术二维码。

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

图片

简介:

在本文中将介绍如何利用Stable Diffusion和PyTorch的能力来创建AI生成的QR码艺术。通过将这些技术相结合,可以生成独特的、具有视觉吸引力的艺术作品,其中包含QR码,为艺术作品增添了互动元素。

图片

1.了解Stable Diffusion和PyTorch:

稳定扩散(Stable Diffusion)是一种用于图像处理和计算机视觉的技术,可对图像进行可控转换。另一方面,PyTorch是一种流行的深度学习框架,提供了搭建和训练神经网络的工具。通过结合这两项技术,可以创建一个强大的管道,用于生成AI艺术作品。

2.安装所需的软件包:

为了开始工作,需要安装必要的软件包。这些软件包对于处理二维码和图像处理至关重要。

pip -q install diffusers transformers accelerate torch xformers qrcode

同时还需要支持Nvidia GPU的系统。如果正在使用Google Colab,可以将TPU设置为运行时。它将为进程启用Nvidia GPU。可以在google colab中使用以下命令来检查GPU是否启用。

!nvidia-smi

用户将得到如下输出:

  1. +-----------------------------------------------------------------------------+
  2. | NVIDIA-SMI 525.85.12 Driver Version: 525.85.12 CUDA Version: 12.0 |
  3. |-------------------------------+----------------------+----------------------+
  4. | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
  5. | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
  6. | | | MIG M. |
  7. |===============================+======================+======================|
  8. 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 |
  9. | N/61C P8 10/ 70W | 0MiB / 15360MiB | 0Default |
  10. | | | N/A |
  11. +-------------------------------+----------------------+----------------------+
  12. +-----------------------------------------------------------------------------+
  13. | Processes: |
  14. | GPU GI CI PID Type Process name GPU Memory |
  15. | ID ID Usage |
  16. |=============================================================================|
  17. No running processes found |
  18. +-----------------------------------------------------------------------------

3.导入库

  1. import torch
  2. from PIL import Image
  3. import qrcode
  4. from pathlib import Path
  5. from multiprocessing import cpu_count
  6. import requests
  7. import io
  8. import os
  9. from PIL import Image
  1. from diffusers import (
  2.   StableDiffusionPipeline,
  3.   StableDiffusionControlNetImg2ImgPipeline,
  4.   ControlNetModel,
  5.   DDIMScheduler,
  6.   DPMSolverMultistepScheduler,
  7.   DEISMultistepScheduler,
  8.   HeunDiscreteScheduler,
  9.   EulerDiscreteScheduler,
  10.   )

4.从链接生成QR码:

通过使用qrcode软件包并指定所需的参数(例如纠错和方框大小),可以创建编码特定信息的QR码。

  1. qrcode_generator = qrcode.QRCode(
  2.   version=1,
  3.   error_correction=qrcode.ERROR_CORRECT_H,
  4.   box_size=10,
  5.   border=4,
  6.   )

5.创建ControlNet对象,使用预训练模型

  1. controlnet = ControlNetModel.from_pretrained(
  2.   "DionTimmer/controlnet_qrcode-control_v1p_sd15", torch_dtype=torch.float16
  3.   )

6.创建稳定的扩散管道

  1. pipe = StableDiffusionControlNetImg2ImgPipeline.from_pretrained(
  2.   "runwayml/stable-diffusion-v1-5",
  3.   controlnet=controlnet,
  4.   safety_checker=None,
  5.   torch_dtype=torch.float16,
  6.   ).to("cuda")
pipe.enable_xformers_memory_efficient_attention()

7.用于调整图像大小的附加功能

  1. def resize_for_condition_image(input_image: Image.Image, resolution: int):
  2.   input_image = input_image.convert("RGB")
  3.   W, H = input_image.size
  4.   k = float(resolution) / min(H, W)
  5.   H *= k
  6.   W *= k
  7.   H = int(round(H / 64.0)) * 64
  8.   W = int(round(W / 64.0)) * 64
  9.   img = input_image.resize((W, H), resample=Image.LANCZOS)
  10.   return img

8.Sampler的字典

  1. SAMPLER_MAP = {
  2. "DPM++ Karras SDE": lambda config: DPMSolverMultistepScheduler.from_config(config
  3. "DPM++ Karras": lambda config: DPMSolverMultistepScheduler.from_config(config, use
  4. "Heun": lambda config: HeunDiscreteScheduler.from_config(config),
  5. "Euler": lambda config: EulerDiscreteScheduler.from_config(config),
  6. "DDIM": lambda config: DDIMScheduler.from_config(config),
  7. "DEIS": lambda config: DEISMultistepScheduler.from_config(config),
  8. }
pipe.scheduler = SAMPLER_MAP[sampler](pipe.scheduler.config)

9.试验不同参数:

为了达到理想的艺术效果,可以尝试使用不同的参数,例如扩散强度、推理步数和引导尺度。这些参数可对最终输出产生重大影响,并允许进行创意性探索。

  1. qr_code_content: str = "https://www.linkedin.com/in/zeel-sheladiya-772513176/"
  2. prompt: str = "A beautiful nature and river surrounded by the flamigos"
  3. negative_prompt: str = "ugly, disfigured, low quality, blurry, nsfw"
  4. guidance_scale: float = 7.5
  5. controlnet_conditioning_scale: float = 1.3
  6. strength: float = 0.9
  7. seed: int = 5392011833
  8. init_image: Image.Image | None = None
  9. qrcode_image: Image.Image | None = None
  10. use_qr_code_as_init_image = True
  11. sampler = "DPM++ Karras SDE"
generator = torch.manual_seed(seed) if seed != -1 else torch.Generator()
  1. if qr_code_content != "" or qrcode_image.size == (11):
  2.   print("Generating QR Code from content")
  3.   qr = qrcode.QRCode(
  4.     version=1,
  5.     error_correction=qrcode.constants.ERROR_CORRECT_H,
  6.     box_size=10,
  7.     border=4,
  8.     )
  9.   qr.add_data(qr_code_content)
  10.   qr.make(fit=True)
  11.   qrcode_image = qr.make_image(fill_color="black", back_color="white")
  12.   qrcode_image = resize_for_condition_image(qrcode_image, 768)
  13. else:
  14.   print("Using QR Code Image")
  15.   qrcode_image = resize_for_condition_image(qrcode_image, 768)

10.从链接生成QR码

init_image = qrcode_image

11.创建AI生成的QR码艺术

  1. out = pipe(
  2.   prompt=prompt,
  3.   negative_prompt=negative_prompt,
  4.   image=qrcode_image,
  5.   control_image=qrcode_image, # 类型:忽略
  6.   width=768, # 类型:忽略
  7.   height=768, # 类型:忽略
  8.   guidance_scale=float(guidance_scale),
  9.   controlnet_conditioning_scale=float(controlnet_conditioning_scale), # type: i
  10.   generator=generator,
  11.   strength=float(strength),
  12.   num_inference_steps=40,

12.输出:

out.images[0].show()

图片

结论:

通过结合Stable Diffusion、PyTorch和QR码,可以开启AI生成艺术的新领域。通过进一步的实验和探索,艺术家和开发人员可以突破创造力的界限,创造出引人入胜的互动艺术作品,从而吸引和启发观众。二维码的使用为艺术作品增添了互动元素,使观众可以通过扫描二维码获取更多信息或内容。

总之,Stable Diffusion、PyTorch和QR码的结合为生成AI艺术品提供了一个强大的流程。通过利用这些技术,艺术家和开发人员可以创造出独特的、具有视觉吸引力的艺术作品,并将互动元素融入其中。随着进一步的实验和探索,AI生成艺术的可能性是无限的,可以期待在未来看到更多创新和迷人的艺术作品。

推荐书单

IT BOOK 多得(点击查看5折活动书单)icon-default.png?t=N7T8https://u.jd.com/psx2y1M

PyTorch深度学习简明实战》

本书针对深度学习及开源框架——PyTorch,采用简明的语言进行知识的讲解,注重实战。全书分为4篇,共19章。深度学习基础篇(第1章~第6章)包括PyTorch简介与安装、机器学习基础与线性回归、张量与数据类型、分类问题与多层感知器、多层感知器模型与模型训练、梯度下降法、反向传播算法与内置优化器。计算机视觉篇(第7章~第14章)包括计算机视觉与卷积神经网络、卷积入门实例、图像读取与模型保存、多分类问题与卷积模型的优化、迁移学习与数据增强、经典网络模型与特征提取、图像定位基础、图像语义分割。自然语言处理和序列篇(第15章~第17章)包括文本分类与词嵌入、循环神经网络与一维卷积神经网络、序列预测实例。生成对抗网络和目标检测篇(第18章~第19章)包括生成对抗网络、目标检测。

本书适合人工智能行业的软件工程师、对人工智能感兴趣的学生学习,同时也可作为深度学习的培训教程。

《PyTorch深度学习简明实战》icon-default.png?t=N7T8https://item.jd.com/13512395.html

图片

精彩回顾

《活用PyTorch,图像分类实战指南》

《使用PyTorch训练一个LSTM预测模型》

《逐步拆解学习,从简单线性回归到TensorFlow深度学习》

《手把手教你升级PyTorch 2.0和CUDA》

《使用TensorFlow训练深度学习模型实战指南(下)》

《使用TensorFlow训练深度学习模型实战指南(上)》

微信搜索关注《Python学研大本营》,加入读者群

访问【IT今日热榜】,发现每日技术热点

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/488628
推荐阅读
相关标签
  

闽ICP备14008679号