【附教程】親身體驗AI繪畫的藝術之旅——EP0

體驗在線 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/

image.png

點擊一個 LoRA 模型,可以看到在 Prompts 輸入框中,自動填寫上了模型名稱:

image.png

我選擇 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
Crop and resize
Resize and fill
Just resize (latent upscale)

起初我不是很能理解 Just resize (latent upscale) 的意義 ,感覺就是讓原圖變得更抽象了。
當我根據說明中的提示把 Denoising strength 設置為 0.6 (即大于 0.5),再次生成:

image.png

這樣生成的圖片是清晰的,AI 發揮了創意的同時讓這一組圖片中的灰熊,變得更瘦了。看來 Just resize (latent upscale) 模式主要是用來和 Denoising strength 配合的。

提高分辨率

在不那么充裕的算力資源下,為了更多更快地生成圖像,我們不會設定過高的圖片分辨率,但是當生成的結果讓我們滿意時,分辨率不達預期怎么辦?
在 Stable Diffusion 中提供了 Image AI upscaler (圖像 AI 升頻器),比如: ESRGAN 。
找到中意的圖片,點擊下方的 Send to extras 按鈕。

image.png

點擊后會自動跳轉到 Extras 標簽頁。但是這里的選項比較多,篇幅有限,簡單給各位看官演示一下,以后文章中細聊。

image.png
原圖
Postprocess upscale by: 4, Postprocess upscaler: 4x-UltraSharp

繼續探索

使用文本生成圖片依賴合適的模型,發揮創意組合關鍵詞(Prompts),輔以調整參數獲得滿意的效果。

學習資源很多,可以多看看其他人的作品。
比如: https://prompthero.com/prompt-builder/62cc0211b76

一幅作品用到的模型,做圖參數,關鍵詞都會分享出來。雖然僅憑這些不一定能復刻一個同樣的作品,但是就算是照抄關鍵詞也能發現不少有趣的東西。

下面是我使用 Stable Diffusion 1.5 基礎模型和相同的關鍵詞生成的作品:

推薦一些發布 AI 藝術作品網站:

總結

本次給大家分享了如何開啟你的 AI 繪圖之旅,而 AI 藝術卻不僅限于圖像,如果大家對 AI 藝術感興趣的話,推薦大家去看看這篇文章,它相當于是一個資源導航。
利用 AI 去發揮更多的創意吧!

引用
拓展思考
Q: AI 能作圖,那么 AI 可以幫忙寫作圖關鍵詞嗎?
A: 當然可以!但是下回再說。敬請期待之后的分享!

參考

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容