%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
和 GAN 一樣, 都是可以給一個我們叫 latent vector 特徵向量, 就生出圖來的 diffusion models, 其實本質上比較接近 autoencoder。
我們之前有說, 用 autoencoder 似乎生不出太不一樣的圖。不過事實證明, 如果讓電腦看夠多, 它就會生出各種各樣的圖來!
傳統 diffusion models 的 latent vector 大小和你要生的圖是一樣的, 如此計算量自然大增、訓練也不易。Stable Diffusion 先訓練一個 VAE 把圖壓下來到我們希望的維度, 再去進行 diffusion models 訓練。
當然更重要的是, Stable Diffusion 是開源的! 於是基於 Stable Diffusion 改善強化的模型也紛紛出籠。繼 transformers
之後, HuggingFace 又推出 diffusers
方便大家使用酷炫文字生圖的 diffusion models。
我們這裡以 anything-v4.0
這個經 fine-tune
的 Stable Diffusion 模型,可以產生不錯的可愛動漫圖。
首先先安裝必要套件。
!pip install transformers
!pip install diffusers["torch"]
!pip install sentencepiece
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting transformers Downloading transformers-4.26.1-py3-none-any.whl (6.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.3/6.3 MB 55.3 MB/s eta 0:00:00 Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.8/dist-packages (from transformers) (6.0) Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (2022.6.2) Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.8/dist-packages (from transformers) (4.64.1) Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.8/dist-packages (from transformers) (23.0) Requirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from transformers) (2.25.1) Collecting huggingface-hub<1.0,>=0.11.0 Downloading huggingface_hub-0.12.1-py3-none-any.whl (190 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 190.3/190.3 KB 14.0 MB/s eta 0:00:00 Collecting tokenizers!=0.11.3,<0.14,>=0.11.1 Downloading tokenizers-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.6/7.6 MB 61.0 MB/s eta 0:00:00 Requirement already satisfied: filelock in /usr/local/lib/python3.8/dist-packages (from transformers) (3.9.0) Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.8/dist-packages (from transformers) (1.22.4) Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.8/dist-packages (from huggingface-hub<1.0,>=0.11.0->transformers) (4.5.0) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2022.12.7) Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (2.10) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (1.24.3) Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->transformers) (4.0.0) Installing collected packages: tokenizers, huggingface-hub, transformers Successfully installed huggingface-hub-0.12.1 tokenizers-0.13.2 transformers-4.26.1 Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting diffusers[torch] Downloading diffusers-0.13.1-py3-none-any.whl (716 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 716.4/716.4 KB 18.3 MB/s eta 0:00:00 Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.8/dist-packages (from diffusers[torch]) (6.0.0) Requirement already satisfied: filelock in /usr/local/lib/python3.8/dist-packages (from diffusers[torch]) (3.9.0) Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.8/dist-packages (from diffusers[torch]) (2022.6.2) Requirement already satisfied: numpy in /usr/local/lib/python3.8/dist-packages (from diffusers[torch]) (1.22.4) Requirement already satisfied: Pillow in /usr/local/lib/python3.8/dist-packages (from diffusers[torch]) (7.1.2) Requirement already satisfied: huggingface-hub>=0.10.0 in /usr/local/lib/python3.8/dist-packages (from diffusers[torch]) (0.12.1) Requirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from diffusers[torch]) (2.25.1) Requirement already satisfied: torch>=1.4 in /usr/local/lib/python3.8/dist-packages (from diffusers[torch]) (1.13.1+cu116) Collecting accelerate>=0.11.0 Downloading accelerate-0.16.0-py3-none-any.whl (199 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 199.7/199.7 KB 26.9 MB/s eta 0:00:00 Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.8/dist-packages (from accelerate>=0.11.0->diffusers[torch]) (23.0) Requirement already satisfied: psutil in /usr/local/lib/python3.8/dist-packages (from accelerate>=0.11.0->diffusers[torch]) (5.4.8) Requirement already satisfied: pyyaml in /usr/local/lib/python3.8/dist-packages (from accelerate>=0.11.0->diffusers[torch]) (6.0) Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.8/dist-packages (from huggingface-hub>=0.10.0->diffusers[torch]) (4.64.1) Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.8/dist-packages (from huggingface-hub>=0.10.0->diffusers[torch]) (4.5.0) Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.8/dist-packages (from importlib-metadata->diffusers[torch]) (3.14.0) Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->diffusers[torch]) (2.10) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests->diffusers[torch]) (2022.12.7) Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->diffusers[torch]) (4.0.0) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->diffusers[torch]) (1.24.3) Installing collected packages: accelerate, diffusers Successfully installed accelerate-0.16.0 diffusers-0.13.1 Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting sentencepiece Downloading sentencepiece-0.1.97-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 63.3 MB/s eta 0:00:00 Installing collected packages: sentencepiece Successfully installed sentencepiece-0.1.97
diffusers
pipeline 一條龍服務¶import torch
from diffusers import StableDiffusionPipeline
從預訓練模型讀入。
pipe = StableDiffusionPipeline.from_pretrained("andite/anything-v4.0", torch_dtype=torch.float16)
pipe = pipe.to("cuda")
Downloading (…)ain/model_index.json: 0%| | 0.00/584 [00:00<?, ?B/s]
Fetching 15 files: 0%| | 0/15 [00:00<?, ?it/s]
Downloading (…)"pytorch_model.bin";: 0%| | 0.00/1.22G [00:00<?, ?B/s]
Downloading (…)"pytorch_model.bin";: 0%| | 0.00/492M [00:00<?, ?B/s]
Downloading (…)cial_tokens_map.json: 0%| | 0.00/472 [00:00<?, ?B/s]
Downloading (…)cheduler_config.json: 0%| | 0.00/346 [00:00<?, ?B/s]
Downloading (…)_checker/config.json: 0%| | 0.00/4.91k [00:00<?, ?B/s]
Downloading (…)rocessor_config.json: 0%| | 0.00/520 [00:00<?, ?B/s]
Downloading (…)_encoder/config.json: 0%| | 0.00/617 [00:00<?, ?B/s]
Downloading (…)tokenizer/merges.txt: 0%| | 0.00/525k [00:00<?, ?B/s]
Downloading (…)_pytorch_model.bin";: 0%| | 0.00/3.44G [00:00<?, ?B/s]
Downloading (…)054/unet/config.json: 0%| | 0.00/1.02k [00:00<?, ?B/s]
Downloading (…)okenizer_config.json: 0%| | 0.00/806 [00:00<?, ?B/s]
Downloading (…)a054/vae/config.json: 0%| | 0.00/582 [00:00<?, ?B/s]
Downloading (…)_pytorch_model.bin";: 0%| | 0.00/335M [00:00<?, ?B/s]
Downloading (…)tokenizer/vocab.json: 0%| | 0.00/1.06M [00:00<?, ?B/s]
/usr/local/lib/python3.8/dist-packages/transformers/models/clip/feature_extraction_clip.py:28: FutureWarning: The class CLIPFeatureExtractor is deprecated and will be removed in version 5 of Transformers. Please use CLIPImageProcessor instead. warnings.warn(
現在你可以打入一段 "咒語", AI 就會幫忙把圖生出來!
prompt = "a cute girl standing in front of chalkboard"
image = pipe(prompt).images[0]
0%| | 0/50 [00:00<?, ?it/s]
image
Stable Diffusion 一般生成並沒有另一個有名的文字生圖 AI 模型出色。但 Stable Diffusion 是 open source 的, 所以自己可以訓練自己想要的模型。也有很多人提供不少出色的模型, 比如我們介紹的 Anything v4。可以發現一些好的模型, 在某風格畫得不錯, 所以可以花點時間找到這些模型的強項。這裡再推薦一些不錯的模型, 大家可以試試看。
模型: prompthero/openjourney-v2
看名字就知道是打造開放版的 Midjourney, 可以用 Midjourney 的 prompt。但是不要期待真的效果就和 Midjourney 一樣, 不過在某些風格表現得不錯。
範例的 prompt:
a little girl, beautiful scenery, backlight, bokeh, hundreds of fireflies in the air around them, dramatic light
模型: nitrosocke/Ghibli-Diffusion
大家熟悉的吉卜力工作室, 來畫畫這樣風格的插圖吧。
範例 prompt:
a girl is using a laptop, ghibli style
模型: nitrosocke/mo-di-diffusion
這是 (現代版) 迪士尼風格, 喜歡迪士尼風的快來試試!
範例 prompt:
a girl in a classroom, modern disney style
我們再次動用 Gradio, 快速打造自己的 AI 生圖的網路應用程式!
!pip install gradio
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/ Collecting gradio Downloading gradio-3.19.1-py3-none-any.whl (14.2 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.2/14.2 MB 93.2 MB/s eta 0:00:00 Requirement already satisfied: aiohttp in /usr/local/lib/python3.8/dist-packages (from gradio) (3.8.4) Collecting httpx Downloading httpx-0.23.3-py3-none-any.whl (71 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 71.5/71.5 KB 10.4 MB/s eta 0:00:00 Collecting aiofiles Downloading aiofiles-23.1.0-py3-none-any.whl (14 kB) Requirement already satisfied: fsspec in /usr/local/lib/python3.8/dist-packages (from gradio) (2023.1.0) Collecting markdown-it-py[linkify]>=2.0.0 Downloading markdown_it_py-2.2.0-py3-none-any.whl (84 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 84.5/84.5 KB 11.5 MB/s eta 0:00:00 Collecting websockets>=10.0 Downloading websockets-10.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (106 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.0/107.0 KB 15.8 MB/s eta 0:00:00 Collecting pycryptodome Downloading pycryptodome-3.17-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 90.4 MB/s eta 0:00:00 Collecting uvicorn Downloading uvicorn-0.20.0-py3-none-any.whl (56 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.9/56.9 KB 8.0 MB/s eta 0:00:00 Requirement already satisfied: pyyaml in /usr/local/lib/python3.8/dist-packages (from gradio) (6.0) Collecting pydub Downloading pydub-0.25.1-py2.py3-none-any.whl (32 kB) Requirement already satisfied: altair>=4.2.0 in /usr/local/lib/python3.8/dist-packages (from gradio) (4.2.2) Requirement already satisfied: numpy in /usr/local/lib/python3.8/dist-packages (from gradio) (1.22.4) Requirement already satisfied: jinja2 in /usr/local/lib/python3.8/dist-packages (from gradio) (2.11.3) Collecting ffmpy Downloading ffmpy-0.3.0.tar.gz (4.8 kB) Preparing metadata (setup.py) ... done Requirement already satisfied: markupsafe in /usr/local/lib/python3.8/dist-packages (from gradio) (2.0.1) Requirement already satisfied: typing-extensions in /usr/local/lib/python3.8/dist-packages (from gradio) (4.5.0) Requirement already satisfied: pillow in /usr/local/lib/python3.8/dist-packages (from gradio) (7.1.2) Requirement already satisfied: pydantic in /usr/local/lib/python3.8/dist-packages (from gradio) (1.10.5) Requirement already satisfied: pandas in /usr/local/lib/python3.8/dist-packages (from gradio) (1.3.5) Requirement already satisfied: matplotlib in /usr/local/lib/python3.8/dist-packages (from gradio) (3.5.3) Requirement already satisfied: requests in /usr/local/lib/python3.8/dist-packages (from gradio) (2.25.1) Collecting orjson Downloading orjson-3.8.6-cp38-cp38-manylinux_2_28_x86_64.whl (140 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 140.7/140.7 KB 20.2 MB/s eta 0:00:00 Collecting python-multipart Downloading python-multipart-0.0.5.tar.gz (32 kB) Preparing metadata (setup.py) ... done Collecting fastapi Downloading fastapi-0.92.0-py3-none-any.whl (56 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.2/56.2 KB 8.1 MB/s eta 0:00:00 Collecting mdit-py-plugins<=0.3.3 Downloading mdit_py_plugins-0.3.3-py3-none-any.whl (50 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.5/50.5 KB 6.6 MB/s eta 0:00:00 Requirement already satisfied: toolz in /usr/local/lib/python3.8/dist-packages (from altair>=4.2.0->gradio) (0.12.0) Requirement already satisfied: jsonschema>=3.0 in /usr/local/lib/python3.8/dist-packages (from altair>=4.2.0->gradio) (4.3.3) Requirement already satisfied: entrypoints in /usr/local/lib/python3.8/dist-packages (from altair>=4.2.0->gradio) (0.4) Collecting mdurl~=0.1 Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB) Collecting linkify-it-py<3,>=1 Downloading linkify_it_py-2.0.0-py3-none-any.whl (19 kB) Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas->gradio) (2.8.2) Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas->gradio) (2022.7.1) Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gradio) (1.3.1) Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gradio) (1.8.2) Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gradio) (4.0.2) Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gradio) (3.0.1) Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gradio) (1.3.3) Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gradio) (6.0.4) Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.8/dist-packages (from aiohttp->gradio) (22.2.0) Collecting starlette<0.26.0,>=0.25.0 Downloading starlette-0.25.0-py3-none-any.whl (66 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.4/66.4 KB 10.0 MB/s eta 0:00:00 Collecting sniffio Downloading sniffio-1.3.0-py3-none-any.whl (10 kB) Requirement already satisfied: certifi in /usr/local/lib/python3.8/dist-packages (from httpx->gradio) (2022.12.7) Collecting rfc3986[idna2008]<2,>=1.3 Downloading rfc3986-1.5.0-py2.py3-none-any.whl (31 kB) Collecting httpcore<0.17.0,>=0.15.0 Downloading httpcore-0.16.3-py3-none-any.whl (69 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 69.6/69.6 KB 10.0 MB/s eta 0:00:00 Requirement already satisfied: pyparsing>=2.2.1 in /usr/local/lib/python3.8/dist-packages (from matplotlib->gradio) (3.0.9) Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.8/dist-packages (from matplotlib->gradio) (4.38.0) Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.8/dist-packages (from matplotlib->gradio) (0.11.0) Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.8/dist-packages (from matplotlib->gradio) (1.4.4) Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.8/dist-packages (from matplotlib->gradio) (23.0) Requirement already satisfied: six>=1.4.0 in /usr/local/lib/python3.8/dist-packages (from python-multipart->gradio) (1.15.0) Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests->gradio) (2.10) Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests->gradio) (4.0.0) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests->gradio) (1.24.3) Requirement already satisfied: click>=7.0 in /usr/local/lib/python3.8/dist-packages (from uvicorn->gradio) (7.1.2) Collecting h11>=0.8 Downloading h11-0.14.0-py3-none-any.whl (58 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.3/58.3 KB 9.3 MB/s eta 0:00:00 Collecting anyio<5.0,>=3.0 Downloading anyio-3.6.2-py3-none-any.whl (80 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 80.6/80.6 KB 12.6 MB/s eta 0:00:00 Requirement already satisfied: importlib-resources>=1.4.0 in /usr/local/lib/python3.8/dist-packages (from jsonschema>=3.0->altair>=4.2.0->gradio) (5.12.0) Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /usr/local/lib/python3.8/dist-packages (from jsonschema>=3.0->altair>=4.2.0->gradio) (0.19.3) Collecting uc-micro-py Downloading uc_micro_py-1.0.1-py3-none-any.whl (6.2 kB) Requirement already satisfied: zipp>=3.1.0 in /usr/local/lib/python3.8/dist-packages (from importlib-resources>=1.4.0->jsonschema>=3.0->altair>=4.2.0->gradio) (3.14.0) Building wheels for collected packages: ffmpy, python-multipart Building wheel for ffmpy (setup.py) ... done Created wheel for ffmpy: filename=ffmpy-0.3.0-py3-none-any.whl size=4711 sha256=b0fb3ee28557a3f56e43dde0d6cdd06f68232958ac0bef7564a81680e8baa338 Stored in directory: /root/.cache/pip/wheels/ff/5b/59/913b443e7369dc04b61f607a746b6f7d83fb65e2e19fcc958d Building wheel for python-multipart (setup.py) ... done Created wheel for python-multipart: filename=python_multipart-0.0.5-py3-none-any.whl size=31678 sha256=468b2c5d163e5812f0ff70698cf695b54f6b91f19f81ba56cbca68f52f333b2f Stored in directory: /root/.cache/pip/wheels/9e/fc/1c/cf980e6413d3ee8e70cd8f39e2366b0f487e3e221aeb452eb0 Successfully built ffmpy python-multipart Installing collected packages: rfc3986, pydub, ffmpy, websockets, uc-micro-py, sniffio, python-multipart, pycryptodome, orjson, mdurl, h11, aiofiles, uvicorn, markdown-it-py, linkify-it-py, anyio, starlette, mdit-py-plugins, httpcore, httpx, fastapi, gradio Successfully installed aiofiles-23.1.0 anyio-3.6.2 fastapi-0.92.0 ffmpy-0.3.0 gradio-3.19.1 h11-0.14.0 httpcore-0.16.3 httpx-0.23.3 linkify-it-py-2.0.0 markdown-it-py-2.2.0 mdit-py-plugins-0.3.3 mdurl-0.1.2 orjson-3.8.6 pycryptodome-3.17 pydub-0.25.1 python-multipart-0.0.5 rfc3986-1.5.0 sniffio-1.3.0 starlette-0.25.0 uc-micro-py-1.0.1 uvicorn-0.20.0 websockets-10.4
import gradio as gr
def text2image(prompt):
image = pipe(prompt).images[0]
return image
inputs = gr.Textbox(label="輸入你的咒語")
outputs = gr.Image(label="生成圖")
iface = gr.Interface(text2image,
inputs=inputs,
outputs=outputs,
title="文字生圖 AI",
description="請輸入一段英文咒語 (prompt), 我會根據你的咒語畫出一張圖!")
iface.launch(share=True)
Colab notebook detected. To show errors in colab notebook, set debug=True in launch() Running on public URL: https://4d06b3161729f81bbd.gradio.live This share link expires in 72 hours. For free permanent hosting and GPU upgrades (NEW!), check out Spaces: https://huggingface.co/spaces
這篇是教學範例, 所以只有介紹 diffusers pipline 一條龍服務簡單應用。但你聽說人家用 automatic1111
版本, 又是各種 LoRA, 又是 ControlNet 在流口水的話, 請參考這篇高手打造完整 automatic1111 webui:
你是不是好奇, 訓練文字生圖時, AI 怎麼學這樣的文字, 該生什麼圖呢? 那當然是輸一張圖, 讓 AI 告訴我們是什麼。而有時我們要 AI 畫某種樣子的圖,不太會形容, 不如就直接給他看張圖, 告訴我們怎麼描述。這裡我們介紹幾個有名的模型: