1. 工作場景下 AI 繪畫工具的選擇
目前文生圖的主流 AI 繪畫平臺主要有三種:Midjourney、Stable Diffusion、DALL·E。如果要在實際工作場景中應用,我更推薦 Stable Diffusion。
另一個熱門平臺的基礎教程:
通過對比,Stable Diffusion 在數(shù)據(jù)安全性(可本地部署)、可擴展性(成熟插件多)、風格豐富度(眾多模型可供下載,也可以訓練自有風格模型)、費用版權(quán)(開源免費、可商用)等方面更適合我們的工作場景。
那么如何在實際工作中應用 Stable Diffusion 進行 AI 繪畫?
要在實際工作中應用 AI 繪畫,需要解決兩個關(guān)鍵問題,分別是:圖像的精準控制和圖像的風格控制。
2. 圖像精準控制
圖像精準控制推薦使用 Stable Diffusion 的 ControlNet 插件。在 ControlNet 出現(xiàn)之前,AI 繪畫更像開盲盒,在圖像生成前,你永遠都不知道它會是一張怎樣的圖。ControlNet 的出現(xiàn),真正意義上讓 AI 繪畫上升到生產(chǎn)力級別。簡單來說 ControlNet 它可以精準控制 AI 圖像的生成。
ControlNet 主要有 8 個應用模型:OpenPose、Canny、HED、Scribble、Mlsd、Seg、Normal Map、Depth。以下做簡要介紹:
?OpenPose 姿勢識別
通過姿勢識別,達到精準控制人體動作。除了生成單人的姿勢,它還可以生成多人的姿勢,此外還有手部骨骼模型,解決手部繪圖不精準問題。以下圖為例:左側(cè)為參考圖像,經(jīng) OpenPose 精準識別后,得出中間的骨骼姿勢,再用文生圖功能,描述主體內(nèi)容、場景細節(jié)和畫風后,就能得到一張同樣姿勢,但風格完全不同的圖。
?Canny 邊緣檢測
Canny 模型可以根據(jù)邊緣檢測,從原始圖片中提取線稿,再根據(jù)提示詞,來生成同樣構(gòu)圖的畫面,也可以用來給線稿上色。
HED 邊緣檢測
跟 Canny 類似,但自由發(fā)揮程度更高。HED 邊界保留了輸入圖像中的細節(jié),繪制的人物明暗對比明顯,輪廓感更強,適合在保持原來構(gòu)圖的基礎上對畫面風格進行改變時使用。
Scribble 黑白稿提取
涂鴉成圖,比 HED 和 Canny 的自由發(fā)揮程度更高,也可以用于對手繪線稿進行著色處理。
Mlsd 直線檢測
通過分析圖片的線條結(jié)構(gòu)和幾何形狀來構(gòu)建出建筑外框,適合建筑設計的使用。
Seg 區(qū)塊標注
通過對原圖內(nèi)容進行語義分割,可以區(qū)分畫面色塊,適用于大場景的畫風更改。
Normal Map 法線貼圖
適用于三維立體圖,通過提取用戶輸入圖片中的 3D 物體的法線向量,以法線為參考繪制出一副新圖,此圖與原圖的光影效果完全相同。
Depth 深度檢測
通過提取原始圖片中的深度信息,可以生成具有同樣深度結(jié)構(gòu)的圖。還可以通過 3D 建模軟件直接搭建出一個簡單的場景,再用 Depth 模型渲染出圖。
ControlNet 還有項關(guān)鍵技術(shù)是可以開啟多個 ControlNet 的組合使用,對圖像進行多條件控制。例如:你想對一張圖像的背景和人物姿態(tài)分別進行控制,那我們可以配置 2 個 ControlNet,第 1 個 ControlNet 使用 Depth 模型對背景進行結(jié)構(gòu)提取并重新風格化,第 2 個 ControlNet 使用 OpenPose 模型對人物進行姿態(tài)控制。此外在保持 Seed 種子數(shù)相同的情況下,固定出畫面結(jié)構(gòu)和風格,然后定義人物不同姿態(tài),渲染后進行多幀圖像拼接,就能生成一段動畫。
以上通過 ControlNet 的 8 個主要模型,我們解決了圖像結(jié)構(gòu)的控制問題。接下來就是對圖像風格進行控制。
3. 圖像風格控制
Stable Diffusion 實現(xiàn)圖像風格化的途徑主要有以下幾種:Artist 藝術(shù)家風格、Checkpoint 預訓練大模型、LoRA 微調(diào)模型、Textual Inversion 文本反轉(zhuǎn)模型。
Artist 藝術(shù)家風格
主要通過畫作種類 Tag(如:oil painting、ink painting、comic、illustration),畫家/畫風 Tag(如:Hayao Miyazaki、Cyberpunk)等控制圖像風格。網(wǎng)上也有比較多的這類風格介紹,如:
但需要注意的是,使用藝術(shù)家未經(jīng)允許的風格進行商用,會存在侵權(quán)問題。
Checkpoint 預訓練大模型
Checkpoint 是根據(jù)特定風格訓練的大模型,模型風格強大,但體積也較大,一般 5-7GB。模型訓練難度大,需要極高的顯卡算力。目前網(wǎng)上已經(jīng)有非常多的不同風格的成熟大模型可供下載使用。如:https://huggingface.co/models?pipeline_tag=text-to-image
LoRA 微調(diào)模型
LoRA 模型是通過截取大模型的某一特定部分生成的小模型,雖然不如大模型的能力完整,但短小精悍。因為訓練方向明確,所以在生成特定內(nèi)容的情況下,效果會更好。LoRA 模型也常用于訓練自有風格模型,具有訓練速度快,模型大小適中,配置要求低(8G 顯存)的特點,能用少量圖片訓練出風格效果。常用 LoRA 模型下載地址:
- https://stableres.info
- https//civitai.com(友情提醒:不要在辦公場所打開,不然會很尷尬)
Textual Inversion 文本反轉(zhuǎn)模型
Textual Inversion 文本反轉(zhuǎn)模型也是微調(diào)模型的一種,它是針對一個風格或一個主題訓練的風格模型,一般用于提高人物還原度或優(yōu)化畫風,用這種方式生成的模型非常小,一般幾十 KB,在生成畫作時使用對應 Tag 在 prompt 中進行調(diào)用。
自有風格模型訓練
Stable Diffusion 的強大之處還在于能夠自定義訓練風格模型,如果現(xiàn)有風格無法滿足要求,我們還可以自己訓練特定風格模型。Stable Diffusion 支持訓練大模型和微調(diào)模型。我比較推薦的是用 LoRA 模型訓練方法,該方法訓練速度快,模型大小適中(100MB 左右),配置要求低(8G 顯存),能用極少量圖片訓練出風格效果。例如:下圖中我用了 10 張工作中的素材圖,大概花了 20 分鐘時間訓練出該風格的 LoRA 模型,然后使用該模型就可以生成風格類似的圖片。如果將訓練樣本量增大,那么訓練出來的風格樣式會更加精確。
了解了 Stable Diffusion 能干什么后,再來介紹下如何部署安裝使用它。
以下主要介紹三種部署安裝方式:云端部署、本地部署、本機安裝,各有優(yōu)缺點。當本機硬件條件支持的情況下,推薦本地部署,其它情況推薦云端方式。
1. 云端部署 Stable Diffusion
通過 Google Colab 進行云端部署,推薦將成熟的 Stable Diffusion Colab 項目復制到自己的 Google 云端硬盤運行,省去配置環(huán)境麻煩。這種部署方式的優(yōu)點是:不吃本機硬件,在有限時間段內(nèi),可以免費使用 Google Colab 強大的硬件資源,通常能給到 15G 的 GPU 算力,出圖速度非常快。缺點是:免費 GPU 使用時長不固定,通常情況下一天有幾個小時的使用時長,如果需要更長時間使用,可以訂閱 Colab 服務。
推薦兩個目前比較好用的 Stable Diffusion Colab,選擇相應模型版本運行即可:
- Stable Diffusion Colab:github.com/camenduru/stable-diffusion-webui-colab (不帶 ControlNet)
- ControlNet Colab:github.com/camenduru/controlnet-colab(帶 ControlNet)
Colab 運行界面如下,點擊連接虛擬機,連接成功后點擊左側(cè)運行代碼,等待環(huán)境自動配置完成后,點擊 WebUI URL 即可運行 Stable Diffusion。
Stable Diffusion WebUI 運行界面如下,在后面的操作方法里我會介紹下 Stable Diffusion 的基礎操作。
2. 本地部署 Stable Diffusion
相較于 Google Colab 云端部署,本地部署 Stable Diffusion 的可擴展性更強,可自定義安裝需要的模型和插件,隱私性和安全性更高,自由度也更高,而且完全免費。當然缺點是對本機硬件要求高,Windows 需要 NVIDIA 顯卡,8G 以上顯存,16G 以上內(nèi)存。Mac 需要 M1/M2 芯片才可運行。
本地部署方式主要分四步,以 Mac M1 為例:
第 1 步:安裝 Homebrew 和 Python3.10 環(huán)境
Homebrew 是一個包管理工具,具體安裝方法可參考: https://brew.idayer.com/
Python3.10 安裝:brew install cmake protobuf rust python@3.10 git wget
第 2 步:克隆 Stable Diffusion WebUI 項目倉庫
推薦下載 AUTOMATIC1111 的 Stable Diffusion WebUI,能很好的支持 ControlNet 擴展。
克隆項目倉庫:git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
第 3 步:下載并存放 Stable Diffusion 模型
Stable Diffusion 模型可以下載官方提供的 1.5 或 2.0 版本的 ckpt 文件,其它風格模型則根據(jù)自己需要下載。下載地址:huggingface.co/models?pipeline_tag=text-to-image
下載完后找到 stable-diffusion-webui 文件夾,把下載的 ckpt 大模型文件存放到 stable-diffusion-webui/models/Stable-diffusion 目錄下。
如果下載了 LoRA 模型的 safetensors 文件,則存放到 stable-diffusion-webui/models/Lora 目錄中。
Textual Inversion 文本反轉(zhuǎn)模型的 pt 文件,存放到 stable-diffusion-webui/embeddings 目錄中。
第 4 步:運行 Stable Diffusion WebUI
模型文件存放完成后,運行 Stable Diffusion WebUI:
先輸入 cd stable-diffusion-webui 再輸入 ./webui.sh,程序會自動完成下載安裝。
運行完畢后顯示:Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`
在瀏覽器中打開 http://127.0.0.1:7860 ,即可運行 Stable Diffusion WebUI
需要用到的資源:
- Homebrew 包管理工具:brew.idayer.com/guide/
- Python 安裝: www.python.org/downloads/
- Stable Diffusion 項目倉庫:github.com/AUTOMATIC1111/stable-diffusion-webui
- Stable Diffusion 模型:huggingface.co/models?pipeline_tag=text-to-image
ControlNet 的安裝
安裝完 Stable Diffusion WebUI 后,我們再安裝 ControlNet 擴展,以便進行圖像的精準控制。
安裝方法:
第 1 步:安裝 ControlNet 插件
點擊擴展,選擇從 URL 安裝,輸入插件地址 https://github.com/Mikubill/sd-webui-controlnet ,點擊 Install 后重啟 WebUI。
第 2 步:安裝 ControlNet 模型
打開模型下載頁面 https://huggingface.co/lllyasviel/ControlNet/tree/main
- 將 annotator 目錄中的人體檢測預處理模型 body_pose_model.pth 和 hand_pose_model.pth 下載至本地 stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/openpose 目錄。
- 將深度圖模型 dpt_hybrid-midas-501f0c75.pt 下載至本地 stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/midas 目錄
將 models 目錄中的文件下載至本地 stable-diffusion-webui/extensions/sd-webui-controlnet/models 目錄 - 重啟 WebUI 即可使用 ControlNet
解決 ControlNet 在 Mac M1 上無法運行問題
對于 Mac M1 芯片的電腦來說,直接運行 ControlNet 會報錯,導致無法使用 ControlNet。原因是 CUDA 是適用于 NVIDIA GPU 的計算框架,當前 Mac OS 無法使用此框架,因此腳本會嘗試使用 CPU,但 M1 不支持半精度數(shù)字。因此我們需要跳過 CUDA 并使用 no-half。
解決方法:
- 找到 webui-macos-env.sh 文件
- 添加 export COMMANDLINE_ARGS="--precision full --no-half --skip-torch-cuda-test"
3. 本機安裝 DiffusionBee
如果覺得云端部署和本地部署比較繁瑣,或?qū)κ褂靡鬀]有那么高,那就試下最簡單的一鍵安裝方式。下載 Diffusionbee 應用:diffusionbee.com/download。優(yōu)點是方便快捷,缺點是擴展能力差(可以安裝大模型,無法進行插件擴展,如 ControlNet)。
1. Stable Diffusion 基礎操作
文生圖
如圖所示 Stable Diffusion WebUI 的操作界面主要分為:模型區(qū)域、功能區(qū)域、參數(shù)區(qū)域、出圖區(qū)域。
- txt2img 為文生圖功能,重點參數(shù)介紹:
- 正向提示詞:描述圖片中希望出現(xiàn)的內(nèi)容
- 反向提示詞:描述圖片中不希望出現(xiàn)的內(nèi)容
- Sampling method:采樣方法,推薦選擇 Euler a 或 DPM++ 系列,采樣速度快
- Sampling steps:迭代步數(shù),數(shù)值越大圖像質(zhì)量越好,生成時間也越長,一般控制在 30-50 就能出效果
- Restore faces:可以優(yōu)化臉部生成
- Width/Height:生成圖片的寬高,越大越消耗顯存,生成時間也越長,一般方圖 512x512,豎圖 512x768,需要更大尺寸,可以到 Extras 功能里進行等比高清放大
- CFG:提示詞相關(guān)性,數(shù)值越大越相關(guān),數(shù)值越小越不相關(guān),一般建議 7-12 區(qū)間
- Batch count/Batch size:生成批次和每批數(shù)量,如果需要多圖,可以調(diào)整下每批數(shù)量
- Seed:種子數(shù),-1 表示隨機,相同的種子數(shù)可以保持圖像的一致性,如果覺得一張圖的結(jié)構(gòu)不錯,但對風格不滿意,可以將種子數(shù)固定,再調(diào)整 prompt 生成
圖生圖
img2img 功能可以生成與原圖相似構(gòu)圖色彩的畫像,或者指定一部分內(nèi)容進行變換。可以重點使用 Inpaint 圖像修補這個功能:
- Resize mode:縮放模式,Just resize 只調(diào)整圖片大小,如果輸入與輸出長寬比例不同,圖片會被拉伸。Crop and resize 裁剪與調(diào)整大小,如果輸入與輸出長寬比例不同,會以圖片中心向四周,將比例外的部分進行裁剪。Resize and fill 調(diào)整大小與填充,如果輸入與輸出分辨率不同,會以圖片中心向四周,將比例內(nèi)多余的部分進行填充
- Mask blur:蒙版模糊度,值越大與原圖邊緣的過度越平滑,越小則邊緣越銳利
- Mask mode:蒙版模式,Inpaint masked 只重繪涂色部分,Inpaint not masked 重繪除了涂色的部分
- Masked Content:蒙版內(nèi)容,fill 用其他內(nèi)容填充,original 在原來的基礎上重繪
- Inpaint area:重繪區(qū)域,Whole picture 整個圖像區(qū)域,Only masked 只在蒙版區(qū)域
- Denoising strength:重繪幅度,值越大越自由發(fā)揮,越小越和原圖接近
ControlNet
安裝完 ControlNet 后,在 txt2img 和 img2img 參數(shù)面板中均可以調(diào)用 ControlNet。操作說明:
- Enable:啟用 ControlNet
- Low VRAM:低顯存模式優(yōu)化,建議 8G 顯存以下開啟
- Guess mode:猜測模式,可以不設置提示詞,自動生成圖片
- Preprocessor:選擇預處理器,主要有 OpenPose、Canny、HED、Scribble、Mlsd、Seg、Normal Map、Depth
- Model:ControlNet 模型,模型選擇要與預處理器對應
- Weight:權(quán)重影響,使用 ControlNet 生成圖片的權(quán)重占比影響
- Guidance strength(T):引導強度,值為 1 時,代表每迭代 1 步就會被 ControlNet 引導 1 次
- Annotator resolution:數(shù)值越高,預處理圖像越精細
- Canny low/high threshold:控制最低和最高采樣深度
- Resize mode:圖像大小模式,默認選擇縮放至合適
- Canvas width/height:畫布寬高
- Create blank canvas:創(chuàng)建空白畫布
- Preview annotator result:預覽注釋器結(jié)果,得到一張 ControlNet 模型提取的特征圖片
- Hide annotator result:隱藏預覽圖像窗口
LoRA 模型訓練說明
前面提到 LoRA 模型具有訓練速度快,模型大小適中(100MB 左右),配置要求低(8G 顯存),能用少量圖片訓練出風格效果的優(yōu)勢。
以下簡要介紹該模型的訓練方法:
第 1 步:數(shù)據(jù)預處理
在 Stable Diffusion WebUI 功能面板中,選擇 Train 訓練功能,點選 Preprocess images 預處理圖像功能。在 Source directory 欄填入你要訓練的圖片存放目錄,在 Destination directory 欄填入預處理文件輸出目錄。width 和 height 為預處理圖片的寬高,默認為 512x512,建議把要訓練的圖片大小統(tǒng)一改成這個尺寸,提升處理速度。勾選 Auto focal point crop 自動焦點裁剪,勾選 Use deepbooru for caption 自動識別圖中的元素并打上標簽。點擊 Preprocess 進行圖片預處理。
第 2 步:配置模型訓練參數(shù)
在這里可以將模型訓練放到 Google Colab 上進行,調(diào)用 Colab 的免費 15G GPU 將大大提升模型訓練速度。LoRA 微調(diào)模型訓練工具我推薦使用 Kohya,運行 Kohya Colab: https://colab.research.google.com/github/Linaqruf/kohya-trainer/blob/main/fast-kohya-trainer.ipynb
配置訓練參數(shù):
先在 content 目錄建立 training_dir/training_data 目錄,將步驟 1 中的預處理文件上傳至該數(shù)據(jù)訓練目錄。然后配置微調(diào)模型命名和數(shù)據(jù)訓練目錄,在 Download Pretrained Model 欄配置需要參考的預訓練模型文件。其余的參數(shù)可以根據(jù)需要調(diào)整設置。
第 3 步:訓練模型
參數(shù)配置完成后,運行程序即可進行模型訓練。訓練完的模型將被放到 training_dir/output 目錄,我們下載 safetensors 文件格式的模型,存放到 stable-diffusion-webui/models/Lora 目錄中即可調(diào)用該模型。由于直接從 Colab 下載速度較慢,另外斷開 Colab 連接后也將清空模型文件,這里建議在 Extras 中配置 huggingface 的 Write Token,將模型文件上傳到 huggingface 中,再從 huggingface File 中下載,下載速度大大提升,文件也可進行備份。
2. Prompt 語法技巧
文生圖模型的精髓在于 Prompt 提示詞,如何寫好 Prompt 將直接影響圖像的生成質(zhì)量。
提示詞結(jié)構(gòu)化
Prompt 提示詞可以分為 4 段式結(jié)構(gòu):畫質(zhì)畫風 + 畫面主體 + 畫面細節(jié) + 風格參考
- 畫面畫風:主要是大模型或 LoRA 模型的 Tag、正向畫質(zhì)詞、畫作類型等
- 畫面主體:畫面核心內(nèi)容、主體人/事/物/景、主體特征/動作等
- 畫面細節(jié):場景細節(jié)、人物細節(jié)、環(huán)境燈光、畫面構(gòu)圖等
- 風格參考:藝術(shù)風格、渲染器、Embedding Tag 等
提示詞語法
- 提示詞排序:越前面的詞匯越受 AI 重視,重要事物的提示詞放前面
- 增強/減弱:(提示詞:權(quán)重數(shù)值),默認 1,大于 1 加強,低于 1 減弱。如 (doctor:1.3)
- 混合:提示詞 | 提示詞,實現(xiàn)多個要素混合,如 [red|blue] hair 紅藍色頭發(fā)混合
- + 和 AND:用于連接短提示詞,AND 兩端要加空格
- 分步渲染:[提示詞 A:提示詞 B:數(shù)值],先按提示詞 A 生成,在設定的數(shù)值后朝提示詞 B 變化。如[dog:cat:30] 前 30 步畫狗后面的畫貓,[dog:cat:0.9] 前面 90%畫狗后面 10%畫貓
- 正向提示詞:masterpiece, best quality 等畫質(zhì)詞,用于提升畫面質(zhì)量
- 反向提示詞:nsfw, bad hands, missing fingers……, 用于不想在畫面中出現(xiàn)的內(nèi)容
- Emoji:支持 emoji,如 ?? 形容表情,?? 修飾手
常用提示詞舉例:
3. ChatGPT 輔助生成提示詞
我們也可以借助 ChatGPT 幫我們生成提示詞參考。
- 給 ChatGPT 一段示例參考:https://dreamlike.art/guides/using-openai-chat-gpt-to-write-stable-diffusion-prompts
- 根據(jù)參考生成 Prompts,再添加細節(jié)潤色
4. Stable Diffusion 全中文環(huán)境配置
在實際使用中,我們還可以把 Stable Diffusion 配置成全中文環(huán)境,這將大大增加操作友好度。全中文環(huán)境包括了 Stable Diffusion WebUI 的漢化和 Prompt 支持中文輸入。
Stable Diffusion WebUI 漢化
- 安裝中文擴展插件:點擊 Extensions 選擇 Install from URL,輸入 https://github.com/VinsonLaro/stable-diffusion-webui-chinese ,點擊 Install,并重啟 WebUI
- 切換到中文模式:在 Settings 面板中,將 User interface 中的 Localization 設置成 Chinese 中文模式,重啟 WebUI 即可切換到中文界面
Prompt 中文輸入
- 下載提示詞中文擴展插件: https://github.com/butaixianran/Stable-Diffusion-Webui-Prompt-Translator ,將項目作為 zip 文件下載,解壓后放到 stable-diffusion-webui/extensions 目錄中,重啟 WebUI
- 調(diào)用百度翻譯 API:去 api.fanyi.baidu.com 申請一個免費 API Key,并將翻譯服務開通。在管理控制臺的開發(fā)者信息頁中確認 APP ID 和 密鑰
- 在 Stable Diffusion WebUI 的 Prompt Translator 面板中,選擇百度翻譯引擎,并將申請的 APP ID 和 密鑰填寫進去,點擊保存
- 使用:在 Stable Diffusion WebUI 頁面頂部會出現(xiàn)一個翻譯工具欄,我們在提示詞輸入框中輸入中文,點擊工具欄中的翻譯就能自動把提示詞替換成英文
本文簡要介紹了 AI 繪畫工具 Stable Diffusion 的安裝使用,以及如何通過 ControlNet 實現(xiàn)圖像的精準控制,如何通過模型加載和自有風格模型訓練來控制圖像畫風。可以說這些技術(shù)的出現(xiàn)使得 AI 繪畫具備了實際的生產(chǎn)能力,設計師們可以充分利用好這些強大的生產(chǎn)工具來提升設計效率。
復制本文鏈接 文章為作者獨立觀點不代表優(yōu)設網(wǎng)立場,未經(jīng)允許不得轉(zhuǎn)載。
熱評 Nile