無需Lora煉丹也能保持同一人物?ControlNet新功能Refrence Only測評
歡迎來到覺悟之坡AI繪畫系列第39篇。
本文作者:螞蟻
一.前言
上周大名鼎鼎的controlnet插件發(fā)布了新的功能更新,并被作者標(biāo)記為【主要更新】——Reference only,這個(gè)功能有多強(qiáng)大?
按照controlnet作者的介紹:
Now we have a?reference-only?preprocessor that does not require any control models. It can guide the diffusion directly using images as references.
翻譯:現(xiàn)在我們有一個(gè) reference-only預(yù)處理,它不需要任何控制模型即可實(shí)現(xiàn)直接使用一張圖片作為參考來引導(dǎo)擴(kuò)散。

如作者所給出的這個(gè)例子,只在controlnet中上傳了一張狗狗的圖片,引導(dǎo)詞也非常簡練。
僅僅是?"a dog running on grassland, best quality, ...",然后就得到了主體相似、風(fēng)格也相似,但是動(dòng)作符合引導(dǎo)描述的圖像,效果可以說非常驚艷。
在github評論區(qū),有用戶演示了使用二次元圖片和midjourney生成圖片作為參考,生成圖片的效果,讓人直呼——從此要lora何用?(并不?。?/p>
如果能夠省去lora訓(xùn)練的成本確實(shí)很有誘惑,畢竟訓(xùn)練lora需要很好的顯卡還要大量時(shí)間處理圖片。
那么我們就來親自體驗(yàn)一下Reference only這個(gè)功能,看看效果如何?
(后面為了方便表述,暫且把reference only叫做“參考模式”。)
二.安裝/更新controlnet
1.版本要求
根據(jù)controlnet作者的說明:參考模式這項(xiàng)新功能需要我們將插件更新到1.1.153版本及以上。
還沒有更新的小伙伴需要更新一下你的controlnet插件,如果你是從1.1以下更新的,那么你要額外下載controlnet預(yù)處理模型。
如果你的網(wǎng)絡(luò)情況比較好,你可以讓webUI自己更新,如果網(wǎng)絡(luò)情況一般則需要手動(dòng)更新。
如果需要安裝/更新的小伙伴請繼續(xù)往下看,如果你的controlnet符合版本要求,請直接跳過。
2.安裝、更新及預(yù)處理模型下載
我相信在今天stable diffusion的玩家不可能沒安裝controlnet這個(gè)神級插件。如果需要安裝請參考新手安裝controlnet教程。
而作為使用mac版的(比如我),從來不敢無腦更新,因?yàn)橛械牟寮嫒菪源嬖趩栴},所以我一般都是去github下載代碼包的zip文件,然后解壓并替換extensions文件夾下的插件文件。
最后更新好controlnet插件后,記得去下載預(yù)處理模型,否則插件無法正常工作。https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main。
目前預(yù)處理模型已經(jīng)有幾十個(gè)了,如果不知道哪些有用就都下吧,以后慢慢都會(huì)用到。
下載好放到stable-diffusion-webui\extensions\sd-webui-controlnet\models文件夾。
更新好后務(wù)必重新開啟webUI,如果controlnet里沒有顯示預(yù)處理模型,請點(diǎn)擊旁邊的刷新按鈕,如果還沒出來,請檢查模型放置是否有誤。
三.測試和使用

如果sd webUI如上圖顯示,在預(yù)處理器里面可以找到Reference only了,那么恭喜你準(zhǔn)備工作已經(jīng)完成了。
首先我先復(fù)現(xiàn)一下controlnet的演示案例,看看作者是不是在吹牛皮。
(一)簡單案例的復(fù)現(xiàn)
為了盡可能測試參考模式的能力,我從搜索引擎找到一張寵物狗的實(shí)拍照片,為了不干擾模型的判斷,盡可能保證主體清晰無遮擋,作為簡單測試也確保畫面中只有一個(gè)主體,裁剪為正方形,如下:

開始操作,首先保險(xiǎn)起見底模選擇泛用性好一些的,比如sd1.5/2.1測試:
1.在文生圖現(xiàn)象卡下,輸入正詞(P prompt):a dog running on grassland, best quality,反詞(N prompt)暫不填寫;
2.采樣器(sampling method)選擇Euler A,采樣步數(shù)(sampling steps)設(shè)置20,出圖寬(width)高(height)設(shè)置為512,CFG尺度(cfg sacler)設(shè)置為7;
3.將素材圖拖入controlnet單張圖片區(qū)域(single image),勾選啟用(Enable)、像素完美(pixel perfect),低顯存(low vram)酌情選擇;
4.預(yù)處理器(preprocessor)選擇reference_only,這時(shí)候旁邊的預(yù)處理模型選擇框會(huì)消失,控制模式(control mode)選擇平衡(balanced),如果你是1.1.17版本以上的controlnet,這里你需要將風(fēng)格保真度(Style Fidelity)調(diào)整為1;

5.點(diǎn)擊生成按鈕
可以看到生成的圖確實(shí)和素材還比較貼合,但是也有意外情況(右上角那張),但是我們的引導(dǎo)詞中沒有描述狗的品種、顏色,也沒有使用任何lora或者專門訓(xùn)練的底模,這樣的生成結(jié)果已經(jīng)達(dá)到了預(yù)期,當(dāng)然還是有一定的隨機(jī)性,可以通過多次生成篩選,或者多次迭代prompt,優(yōu)化生成結(jié)果應(yīng)該也不難。
(二)測試二次元圖片
以這張圖為素材,同樣是來自搜索引擎:

步驟只需進(jìn)行少量修改:
1.選擇一個(gè)二次元底模,比如anything、counterfeit、ghostmix之類的,我選的ghostmix測試;
2.在文生圖現(xiàn)象卡下,輸入正詞(P prompt):1girl standing nearby street,city landscape, best quality,
反詞(N prompt)使用以下ng_deepnegative_v1_75t ,easynegative。
*如果這兩個(gè)反詞的文本拓展沒有裝的話就復(fù)制一段人像常用的反詞就行(可以在huggingface或者c站找到很多類似的embedding);
3.勾選面部修復(fù)(restore faces),并適當(dāng)調(diào)高采樣步數(shù)(sampling steps),我設(shè)置到了50(一般情況下無需這么高,我只怕不夠,懶得重做而已);
4.將素材圖拖到controlnet單張圖片區(qū)域(single image),其余設(shè)置不變;
5.點(diǎn)擊生成;

稍等片刻得到了結(jié)果,發(fā)現(xiàn)發(fā)型有點(diǎn)問題,但是也大差不差了(我的要求還真低)。
但是可以看到背景確實(shí)按照描述詞替換成街景了,而且與構(gòu)圖視角非常和諧,果然如作者所說——取代了inpaint。
但是不要忘了,我這個(gè)教程的標(biāo)題可是要取代lora,既然挖了這么大的坑,我就得含淚填下去,那么從prompt下手,優(yōu)化一下吧
這一次我把正詞(P prompt)修改為:
1girl standing nearby street,(short hair),city landscape, best quality



然后問題基本就解決,上面跑了三次證明了對角色的還原已經(jīng)在80%了,這個(gè)prompt對于大多數(shù)老手來說都是過于簡單的描述,還有很大的發(fā)揮余地,比如描述一下服飾,增加一些細(xì)節(jié)提示等等。
當(dāng)然如果你還覺得這篇文章是標(biāo)題黨,那么請跟我繼續(xù)測試。
(三)對SD生成真人圖片繼續(xù)演繹
前面可以說都是前菜,看到這里我們開始真正測試參考模式能不能替代lora,同時(shí)測試一下對真人圖片能否達(dá)到預(yù)期。
1.首先我們使用chilloutmix_ni模型,正詞、反詞填寫如下:
2.Sampler: DPM++ 2M Karras,步數(shù)30,CFG Scale設(shè)置為7,開啟面部修復(fù)
3.不使用controlnet,lora用不用隨意
Postive prompt:
masterpiece, best quality, 1girl, aqua eyes, black hair, closed mouth, multicolored background, looking at viewer, outdoors, solo, upper body, alluring, clean, beautiful face, pure face, pale skin, sexy pose,((tube top, navel, shorts)),short hair, ((perfect female figure)), mature female, narrow waist, chinese deity, seductive, highly detailed,best quality, masterpiece, highres, original, extremely detailed 8K, wallpaper, masterpiece, best quality, illustration, beautifully detailed eyes, cinematic lighting, earrings, jewelry,
Negative prompt:?
sketches, (worst quality:2), (low quality:2), (normal quality:2), multiple breasts, (mutated hands and fingers:1.5 ), (long body :1.3), (mutation, poorly drawn :1.2) , black-white, bad anatomy, liquid body, liquid tongue, disfigured, malformed, mutated, anatomical nonsense, text font ui, error, malformed hands, long neck, blurred, lowers, lowres, bad anatomy, bad proportions, bad shadow, uncoordinated body, unnatural body, fused breasts, bad breasts, huge breasts, poorly drawn breasts, extra breasts, liquid breasts, heavy breasts, missing breasts, huge haunch, huge thighs, huge calf, bad hands, fused hand, missing hand,

然后我們得到這樣一張圖,現(xiàn)在我們就用這張圖測試controlnet的參考模式。
我目前想到的玩法有以下幾種,我們逐一測試:
替換背景和服裝
保留主角,替換動(dòng)作
更換模型,改變畫風(fēng)
等等
(四)替換背景和服裝
如果你仔細(xì)讀了這張圖的描述詞就可以發(fā)現(xiàn),所有內(nèi)容幾乎都是描述人物本身,對于背景僅僅描述為戶外的多色背景(multicolored background,outdoors),所以就有很大的隨機(jī)性,這里我們來嘗試保留主角人物形象,替換背景為賽博朋克場景。
1.我們將這張圖拖入到controlnet圖像上傳區(qū),勾選啟用和像素完美(pixel perfect),
2.預(yù)處理器(preprocessor)選擇reference_only,控制模式選擇balanced,風(fēng)格保真度(sytle fidelity)設(shè)置為1,
3.采樣方法修改成Eumler a(這里我測試了,用DPM++ 2M Karras確實(shí)沒有用eumler a對原圖擬合的好)
4.修改正詞,改成著重描述畫面背景:
masterpiece, best quality, 1girl, indoor, (scifi style background), ((in a local bar)),cyberpunker lighting, ((neon lamp)), sci-fi details,?insane level of details,? hyper realistic, cinematic, composition
5.因?yàn)樵瓐D有一定的背景內(nèi)容,為了能覆蓋掉這里需要加深提示詞的相關(guān)性(CFG Scale),我從7調(diào)整到了9,
6.如果你剛才使用了lora,這一次取消lora,這樣才能驗(yàn)證主體的一致性是不是參考模式作用的。

這次圖放的多一點(diǎn),可以看到共性了吧,衣服樣式顏色雖然有的迷失了,但是樣貌可以說非常穩(wěn),甚至比用多個(gè)lora混合的時(shí)候還穩(wěn)。
而這一切,都是一張圖和引導(dǎo)詞中的一個(gè)1girl實(shí)現(xiàn)的。
順便說一句這個(gè)例子里面我們實(shí)現(xiàn)的是更換背景,而衣服的改變是比較隨機(jī)的,如果要更換衣服我們可以在第二次生成的引導(dǎo)詞中著重描述衣服即可。
(五)保留主角,替換動(dòng)作
有了前面的基礎(chǔ),我就不一步一步講解了,只說一下思路,其實(shí)很簡單,就是不更改引導(dǎo)詞,而在第二次生成的時(shí)候創(chuàng)建兩個(gè)controlnet,一個(gè)是參考模式,另一個(gè)是open pose即可。
如果不知道怎么同時(shí)使用多個(gè)controlnet的,請到設(shè)置settings里面修改,見下圖。

我們還是用那張圖作為參考,在新的controlnet中選擇上次生成的隨便一張圖,我選了一張動(dòng)作比較符合場景,但是衣服沒有借鑒參考原圖的一張。
順便看看能不能把這張圖的服飾修復(fù)到我們前一試驗(yàn)的期望效果。

效果相當(dāng)完美不是嗎?我們不僅解決了前一試驗(yàn)中不能100%copy原圖風(fēng)格的問題,而且達(dá)到了指定動(dòng)作的效果。
這里需要說一個(gè)重要的技巧,如果你觀察過stable diffusion的生成(擴(kuò)散)過程,會(huì)發(fā)現(xiàn),擴(kuò)散的早期顏色并不會(huì)穩(wěn)定下來,而構(gòu)圖卻會(huì)。
所以我一般會(huì)將open pose設(shè)定為早期介入,而reference_only相對晚一些介入,這個(gè)技巧對于reference_only和canny聯(lián)合使用的時(shí)候有更為出色的效果。

這樣設(shè)置的目的是避免參考圖的構(gòu)圖和畫面元素影響最終構(gòu)圖。設(shè)置方式如下:
(六)更換模型,改變畫風(fēng)
這個(gè)比較簡單了,就直接替換底模,就可以了,可以實(shí)現(xiàn)人像轉(zhuǎn)漫畫,2d/2.5d/3d風(fēng)格互轉(zhuǎn),相比之前使用controlnet canny的草稿模式,這個(gè)方式有兩個(gè)優(yōu)勢:
1.風(fēng)格遷移穩(wěn)定,如之前測試所見,只需稍加約束即可(引導(dǎo)詞約束或者controlnet約束);
2.風(fēng)格轉(zhuǎn)換時(shí)畫面具有隨機(jī)性,而不是千篇一律的構(gòu)圖,一張圖換一套圖,我就問你香不香?
操作非常簡單,所以直接看結(jié)果:
先回憶一下參考原圖,是這樣的

轉(zhuǎn)2.5D是這樣的

轉(zhuǎn)2D(動(dòng)漫風(fēng))是這樣的

而且這里同樣有個(gè)技巧——我只替換了底模為anything v5,但是講道理這個(gè)底模應(yīng)該出圖都是2D風(fēng)格啊,但是如果你親身去嘗試,就會(huì)發(fā)現(xiàn)參考模式會(huì)干擾生成效果,如果沒有特殊修改最多只能達(dá)到2.5D的效果。

而就像前面提到的修改參考模式在擴(kuò)散過程中進(jìn)入和退出的時(shí)機(jī),可以排除這種強(qiáng)干擾。
經(jīng)過測試,這樣的設(shè)置就可以保證降維成功(實(shí)現(xiàn)2.5 D轉(zhuǎn)2D)。
四.更好玩的事情

因?yàn)檫@部分內(nèi)容我都是開腦洞嘗試的,所以僅僅拋磚引玉,提供思路。
感興趣的朋友可以自己多多上手操作嘗試。
五.總結(jié)
通過這些測試,得到了如下使用經(jīng)驗(yàn)和結(jié)論:
參考模式可以將給定的一張圖作為生成圖的參照物,通過相對簡單的引導(dǎo)詞即可用參考圖的內(nèi)容生成到新圖中
相比controlnet草稿模式,參考模式擁有很多的隨機(jī)發(fā)揮的靈活性
參考模式可以大大減輕編寫引導(dǎo)詞的工作量
結(jié)合open pose或者多次迭代修正,可以實(shí)現(xiàn)類似lora的效果
參考模式能夠比重繪更輕易的實(shí)現(xiàn)2d,2.5d,3d的轉(zhuǎn)換
設(shè)置好controlnet進(jìn)入和退出的時(shí)機(jī)非常重要,需要觀察擴(kuò)散過程得到經(jīng)驗(yàn)
參考模式使用Eumler a采樣器效果會(huì)好于其他設(shè)置(可能是幻覺)
當(dāng)希望prompt的引導(dǎo)權(quán)重提高一些,但是又不希望降低參考模式的強(qiáng)度時(shí),提高cfg scale將是一個(gè)好的方式
<End>
好了,大家都學(xué)會(huì)了嗎?學(xué)會(huì)了記得三連哦~
這會(huì)鼓勵(lì)我們加快速度,繼續(xù)創(chuàng)作下一篇內(nèi)容~
如果沒學(xué)會(huì),有問題也可以私。
歷史AI繪畫文集,請查看AI繪畫文章合集
關(guān)注我們,更多有用又有趣的AI繪圖技能知識(shí)持續(xù)更新中~