现在位置: 首页 > Python 3 教程 > 正文

Python AI 绘画

本文我们将为大家介绍如何基于一些开发 API 或开源的库来搭建一套自己的 AI 作图工具。


通过文生图 API

通过文生图 API,您可以基于文本描述创造出全新的原创图像。

阿里云百炼提供两大系列模型:

  • 通义千问(Qwen-Image): 擅长渲染复杂的中英文文本,本章节以这个为例。
  • 通义万相(Wan系列): 用于生成写实图像和摄影级视觉效果。

通过运行以下命令安装 DashScope Python SDK:

# 如果运行失败,您可以将pip替换成pip3再运行
pip install -U requests dashscope

我们需要开通阿里云百炼模型服务并获得 API-KEY。

我们可以先使用阿里云主账号访问百炼模型服务平台:https://bailian.console.aliyun.com/,然后点击右上角登录,登录成功后点击右上角的齿轮⚙️图标,选择 API key,然后复制 API key,如果没有也可以创建 API key:

开通阿里云百炼不会产生费用,仅模型调用(超出免费额度后)、模型部署、模型调优会产生相应计费。

现在要使用 API,都需要按 token 来计费,还好都不贵,我们可以先购买个最便宜的包:阿里云百炼大模型服务平台

接下来我们通过设置提示词来生成图片:

实例

from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os

prompt = "一副典雅庄重的对联悬挂于厅堂之中,房间是个安静古典的中式布置,桌子上放着一些青花瓷,对联上左书"义本生知人机同道善思新",右书"通云赋智乾坤启数高志远", 横批"智启通义",字体飘逸,中间挂在一着一副中国风的画作,内容是岳阳楼。"

# 请用百炼API Key
api_key = "sk-xxx"

print('----同步调用,请等待任务执行----')
rsp = ImageSynthesis.call(api_key=api_key,
                          model="qwen-image",
                          prompt=prompt,
                          n=1,
                          size='1328*1328',
                          prompt_extend=True,
                          watermark=True)
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
    # 在当前目录下保存图片
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('同步调用失败, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))

输出结果类似如下,会看到有个 url 的参数,我们访问它就可以下载通过提示词描述的图片了:

----同步调用,请等待任务执行----
response: {"status_code": 200, "request_id": "1968746e-f434-4f77-9f8c-9b1adb80e8d7", "code": null, "message": "", "output": {"task_id": "d85c65d9-c4ff-4d66-a895-7c7746620b0c", "task_status": "SUCCEEDED", "results": [{"url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/7d/05/20250916/8d68e658/d85c65d9-c4ff-4d66-a895-7c7746620b0c-1.png?xxxxxxxxx", 
...

以上实例生成的图片如下:

更多内容可以参考官方文档:https://help.aliyun.com/zh/model-studio/text-to-image


Stable Diffusion

需要使用的开源库为 Stable Diffusion web UI,它是基于 Gradio 库的 Stable Diffusion 浏览器界面

Stable Diffusion web UI GitHub 地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui

运行 Stable Diffusion 需要硬件要求比较高,运行时会消耗较大的资源,特别是显卡。

Windows 环境安装

本地环境要求安装 Python 3.10.6 或以上版本,并把它加入到本机的环境变量中。

下载 Stable Diffusion web UI GitHub 源码 https://github.com/AUTOMATIC1111/stable-diffusion-webui

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

如果没有安装 Git ,可以在右上角下载 zip 压缩包。

解压 stable-diffusion-webui,并进入 stable-diffusion-webui 目录。

接下来我们需要下载模型,下载地址:https://huggingface.co/CompVis/stable-diffusion-v-1-4-original

将下载的模型移动到 stable-diffusion-webui/models/Stable-diffusion 目录下。

进入 stable-diffusion-webui 目录:

Windows 使用非管理员运行:

webui-user.bat

Linux 和 Mac OS 环境执行以下命令:

./webui.sh

接下来程序就会自动安装并启动,启动成功会看到一个可访问的 URL 地址 http://127.0.0.1:7860

访问 http://127.0.0.1:7860,界面如下:

注意: 如果安装出现卡住不动,很可能是下载 Github 源码出现问题了,可以使用 Github 的一些镜像来解决,目前还没非常稳定的镜像,建议 Google 搜索下。 我这边在 2023 年 4 月 6 号使用以下镜像地址 https://hub.fgit.ml,打开 stable-diffusion-webui 目录的 launch.py 文件,替换以下部分代码的 Github 地址(代码大概在 230~240 行之间):

Civitai 介绍

Civitai 有许多定制好的模型,而且可以免费下载,我们使用国风3模型来测试,下载地址:https://civitai.com/models/10415/3-guofeng3?modelVersionId=36644

下载完后,我们将模型移动到 stable-diffusion-webui/models/Stable-diffusion 目录下,重新启动 stable-diffusion-webui :

./webui.sh

这样我们就可以在模型列表中选择国风3模型了:

选择后,我们可以到模型介绍页面去拷贝一些提示词和测试参数:

​为了快速生成,我高度跟宽度都减半了,之后点生成按钮即可:

生成完整过程,可以关注我们微信视频号查看: