Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /opt/bitnami/wordpress/wp-includes/functions.php on line 6114
[Python] 圖像處理 – Stable Diffusion 003 – ControlNet (1) Reference - 八寶周的研究小屋

[Python] 圖像處理 – Stable Diffusion 003 – ControlNet (1) Reference

ControlNet 是對 Stable Diffusion 影響急劇的模型,概念是為生圖設立更多的限制,由於功能眾多我只以常用的為例,那這期為線搞生圖與骨架參考兩項,試著參考原圖生成相似的圖樣。

【前言】

ControlNet 是對 Stable Diffusion 影響急劇的模型,概念是為生圖設立更多的限制,由於功能眾多我只以常用的為例,那這期為線搞生圖與骨架參考兩項,試著參考原圖生成相似的圖樣。

【重點整理】

  1. 圖生圖對於 ControlNet 線搞轉圖顏色較淡,因此推薦用文字生圖
  2. Open-Pose + Reference + IP-Adapter 能生成較相像的圖像

【重要設定】

請先透過選單中的 Extensions >> Install from URL 下載 ControlNet for WebUI
https://github.com/Mikubill/sd-webui-controlnet.git

完成後重新啟動程式,應該會發現生成設定中多出一個選單

【預計內容】

  1. Sketch to Image — Canny Edge Detection
  2. Skeleton — Open-Pose

【主要內容】

1. Sketch to Image — Canny Edge Detection

對於不擅上色的人們總夢想著有自動上色的功能,然而現實很殘酷,圖生圖是透過參考圖的內容來生成而非延伸其內容,因此常有全身白且場景白的狀態,並與原圖架構不一致,那麼究竟如何解決這項問題呢?

input
output

透過 ControlNet 我們執行 Canny Edge Detection,便能夠依賴該插件用原圖的邊線做限制來達成。

Step. 1 — 點開設定介面,首先將線搞傳入,並按下 Enable 啟用這個單元,最後選擇 Canny 邊線預測。

Step. 2 — 再來選用 Canny 的模型,我所使用的是作者提供的原模型。【模型下載處】

完成之後,讓我們看看成品如何吧!很明顯參考了原本的線搞架構,十分地成功。

canny edge detection
output

但在圖生圖與文字生圖的對照很明顯,相同的 seed 與 prompt 下,後者的效果更加理想。那我個人認為的原因,是圖生圖同時參考了白底,導致顏色偏淡,而形成不同的畫風。

image-to-image
text-to-image

2. Skeleton — Open-Pose

Open-Pose 目前有很多尷尬的境遇是:他是參考骨架生成新的圖,因此難保留原始風貌。接著,由於其是透過區塊分割做判斷,因此線搞圖一般是無法判斷出骨架的。最重要的,這個模型本身針對真人真物,因此動漫的圖也很常偵測不到。

那在 Preprocessor,我習慣上是以最精準的 full 為主,那其中還有針對動物的 animal_openpose 可使用。

嘗試線搞生骨架
嘗試動漫畫風生骨架
嘗試人形(Action Model)風格生骨架
嘗試用真人 cosplay 生骨架(圖源:by 小柔 SeeU

那我接著用人形的圖操作下去,點擊 Show Preview >> Run Preprocessor 就會跳出右側的黑框,接著按下 Edit 能開啟介面修改姿勢,這邊我簡單將骨架向右移動。姿勢不錯,但結果在衣著或臉型都完全不同。

那有個辦法能讓圖更相像,便是透過 Reference 提取整張原圖的信息,並傳遞給 Open-Pose(兩個 Unit)。那我這時會建議 Reference Only 搭配 ControlNet is More Important,強化原圖訊息的占比。

Prompt is More Important
Balanced
ControlNet is More Important

那在這之上,我們能再依靠 IP-Adapter 更進一步,簡單說類似於圖片轉提詞的模型,那也因此要搭配 Reference 做使用,那我所使用的是 plus 加強版,但對於 GPU 不足的電腦代價是超級久的生成時間( 測試時 20sec→12min)。另外推薦將 Reference 改回 Balanced,避免明顯的重疊片段。

+ IP-Adapter
.
+ Reference (ControlNet)
+ IP-Adapter
+ Reference (Balanced)
+ IP-Adapter

那為了測試是否有必要用到最高規格,我又分別測試了 base 與 light 版來做對照(兩者都 17sec)。但結果出來真的是天壤之別,看來有必要空出 GPU 用量了。

<plus>
<base>
<light>

【後話】

那這期先利用參考圖去做類似的生成就到這邊為止,那再下一篇我應該會以邊線的模型進行介紹,那我們下期再會拉。

【參考資料】

[1] 範例用圖 — 胡桃 by あんべよしろう
https://www.pixiv.net/artworks/93870151

[2] ControlNet: A Complete Guide
https://stable-diffusion-art.com/controlnet/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.