使用 Stable Diffusion Controlnet 生成 AI 二维码

2024年4月14日 711点热度 0人点赞 0条评论

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 版本:

2. ControlNet QR Pattern by Nacholmo

QR Pattern 和 QR Pattern sdxl 是由一名阿根廷大学生 Nacholmo 作为免费社区资源创建的。

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。

我则在此项目源代码的基础上增加了如下的功能:

更新后的使用界面如下。

为方面管理和更新,进行了容器化部署。参考 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 二维码。

予人玫瑰,手有余香。如果您觉得本文对您有帮助,请点赞或打赏。

文章评论

您需要 登录 之后才可以评论