正文
今天要來看一個ControlNet新出的模型 -- Reference以及它的一些用法。
上個星期ControlNet發佈了更新版v1.1.167,其中包含了一個很好玩的新前置處理器 -- reference_only。這是一個很好玩的東西,它模仿了一個Inpaint的技巧,就是故意生成雙胞胎。
Stable Diffusion有個很煩人的特性,就是如果畫布尺寸過大,AI會有很大機率產生一模一樣但是姿態不同的人物或動物來填充畫布。解決雙胞胎效果的方法通常是先從小尺寸畫布開始,然後用Hires. fix或Upscaling擴展尺寸並加細節。
但是雙胞胎效果也有一個很好玩的應用,就是故意製造雙胞胎效果,藉以製造相似但是型態不一樣的角色。
以這張狗狗圖為例,用512x512來製圖,然後在繪圖軟體裡面將圖擴展成1024x512,新的地方留白,然後放進Inpaint裡面將留白的地方選擇起來:
接著用:
- Masked Content: Latent Noise
- Denoising strength: 約0.75
這樣跑了幾張圖之後,有很大機率可以刷到非常相似的雙胞胎。
而ControlNet的Reference就是重現相似的方法,但是能更精緻操控出圖的走向,並且避免這種方法的繁瑣以及頻繁的崩圖。
以這張圖為範例,在txt2img內,把ControlNet的preprocessor設定為reference_only。將範例圖拉進ControlNet,其他設定都維持一樣,就可以開始跑了!
我們在這邊只用簡單的正向提示詞來跑圖:
(extremely detailed CG unity 8k wallpaper), best quality, masterpiece , hdr, ultra highres, 1girl, blunt hair, black long hair, white kimono,
dynamic pose, dynamic angle,
from above, slight smiling
Reference功能可以僅靠著這麼粗略的提示詞,就幫你畫出以範例圖為參考而產生的人物。我在提示詞中沒有提到帽子,所以產出的人物圖也不會有帽子。
這些提示詞必須先測試過,確定了產出的成果圖有你需要的元素,如果沒有的話,就自行增加提示詞來補上。例如我的範例圖中,Reference並沒有提取瀏海與髮色的特徵,所以要自己補上blunt bangs(齊眉劉海)與black long hair(黑長髮)。
然後加上了
dynamic pose, dynamic angle等提示詞,讓產出的角色可以有更多的姿勢,用
from above, slight smiling讓角色有更多的攝影角度與表情,之後再使用
X/Y/Z plot來產出各種組合的圖。
就這樣,產生了好幾張與參考圖非常相似,但是表情,角度都有稍微不同的成果圖。
這個功能的用途,我能想到的第一個用途就是拿來當LoRA的訓練素材。通常LoRA訓練需要用到20張到40張的素材圖,最好是多角度多表情多光影,存粹使用提示詞來產生素材圖通常很難張張相像,所以使用Reference來產生一批表情各異、角度微調的類似圖片,可以省下很多時間。
第二個用途就是結合ControlNet的其他功能,例如openpose來固定出圖人物的姿勢與角度,產生一個指定的角色圖,例如配合使用openpose來出圖:
另一個用途就是讓我們能不使用LoRA就在不同模型間產生一個類似的角色圖,在某些情況下直接跳過訓練LoRA的階段,直接算圖快速滿足一些特定需求。
例如我們想在revAnimated這個模型產生哥布林,但是它產生的樣子與RPGV4模型產生的相差很多,而我想要RPGv4的哥布林外型,但又要在revAnimated產生比較柔和的皮膚感覺:
之前最穩定的做法是使用RPGv4的哥布林圖片訓練一個專門的LoRA,然後在revAnimated裡面使用,但是現在有了這個新功能,就可以直接在目標模型內生成原始模型的角色圖了:
這樣我們就可以省下訓練LoRA的時間跟資源在烘焙雜兵LoRA上了!
限制
測試了Reference一陣子,發覺這個功能還有許多侷限:
- 多人畫面會造成參考錯亂,因為AI不知道哪個角色的特徵要對應到成果圖的哪個角色,很常出現特徵錯亂或者多人特徵混合在一起出圖。
- 3D或真實照片通常都提取不了特徵,成果圖會跟參考圖差異非常大,這可能是Reference模型自己的問題,只能等待作者解決,或者我們能開發出其他方法讓模型能夠正確讀取照片人物的特徵。
祝大家AI算圖愉快!
參考
進階技巧目錄: