2023年2月25日 星期六

使用離線AI繪圖套件Stable Diffusion+ControlNet外掛心得

2022下半年最瘋的電腦相關話題,莫過於AI了吧
從9月初的AI繪圖Midjourney獲獎開始
到年底突然間大紅的Chat GPT聊天機器人
可以說是繼上次CNN模型大紅之後,又兩個讓人驚訝的AI發展
本來我以為我頂多碰碰Chat GPT,借著較人性化的互動學學外語
或是讓AI幫我生幾組程式碼而已
一身技能與美術無緣的我,要碰AI繪圖實在動機薄弱
然而討論區看到網友分享的這個連結上的展示(Example)
https://github.com/Mikubill/sd-webui-controlnet

超有趣的,看起來好像很好玩
尤其開頭那個跟鬼畫符差不多的東西
竟然可以生成擬真的圖像
不玩一下可惜,反正又不用錢
就花了點時間試了一下

試過之後
雖然Milubill開發的這個ControlNet外掛使用上已經很簡單了
畢竟隔行如隔山,而且這只是個外掛,還有本體Stable Diffusion要學
花的時間還是比預想上多上不少
不過以結果來說蠻值得
真的很好玩
會用之後真的覺得
〇(發語詞無義),我大學要是能跑這東西
我每個簡報與報告的封面都可以做的美崙美奐啊.......
好像想得太美好了
學生時代窮,電腦應該跑不太動這東西
要不是這次買了台有6G記憶體顯卡的筆電,也是沒得跟風

離題有點遠了,回過頭來先談談這次AI繪圖的主體Stable Diffusion
詳細的技術就不提了,我也不懂 XD
總之Stable Diffusion跟開頭提到的Midjourney一樣
都可以使用一堆關鍵字讓AI進行繪圖的程式
甚至可以用圖生圖
技術先不論,在使用上比較不同的點在於
Midjourney是由公司提供的純線上服務
而Stable Diffusion則可以在單機上進行運作
只是目前我使用的是以Web UI(網頁使用者介面)的方式進行
要上線也不是問題就是了

只是要靠AI畫出一張想要的圖
要下的關鍵字之多以外,甚至還需要一些技巧
例如哪些單字才比較有效果之類的
搞到後來,我們都戲稱這些關鍵字為「咒語」
就像魔法要成功,要有準確的咒語
夠強的魔法(繪圖),也需要夠長的咒語(關鍵字)才能夠有威力
只是現實上,就算搞定咒語,要能真正產生自己想要的構圖
還要靠其它不少可調整的東西進行微調
而最後也是要一再重試才有機會
開頭那個得獎的畫作也是作者從近百張作品中挑張最好的參賽[1]
那有沒有更方便的方法可以先幫AI先決定個方向再微調呢?
之前沒有,現在有了,就是ControlNet

套句已經很少在用的廣告詞:
科技始終來自於人性
就在需要更方便工具的人性驅使之下
那些強如鬼神的電腦工程師們發展了ControlNet工具讓AI繪圖更簡單了
ControlNet可以想像是一個圖像化的關鍵字去拘束AI產生出來的圖像
以開頭那張Sample圖來說明ControlNet的模式
第一組應該是Scribbles:就是草稿/塗鴉產圖再去生成
實際上草稿畢竟太草,還是需要一些關鍵字輔助
這邊用熱氣球(hot air balloon)就行
用這個圖我打個籃子(basket),它也是可以生個籃子出來
限定性跟自由度都還蠻高的
第二組推測是用Fake-Scribbles:用實際圖像產草圖再生成
給懶人用的,連畫草圖都不想像,就用照片產草圖製作
但還是該給個關鍵字像狗(dog)才行
第三組是用Canny Edge:依參考圖產出銳利邊緣去生成
適合產出比較限定但不同色澤的圖
如果是用在2D繪圖的話就很適合上色
第四組是用HED:抓柔和邊緣去生成
適合產出較Canny自由的圖像,從範例這種細節還算多的看不出來
如果是用照片再轉HED再下其它關鍵字就不一樣了
第五組是Openpose:用人物圖像產出骨架後生成
適合產出人物指定動作的圖像,但手指還是罩門
第六組是Depth:計算出景深後生成,也包含外形資訊
適用畫面有上擺設順序關係的,目前還沒大量玩這個
最後是Normal Map:產出另一種偏重細節景深後生成
適合想產生類似立體的細節的畫面
當然還不只這些,範例有漏了兩個功能
MLSD:只抓參考圖邊緣的直線去生成
照其它實作的說明,適合產出方方正正類如圖例中的建築與房間
Segmentation:產出分區圖像的後生成
利用分區後的圖塊讓AI產出畫面
這兩項我也還沒實作過,不知道奧妙在哪

稍微介紹一下就打了一堆東西
不過又好像什麼都沒講到...
因為還是漏了一些東西
其中之一就是模型的選用
我一開始是沒特別注意到這部分,大部分學習(奮戰)的時間可以說都花在這上面
像ControlNet那邊,我只有下載了帶有normal檔名的模型(自以為是「標準」模型 Orz)
但這個只適用於Normal Map的方式,套在Canny跟其它預處理器就是災難
一開始弄不出範例的圖像可說是這錯誤的一步害的
然後另一個問題,Stable Diffusion的模型並不是只有範例裡的那個主檔
像範例第三行下的圖片,那些二次元美少女,基本上要靠其它模型去生成
我用那個Satble Diffusion V1.4模型加openpose去生成,就只有一堆肢體錯誤的圖片
後來是套用了Anything V3才有漂亮的美少女可以看
幾乎可以不用關鍵字就有漂亮的圖
好強啊

最後除了基本模型之外的,其實還有很多東西
更詳細的說明可以看空罐王這隻教學影片


這影片是沒有介紹到ControlNet
但是可以說對Stable Diffusion有更詳細的參數解說
還有談到LORA這東西
跟我這個門外漢比,專業的介紹就是比較強
看完這介紹後又多了一些想法想試著玩看看
總之現在AI的進步愈來愈快了
不知道會發展到什麼程度
在我打完這篇後,現在ControlNet已經可以多重疊加(Multi-ControlNet模式)了
發展可說是愈來愈進步了
真不知道可以進步到哪裡

[1] 相關新聞請看這個連結https://technews.tw/2022/09/23/midjourney-ai/

沒有留言: