AI 生成的二维码是一个新概念,但是我认为它很快就会成为主流。餐厅、咖啡店或零售店为什么要使用无聊的旧二维码呢?他们可以使用引人入胜、品牌鲜明、AI 生成的二维码。在本文中,我们将探讨相关技术,并分享博主本地部署 Stable Diffusion + Controlnet + Gradio 生成 AI 二维码的示例。
本文中展示的所有AI艺术二维码,均由 HY's AI Playground 的 AI QR Code Generator 生成。
AI 二维码起源
这一切始于 2023 年 6 月 5 日星期一,当时一位 Redditor分享了一堆他创建的 AI 生成的二维码图像,引起了社区的关注。reddit 上获得了 7.5K 个赞,这些图片开始在社交媒体上流传。
以下是一些二维码。它们确实有用,可以用手机摄像头扫描。
它们是使用 Stable Diffusion 和 Controlnet 创建的。Stable Diffusion 是流行的开源文本到图像生成器。ControlNet 是一个控制预训练图像扩散模型(例如稳定扩散)的神经网络。其功能是允许输入调节图像,然后可用于操纵图像生成。
基本上,它允许我们使用另一幅图像作为控制来控制输出图像。在这种情况下,我们使用 QR 码作为控制图像,并且文本到图像的生成是围绕我们的控制图像构建的。这允许创建一些非常有创意的 QR 码。
常用的 QR Code Controlnet
1. Controlnet QR Code by DionTimmer
Dion Timmer 在 HuggingFace 上创建了一个模型存储库,允许您创建自己的二维码以及开始与模型交互的源代码。在 Dion Timmer 模型中,您不仅可以使用文本提示,还可以使用另一张图片来帮助指导最终二维码的生成。这样做的好处是,您可能有一个想要合并到二维码图像中的徽标或品牌标志,而通过将二维码与您提供的图像合并,就可以实现这一点。
Dion Timmer 的 controlnet 支持SD v1.5 和 v2.1 版本:
- Stable Diffusion v1.5: https://huggingface.co/DionTimmer/controlnet_qrcode-control_v1p_sd15
- Stable Diffusion v2.1: https://huggingface.co/DionTimmer/controlnet_qrcode-control_v11p_sd21
2. ControlNet QR Pattern by Nacholmo
QR Pattern 和 QR Pattern sdxl 是由一名阿根廷大学生 Nacholmo 作为免费社区资源创建的。
- Controlnet-qr-pattern-v2: https://huggingface.co/Nacholmo/controlnet-qr-pattern-v2
- Controlnet-qr-pattern-sdxl: https://huggingface.co/Nacholmo/controlnet-qr-pattern-sdxl
3. QRCode Monster by Monster Labs
我还发现了QRCode Monster网站,上面有一些非常出色的二维码图像。他们还在HuggingFace上开源了用于生成这些二维码怪兽的初始模型。您也可以在他们的网站上生成自己的二维码怪兽。
他们在 Twitter 上有一个很棒的帖子,讲述了他们如何受到原始 Reddit 帖子的启发,并开始训练自己的控制网络来生成看起来很怪异的二维码。他们模型的第一个版本的源代码可以在HuggingFace上开源,这意味着你可以开始使用它来生成你自己的怪异二维码。
本地部署 Stable Diffusion + Controlnet + Gradio 生成 AI 二维码
本地部署主要的先决条件是需要有性能合适的独立显卡,否则推理的过程可能会很慢甚至失败。
软件上我主要参考了 Huggingface 上的开源项目 QR-code-AI-art-generator。此项目由 Dion Timmer 创建,实现了 AI QR Code 生成的基本功能,界面效果如下。它的基础模型集成了 stable-diffusion-v1-5,controlnet 则是 Dion Timmer 自己开发的 controlnet_qrcode-control_v1p_sd15。
我则在此项目源代码的基础上增加了如下的功能:
- 增加了多种 controlnet的支持。目前可支持:controlnet_qrcode-control_v1p_sd15,controlnet-qr-pattern-v2 和 control_v1p_sd15_qrcode_monster
- 用户界面更新以选择想用的 controlnet
- 增加了多种 base model 的支持。目前可支持:stable-diffusion-v1-5,MeinaMix_V11,RealCartoon3D-V15。(目前还是hard code,尚不支持用户界面直接选择)
- Step-by-step 用户指南更新
更新后的使用界面如下。
为方面管理和更新,进行了容器化部署。参考 Dockerfile 如下。
FROM ubuntu:22.04
LABEL maintainer="HY's Blog"
# 使用构建参数设置环境变量
ARG http_proxy
ARG https_proxy
# 设置环境变量
ENV http_proxy=$http_proxy
ENV https_proxy=$https_proxy
ENV DEBIAN_FRONTEND=noninteractive
RUN --mount=type=cache,target=/var/cache/apt \
set -eu \
&& apt update \
&& apt upgrade -y \
&& apt install -y software-properties-common \
&& add-apt-repository ppa:deadsnakes/ppa \
&& apt install -y \
python3 pip \
&& rm -rf /usr/lib64/python3.11/EXTERNALLY-MANAGED
RUN --mount=type=cache,target=/root/.cache/pip \
pip install diffusers transformers accelerate torch xformers gradio Pillow qrcode
RUN mkdir -p /home/qr-ai-generator
COPY ./*.py /home/qr-ai-generator
COPY ./entrypoint.sh /home/qr-ai-generator
RUN chmod +x /home/qr-ai-generator/entrypoint.sh
# 清除环境变量
ENV http_proxy=""
ENV https_proxy=""
USER root
WORKDIR /home/qr-ai-generator
EXPOSE 7862
ENV CLI_ARGS=""
CMD ["/home/qr-ai-generator/entrypoint.sh"]
启动容器的 docker-compose.yaml 示例如下,视实际情况更改。
version: '3.8'
services:
qr-ai-generator:
image: qr-ai-generator:v0.00 # please change the image name and tag base your environment
container_name: qr-ai-generator
environment:
- http_proxy=http://192.168.3.200:7890 # change to your proxy config
- https_proxy=http://192.168.3.200:7890
- ftp_proxy=http://192.168.3.200:7890
- no_proxy=localhost,127.0.0.1,192.168.3.0/24
volumes:
- /mnt/dev/myprojects/QR-code-AI-art-generator:/home/qr-ai-generator
- /mnt/dev/myprojects/model-resources:/home/qr-ai-generator/model-resources # put model files in this folder and map into container
ports:
- "7860:7860"
shm_size: 16G
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: "all"
capabilities: [gpu]
stdin_open: true
tty: true
restart: unless-stopped
command: ["/home/qr-ai-generator/entrypoint.sh"]
二维码生成实例
以下是博主本地部署的 AI 二维码生成系统生成的二维码实例。感兴趣的同学可以访问 HY’s AI Playground 免费试用并生成自己心仪的 AI 二维码。
文章评论