體驗在線 AI 畫圖服務
Midjourney
Midjourney 是一個由同名研究實驗室開發的人工智能程序,可根據文本生成圖像,于2022年7月12日進入公開測試階段,用戶可透過 Discord 的機器人指令進行操作。該研究實驗室由 Leap Motion 的創辦人大衛·霍爾茲負責領導。—— Wikipedia
可以加入 Beta 計劃從 Discord 群中向機器人提交作圖指令。官網服務也提供付費訂閱。
Microsoft Bing Image Creator
微軟借助 OpenAI 的 DALL-E 圖像生成 AI ,提供了這個在線圖片生成服務。用戶輸入一段文本提示,僅需數秒即可獲得一組 AI 生成的與之匹配的圖像。
Preview 階段,每位普通用戶媒體可以快速生成 25 次,超過次數需要排隊等待。
搭建自己的 AI 作圖環境
在線服務效果好,但是有使用次數限制。如果你需要更多的自由度,那么可以考慮自己搭建一套 AI 做圖環境。
準備
Stable Diffusion GUI
AI 繪圖已經火出圈,自然開源社區里也有許多 Stable Diffusion 的圖形界面,方便用戶上手體驗。
有專門提供給 MacOS 桌面端的 DiffusionBee,還有跨平臺的 Stable Diffusion UI v2 。
而本文我們著重介紹可以部署在云端的 Web UI 。
AUTOMATIC1111(簡稱 A1111)Stable Diffusion Web UI 是為高級用戶提供的 Stable Diffusion GUI。
多虧了活躍的開源社區,大多數新功能都會先支持上這個免費的 Stable Diffusion GUI 。
但要使用它并不容易。文檔不夠詳盡,以及提供的茫茫功能列表都會讓新手迷茫。
購買一臺云主機
初次體驗,先試試最便宜的 GPU 主機。
P.S 最低配的也完全夠用,生成圖片很快!
我開通的云主機的配置如下:
- 系統: Ubuntu22.04
- 顯卡: 1 * NVIDIA T4
- CPU/內存: 4 核 32 G
- 系統盤: 200GB
- 帶寬: 10Mbps
順暢的網絡環境
略,自己想辦法
安裝
機器開通后,可以直接從 Web 端一鍵登錄:
也可以使用 ssh 登錄,在 “更多操作” 下拉菜單中選擇重制密碼,即可重新設定一個 root 賬號的登錄密碼,然后云主機會重啟。
具體的你可以參考文檔產品文檔。
登錄云主機后,可以先檢查一下顯卡型號:
$ lspci | grep -i nvidia
00:06.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
貨真價實,沒有問題,那么開始搭建吧!
安裝一些必要的依賴軟件
# 更新軟件包索引
sudo apt-get -y update
# 必要軟件
sudo apt-get -y install wget git python3 python3-venv python3-pip
sudo apt-get -y install aria2 screen
# 安裝 cuda 軟件包,讓顯卡發揮超能力
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda
# 清理 deb 安裝包
rm *.deb
# 安裝 cuda 之后,需要重啟生效
sudo reboot
驗證 cuda 是否安裝成功:
$ nvidia-smi
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.30.02 Driver Version: 530.30.02 CUDA Version: 12.1 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 Tesla T4 On | 00000000:00:06.0 Off | 0 |
| N/A 38C P0 26W / 70W| 2279MiB / 15360MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 103851 C python3 2274MiB |
+---------------------------------------------------------------------------------------+
寫在前面的一點建議
建議你在使用 ssh 登錄云主機時,使用 screen 命令進入一個虛擬終端會話,這可以避免因為網絡不穩定而中斷了正在執行的命令。因為接下來的一些命令需要下載大文件而耗時比較長。
screen 命令速記:
# 新建一個 screen 會話,我的會話取名為 workspace
screen -R workspace
# 退出 screen 會話
## 先按組合鍵 Ctrl+A
## 然后按字母 D
# 當需要重新進入 screen 會話
screen -r -d workspace
詳細的命令使用說明,參考 How To Use Linux Screen 。
部署 Web UI
你可以直接 clone 項目 AUTOMATIC1111/stable-diffusion-webui (又稱 A1111 ) 的最新代碼,然后按照 README 中的說明安裝即可。
而我參考了另一個項目:
如果你想快速開始體驗,就跟我一樣腳本一把梭,免得耗費時間找各種插件/模型;
如果你很在意這些命令在干什么,我簡單添加了一些注釋;
看不懂?沒關系,這個系列以后會有文章深入這些細節。
#!/usr/bin/env bash
# A1111 項目沒有打 tag 的習慣,你拉取到的最新版本代碼可能無法復現本文的內容,
# 而這個項目 Fork 自 A1111 ,還貼心地打上了 tag ,建議你和我一樣使用這份源碼
git clone -b v2.2 https://github.com/camenduru/stable-diffusion-webui
# 指定之后操作的根目錄
base_dir="$(pwd)/stable-diffusion-webui"
# 簡化 ariac2 下載命令
download="aria2c --console-log-level=error -c -x 16 -s 16 -k 1M"
# Extra network / Textual Inversion
# 負面詞,功能說明 https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Negative-prompt
git clone https://huggingface.co/embed/negative ${base_dir}/embeddings/negative
# Extra network / Lora
# 支持把 Lora 模型作為關鍵詞
git clone https://huggingface.co/embed/lora ${base_dir}/models/Lora/positive
# 4x-UltraSharp ,一個通用模型,可以提高圖片的分辨率。
# 原始模型發布在 MEGA 網盤,為了下載方便使用 huggingface 上的備份。
${download} https://huggingface.co/embed/upscale/resolve/main/4x-UltraSharp.pth -d ${base_dir}/models/ESRGAN -o 4x-UltraSharp.pth
# 一些方便的插件,可以去他們的 Github 主頁查看功能介紹
## 方便從 Web 端下載 civitai 市場的模型
git clone -b v2.0 https://github.com/camenduru/sd-civitai-browser ${base_dir}/extensions/sd-civitai-browser
## 方便從 Web 端下載 huggingface 市場的模型
git clone https://github.com/camenduru/stable-diffusion-webui-huggingface ${base_dir}/extensions/stable-diffusion-webui-huggingface
## 一個圖片瀏覽器,方便瀏覽保存過的圖片
git clone https://github.com/AlUlkesh/stable-diffusion-webui-images-browser ${base_dir}/extensions/stable-diffusion-webui-images-browser
# 主模型
models="${base_dir}/models"
## Stable Diffuison v1.5,SD1.5 的模型 (可選)
${download} https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors -d ${models}/Stable-diffusion -o v1-5-pruned-emaonly.safetensors
## 國風3 https://huggingface.co/xiaolxl/GuoFeng3
${download} https://huggingface.co/xiaolxl/GuoFeng3/resolve/main/GuoFeng3.2.safetensors -d ${models}/Stable-diffusion -o GuoFeng3.2.safetensors
# LoRA 模型
mkdir -p ${models}/Lora
## 墨心 MoXin https://civitai.com/models/12597/moxin
${download} https://civitai.com/api/download/models/14856 -d ${models}/Lora -o MoXin_v10.safetensors
最后我們啟動 Web UI
直接通過 launch.py 啟動,而不是 webui.sh ,這樣可以加載額外安裝的插件。
一些 Python 依賴包會在初次運行時安裝。
cd stable-diffusion-webui
## 初始化并啟用新的 python venv 環境
python3 -m venv .venv
source .venv/bin/activate
## 安裝支持 cuda 11.8 的 pytorch, xformer
pip install torch torchvision torchaudio torchtext torchdata --extra-index-url https://download.pytorch.org/whl/cu118 -U
pip install xformers==0.0.18 triton==2.0.0 -U
## 在 10000 端口上啟動 Web 服務
python3 launch.py --listen --xformers --enable-insecure-extension-access --gradio-queue --port 10000
瀏覽器打開 http://${host_ip}:10000 就可以看到 Stable Diffusion Web 頁面了。
把 ${host_ip} 換成你的云主機 ip 地址。
P.S 安裝腳本中省略了部分本文用不到的插件,所以 Web 截圖會略有不同。
使用自建的 AI 作圖環境
選擇一個基礎模型(主模型)在 Stable Diffusion checkpoint 下拉菜單中,選擇 GuoFeng3.2.safetensors 。
GuoFeng3 這是一個中國華麗古風風格模型,也可以說是一個古風游戲角色模型,具有2.5D的質感。來自: https://huggingface.co/xiaolxl/GuoFeng3
點擊 Generate 下面的 Show/hide extra networks 圖標,可以看到已經安裝的模型。
切換選項卡,可以看到我們已經安裝的所有 LoRA 模型。
Q: 什么是 LoRA 模型?
A: 根據特定概念更改現有 Stable Diffusion 模型結果的文件。這可以是一種藝術風格、一個角色、一個現實中的人、一個物體或一個主題。一些著名的例子:Arcane Style LoRA(奧術風格 LoRA) ,Makima from Chainsaw Man LoRA(來自動漫《電鋸人》中的瑪奇瑪)。(來自:https://aituts.com/stable-diffusion-lora/ )
點擊一個 LoRA 模型,可以看到在 Prompts 輸入框中,自動填寫上了模型名稱:
我選擇 Moxin_10 這個模型。
墨心 MoXin 1.0
昔涓子《琴心》,王孫《巧心》,心哉美矣,故用之焉。
來自: https://civitai.com/models/12597/moxin
(非常適合與國風3 搭配使用的 LoRA 模型,可以生成水墨畫風格的圖片。)
從最簡單的開始
準備創作,首先要有個想法:
假如我想畫一只熊。
在關鍵詞 (Prompt) 輸入框中添加一句描述:
a bear
提示詞目前只支持英語。
如果你有更復雜的描述,但是表達不出來?翻譯軟件一大把。
然后點擊 Generate 進行生成,大概花了 10s,圖片就生成好了。
說實話,這虎頭虎腦的黑熊,效果還挺萌!頓時對我們的 AI 繪畫之旅,充滿信心了有木有?
如果要再次生成,就繼續點擊 Generate ;如果要一次生成多張圖片,可以調整 Batch count 。
顯卡有多還可以調整 Batch size 進行并發生成??。
點擊 Generate 進行批量生成,大概花了 13s,多張圖片就生成好了。
多生成幾張之后會發現,奇奇怪怪的圖片真不少,質量參差不齊。
獲得更好的效果
首先我們可以點開模型的介紹頁面,看看模型的作者都有什么建議。
根據作者的建議,我做了如下調整:
加上負面詞(Negative prompt):
lowres, worstquality, low quality, normal quality, text, error, extra digit, jpegartifacts, signature, watermark, username, blurry
這些負面詞,稍微翻譯下,就能懂他們的意思。
修改了參數:
- Sampler: DPM++ SDE Karras
- Sampling steps: 35
- CFG Scale: 5
這里先不介紹這些參數的含義,僅僅是按照模型作者推薦的來設置。
再來點擊 Generate ,生成看看。
生成時間長了一些,大概 40s。
而且通過負面詞篩掉了許多質量不佳的圖片素材,出圖效果確實變好了許多。
賦予圖片主題
我們提供的關鍵詞過于簡單,所以生成的圖片沒有一個統一的主題,所以我們需要細化一下需求,擴充一下提示詞中的畫面描述。
比如,現在我想要畫一只黑熊站在楓葉林中練習揮劍。
修改關鍵詞,把圖片描述的更細致:
A black bear stood in the maple leaf forest and practiced waving his sword.
為了快速看到構圖效果,可以調低 Batch count。
再次嘗試生成:
圖片里的這只黑熊有“劍客”內味兒了,只是手指看起來怪怪的。
手指的的生成問題,在使用 Stable Diffusion 時很常見,我們可以暫時通過負面詞去繞過這個問題。
Tips: 你如果使用和我一樣的參數和關鍵詞,填入同樣的 Seed 就能復現我這張圖哦~
圖片生成信息中可見 Seed: 620974436 。
舉一反三
當有一張圖片讓我們感覺不錯,希望再得到類似的創意怎么做?
接下來我們以這張”灰熊劍客”的構圖為基準,來生成其他的圖片。
點擊生成圖片下方的 Send to img2img 按鈕。
點擊后會自動跳轉到 img2img 標簽頁。仔細觀察可以發現,相比之前的頁面又多了 2 個可調整的參數:
Denoising strength,去噪強度,控制與原始圖像相比,它將產生多少變化:
- 設置成 0 時,不會有任何變化;
- 設置成 1 時,會得到一個無關的繪圖。
那我們保持之前的參數都不變,僅僅調整 Denoising strength ,來看生成多張圖片的效果。
- Denoising strength: 0.75
- Denoising strength: 0.35
因此如果我們想要生成與原圖片類似的構圖,Denoising strength 取值在 0.5 以下更佳。
Resize mode,如果目標圖像的寬高比與輸入圖像的寬高比不同,有如下幾種方法可以調和差異:
- Just resize: 簡單地將源圖像調整為目標分辨率,可能導致不正確的寬高比。
- Crop and resize: 調整源圖像的大小,保留寬高比,使其占據整個目標分辨率,并裁剪突出的部分。
- Resize and fill: 調整源圖像的大小,保持寬高比,使其完全適合目標分辨率,并從源圖像中按行/列填充空白。
- Just resize (latent upscale):類似于 “Just resize”,但縮放是在潛在空間中完成的。使用大于 0.5 的 Denoising strength 來避免圖像模糊。
我們固定 Denoising strength 為 0 (即不生成新的繪圖),嘗試將 512x512 分辨率的原圖調整為 300x600 的圖片,觀察在不同 Resize mode 下的變化。
起初我不是很能理解 Just resize (latent upscale) 的意義 ,感覺就是讓原圖變得更抽象了。
當我根據說明中的提示把 Denoising strength 設置為 0.6 (即大于 0.5),再次生成:
這樣生成的圖片是清晰的,AI 發揮了創意的同時讓這一組圖片中的灰熊,變得更瘦了。看來 Just resize (latent upscale) 模式主要是用來和 Denoising strength 配合的。
提高分辨率
在不那么充裕的算力資源下,為了更多更快地生成圖像,我們不會設定過高的圖片分辨率,但是當生成的結果讓我們滿意時,分辨率不達預期怎么辦?
在 Stable Diffusion 中提供了 Image AI upscaler (圖像 AI 升頻器),比如: ESRGAN 。
找到中意的圖片,點擊下方的 Send to extras 按鈕。
點擊后會自動跳轉到 Extras 標簽頁。但是這里的選項比較多,篇幅有限,簡單給各位看官演示一下,以后文章中細聊。
繼續探索
使用文本生成圖片依賴合適的模型,發揮創意組合關鍵詞(Prompts),輔以調整參數獲得滿意的效果。
學習資源很多,可以多看看其他人的作品。
比如: https://prompthero.com/prompt-builder/62cc0211b76
一幅作品用到的模型,做圖參數,關鍵詞都會分享出來。雖然僅憑這些不一定能復刻一個同樣的作品,但是就算是照抄關鍵詞也能發現不少有趣的東西。
下面是我使用 Stable Diffusion 1.5 基礎模型和相同的關鍵詞生成的作品:
推薦一些發布 AI 藝術作品網站:
- https://prompthero.com/
-
https://pixai.art/
推薦一些 Prompts 學習筆記: - https://www.creativindie.com/best-midjourney-prompts-an-epic-list-of-crazy-text-to-image-ideas/
-
https://stable-diffusion-art.com/prompts/
推薦一些模型市場: - https://civitai.com/
- https://huggingface.co/models
總結
本次給大家分享了如何開啟你的 AI 繪圖之旅,而 AI 藝術卻不僅限于圖像,如果大家對 AI 藝術感興趣的話,推薦大家去看看這篇文章,它相當于是一個資源導航。
利用 AI 去發揮更多的創意吧!
引用
拓展思考
Q: AI 能作圖,那么 AI 可以幫忙寫作圖關鍵詞嗎?
A: 當然可以!但是下回再說。敬請期待之后的分享!
參考
- https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features/
- https://github.com/camenduru/stable-diffusion-webui-colab
- https://huggingface.co/xiaolxl/GuoFeng3
- https://civitai.com/models/12597/moxin
- https://developer.nvidia.com/cuda-11-8-0-download-archive
- https://pytorch.org/get-started/locally/
- https://stable-diffusion-art.com/inpainting_basics/
- https://stable-diffusion-art.com/ai-upscaler/
- https://pharmapsychotic.com/tools.html