ControlNet 的作用是通過添加額外控制條件,來引導(dǎo) Stable Diffusion 按照創(chuàng)作者的創(chuàng)作思路生成圖像,從而提升 AI 圖像生成的可控性和精度。在使用 ControlNet 前,需要確保已經(jīng)正確安裝 Stable Diffusion 和 ControlNet 插件。如還未安裝,可以參考這篇文章中的教程進(jìn)行安裝部署:
目前 ControlNet 已經(jīng)更新到 1.1 版本,相較于 1.0 版本,ControlNet1.1 新增了更多的預(yù)處理器和模型,原有的模型也通過更好的數(shù)據(jù)訓(xùn)練獲得了更優(yōu)的性能。以下我做簡要梳理,想要了解更多內(nèi)容可以參考作者的文檔: https://github.com/lllyasviel/ControlNet-v1-1-nightly
ControlNet 的使用方式非常靈活,既可以單模型應(yīng)用,也可以多模型組合應(yīng)用。清楚 ControlNet 的一些原理方法后,可以幫助我們更好的提升出圖效果。以下通過一些示例,簡要介紹 ControlNet 的實(shí)際用法。
1. 線稿上色
方法:通過 ControlNet 邊緣檢測模型或線稿模型提取線稿(可提取參考圖片線稿,或者手繪線稿),再根據(jù)提示詞和風(fēng)格模型對圖像進(jìn)行著色和風(fēng)格化。
應(yīng)用模型:Canny、SoftEdge、Lineart。
Canny 邊緣檢測:
Canny 是比較常用的一種線稿提取方式,該模型能夠很好的識別出圖像內(nèi)各對象的邊緣輪廓。
使用說明(以下其它模型同理):
- 展開 ControlNet 面板,上傳參考圖,勾選 Enable 啟用(如果顯存小于等于 4G,勾選低顯存模式)。
- 預(yù)處理器選擇 Canny(注意:如果上傳的是已經(jīng)經(jīng)過預(yù)處理的線稿圖片,則預(yù)處理器選擇 none,不進(jìn)行預(yù)處理),模型選擇對應(yīng)的 control_v11p_sd15_canny 模型。
- 勾選 Allow Preview 允許預(yù)覽,點(diǎn)擊預(yù)處理器旁的??按鈕生成預(yù)覽。
其它參數(shù)說明:
- Control Weight:使用 ControlNet 生成圖片的權(quán)重占比影響(多個 ControlNet 組合使用時,需要調(diào)整權(quán)重占比)。
- Starting Control Step:ControlNet 開始參與生圖的步數(shù)。
- Ending Control Step:ControlNet 結(jié)束參與生圖的步數(shù)。
- Preprocessor resolution:預(yù)處理器分辨率,默認(rèn) 512,數(shù)值越高線條越精細(xì),數(shù)值越低線條越粗糙。
- Canny 低閾值/高閾值:數(shù)值越低線條越復(fù)雜,數(shù)值越高線條越簡單。
Canny 示例:(保留結(jié)構(gòu),再進(jìn)行著色和風(fēng)格化)
SoftEdge 軟邊緣檢測:
SoftEdge 可以理解為是 ControlNet1.0 中 HED 邊緣檢測的升級版。ControlNet1.1 版本中 4 個預(yù)處理器按結(jié)果質(zhì)量排序:SoftEdge_HED > SoftEdge_PIDI > SoftEdge_HED_safe > SoftEdge_PIDI_safe,其中帶 safe 的預(yù)處理器可以防止生成的圖像帶有不良內(nèi)容。相較于 Canny,SoftEdge 邊緣能夠保留更多細(xì)節(jié)。
SoftEdge 示例:(保留結(jié)構(gòu),再進(jìn)行著色和風(fēng)格化)
Lineart 精細(xì)線稿提取:
Lineart 精細(xì)線稿提取是 ControlNet1.1 版本中新增的模型,相較于 Canny,Lineart 提取的線稿更加精細(xì),細(xì)節(jié)更加豐富。
Lineart 的預(yù)處理器有三種模式:lineart_coarse(粗略模式),lineart_realistic(詳細(xì)模式),lineart_standard(標(biāo)準(zhǔn)模式),處理效果有所不同,對比如下:
Lineart 示例:(保留結(jié)構(gòu),再進(jìn)行著色和風(fēng)格化)
2. 涂鴉成圖
方法:通過 ControlNet 的 Scribble 模型提取涂鴉圖(可提取參考圖涂鴉,或者手繪涂鴉圖),再根據(jù)提示詞和風(fēng)格模型對圖像進(jìn)行著色和風(fēng)格化。
應(yīng)用模型:Scribble。
Scribble 比 Canny、SoftEdge 和 Lineart 的自由發(fā)揮度要更高,也可以用于對手繪稿進(jìn)行著色和風(fēng)格處理。Scribble 的預(yù)處理器有三種模式:Scribble_hed,Scribble_pidinet,Scribble_Xdog,對比如下,可以看到 Scribble_Xdog 的處理細(xì)節(jié)更為豐富:
Scribble 參考圖提取示例(保留大致結(jié)構(gòu),再進(jìn)行著色和風(fēng)格化):
Scribble 手動涂鴉示例(根據(jù)手繪草圖,生成圖像):
也可以不用參考圖,直接創(chuàng)建空白畫布,手繪涂鴉成圖。
3. 建筑/室內(nèi)設(shè)計
方法:通過 ControlNet 的 MLSD 模型提取建筑的線條結(jié)構(gòu)和幾何形狀,構(gòu)建出建筑線框(可提取參考圖線條,或者手繪線條),再配合提示詞和建筑/室內(nèi)設(shè)計風(fēng)格模型來生成圖像。
應(yīng)用模型:MLSD。
建筑/室內(nèi)設(shè)計風(fēng)格模型下載:
MLSD 示例:(毛坯變精裝)
4. 顏色控制畫面
方法:通過 ControlNet 的 Segmentation 語義分割模型,標(biāo)注畫面中的不同區(qū)塊顏色和結(jié)構(gòu)(不同顏色代表不同類型對象),從而控制畫面的構(gòu)圖和內(nèi)容。
應(yīng)用模型:Seg。
Seg 語義參考: https://docs.qq.com/sheet/DYmtkWG5taWxhVkx2?tab=BB08J2
Seg 示例:(提取參考圖內(nèi)容和結(jié)構(gòu),再進(jìn)行著色和風(fēng)格化)
如果還想在車前面加一個人,只需在 Seg 預(yù)處理圖上對應(yīng)人物色值,添加人物色塊再生成圖像即可。
5. 背景替換
方法:在 img2img 圖生圖模式中,通過 ControlNet 的 Depth_leres 模型中的 remove background 功能移除背景,再通過提示詞更換想要的背景。
應(yīng)用模型:Depth,預(yù)處理器 Depth_leres。
要點(diǎn):如果想要比較完美的替換背景,可以在圖生圖的 Inpaint 模式中,對需要保留的圖片內(nèi)容添加蒙版,remove background 值可以設(shè)置在 70-80%。
Depth_leres 示例:(將原圖背景替換為辦公室背景)
6. 圖片指令
方法:通過 ControlNet 的 Pix2Pix 模型(ip2p),可以對圖片進(jìn)行指令式變換。
應(yīng)用模型:ip2p,預(yù)處理器選擇 none。
要點(diǎn):采用指令式提示詞(make Y into X),如下圖示例中的 make it snow,讓非洲草原下雪。
Pix2Pix 示例:(讓非洲草原下雪)
7. 風(fēng)格遷移
方法:通過 ControlNet 的 Shuffle 模型提取出參考圖的風(fēng)格,再配合提示詞將風(fēng)格遷移到生成圖上。
應(yīng)用模型:Shuffle。
Shuffle 示例:(根據(jù)魔獸道具風(fēng)格,重新生成一個寶箱道具)
8. 色彩繼承
方法:通過 ControlNet 的 t2iaColor 模型提取出參考圖的色彩分布情況,再配合提示詞和風(fēng)格模型將色彩應(yīng)用到生成圖上。
應(yīng)用模型:Color。
Color 示例:(把參考圖色彩分布應(yīng)用到生成圖上)
9. 角色三視圖
方法:通過 ControlNet 的 Openpose 模型精準(zhǔn)識別出人物姿態(tài),再配合提示詞和風(fēng)格模型生成同樣姿態(tài)的圖片。
應(yīng)用模型:OpenPose。在 ControlNet1.1 版本中,提供了多種姿態(tài)檢測方式,包含:openpose 身體、openpose_face 身體+臉、openpose_faceonly 只有臉、openpose_full 身體+手+臉、openpose_hand 手,可以根據(jù)實(shí)際需要靈活應(yīng)用。
OpenPose 角色三視圖示例:
要點(diǎn):上傳 openpose 三視圖,加載 charturner 風(fēng)格模型( https://civitai.com/?query=charturner ),添加提示詞保持背景干凈 (simple background, white background:1.3), multiple views
10. 圖片光源控制
方法:如果想對生成的圖片進(jìn)行打光,可以在 img2img 模式下,把光源圖片上傳到圖生圖區(qū)域,ControlNet 中放置需要打光的原圖,ControlNet 模型選擇 Depth。
應(yīng)用模型:Depth。
要點(diǎn):圖生圖中的所有參數(shù)和提示詞信息需要與原圖生成時的參數(shù)一樣,具體原圖參數(shù)可以在 PNG Info 面板中查看并復(fù)制。
示例:
ControlNet 還支持多個模型的組合使用,從而對圖像進(jìn)行多條件控制。ControlNet 的多模型控制可以在設(shè)置面板中的 ControlNet 模塊中開啟:
1. 人物和背景分別控制
方法:設(shè)置 2 個 ControlNet,第一個 ControlNet 通過 OpenPose 控制人物姿態(tài),第二個 ControlNet 通過 Seg 或 Depth 控制背景構(gòu)成。調(diào)整 ControlNet 權(quán)重,如 OpenPose 權(quán)重高于 Depth 權(quán)重,以確保人物姿態(tài)被正確識別,再通過提示詞和風(fēng)格模型進(jìn)行內(nèi)容和風(fēng)格控制。
應(yīng)用模型:OpenPose、Seg(自定義背景內(nèi)容和結(jié)構(gòu))、Depth。
示例:
2. 三維重建
方法:通過 Depth 深度檢測和 Normalbae 法線貼圖模型,識別三維目標(biāo)。再配合提示詞和風(fēng)格模型,重新構(gòu)建出三維物體和場景。
應(yīng)用模型:Depth、Normalbae。
示例:
3. 更精準(zhǔn)的圖片風(fēng)格化
方法:在 img2img 圖生圖中,通過疊加 Lineart 和 Depth 模型,可以更加精準(zhǔn)的提取圖像結(jié)構(gòu),最大程度保留原圖細(xì)節(jié),再配合提示詞和風(fēng)格模型重新生成圖像。
應(yīng)用模型:Lineart、Depth。
示例:
4. 更精準(zhǔn)的圖片局部重繪
方法:在 img2img 圖生圖的局部重繪中,通過疊加 Canny 和 Inpaint 模型,可以更加精準(zhǔn)的對圖像進(jìn)行局部重繪。
應(yīng)用模型:Canny、Inpaint。
示例:
歡迎關(guān)注作者微信公眾號:「DUX Design Center」
復(fù)制本文鏈接 文章為作者獨(dú)立觀點(diǎn)不代表優(yōu)設(shè)網(wǎng)立場,未經(jīng)允許不得轉(zhuǎn)載。
熱評 離家出走的帆高