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