【AI+建築】20分鐘全面掌握ControlNet丨stable diffusion精準控圖丨線稿生圖丨控制網全面解析
103 觀看·2024年10月17日
時至今日,AI繪畫通過大模型加LOL2的工作流模式
已經可以解決我們絕大多數的出圖場景
但對於要求嚴格的建築設計行業來說
我們要出一張效果圖
不僅僅是隨機抽卡,固定風格這麼簡單
通常我們都是要在已有模型的基礎上來對其進行渲染
所以準確性是我們出圖的必要前提
構圖、角度、線條、輪廓缺一不可
2023年的2月13日
一個名爲ContourNet的插件橫空出世
解決了StableDiffusion出圖不可控的問題
固定構圖、鎖定角度、定義姿勢、描繪輪廓
只要你想控制的地方,它幾乎都能辦到
和之前的完全隨機抽卡相比
AI繪畫有了質的飛躍
也正是因爲ContourNet的誕生
才真正讓AI繪畫進入到我們建築設計領域
實現AI工業化的開始
哈嘍大家好,這裏是阿三
你正在收看的是我們
AI繪畫加建築設計零基礎培訓課程的第七節課
在之前的課程裏
我們在案例中有簡單展示ContourNet的用法
這節課我們將對ContourNet進行一次詳細的剖析
不同的ContourNet類型控制的是什麼
各種參數都是什麼含義
如何在之間尋求平衡
再通過多個案例讓大家來熟練掌握ContourNet
通過利用大模型加Laura加ContourNet的組合拳
真正實現AI效果圖自由
ContourNet也叫做控制網,核心就是控制
它是一種輔助式的神經網絡模型結構
通過在StableDiffusion模型中添加輔助模塊
也就是擴展插件
從而以額外條件來控制AI繪畫的生成過程
實現完美控制畫面的效果
在此之前我們知道
StableDiffusion是通過擴散模型來生成圖像的
但是基於擴散原理的AI是非常難以控制的
充滿了隨機性
你如果只是出一些人物的圖片也還好
簡單的一些提示詞
就能得到你心中想要的那個結果
即使畫面有一點偏差也能接受
因爲繪製人物並不強烈要求精準
但對於我們建築設計行業來說
只能通過反覆抽卡來得到想要的結果
往往是非常不靠譜的
ControlNet和LoRa是很相似的
它們都是對大模型做微調的額外網絡
LoRa是固定畫面的特徵分隔
而ControlNet是控制畫面中物體的結構輪廓
目前在建築領域當中
ControlNet能做到固定構圖
描繪輪廓精準空線材質對號入座
通過深度圖復刻明顯的層級關係等操作
它的工作模式是先輸入一張參考圖
然後程序根據此圖按一定的模式預處理一張新圖
之後再由AI根據這兩幅圖繪製出成品
你可能覺得和圖生圖有點像
圖生圖是記錄了原有圖片的整體分隔特徵信息
但注意ControlNet的本質還是紋身圖
它記錄的信息更加的純粹
就是元素輪廓 姿勢等信息
所以通過圖生圖得到的圖片整體差距不會太大
但是通過ControlNet控制之後
即使完全不同的劃分或類型的圖片
也都能很好地保持畫面結構的穩定
這就是精準控制的一環
我們來說一下ControlNet的安裝
非常簡單
在我們下載的啓動器安裝包裏
有ControlNet的相關模型文件
將它們複製到ModelsControlNet的文件夾當中就好了
看一下它的界面
ControlNet是在紋身圖的界面下方
打開WebUI往下滑就能看到ControlNet的選項欄
打開它 上面是放我們底圖的地方
下面有很多種不同的ControlNet控制類型
像我們建築領域常用的Lineart
SaltEdge
Scribble
Sketch
對應的就是線稿 軟邊緣和塗鴉草圖
隨便點擊一個控制類型
你會發現下邊的預處理器和模型會自動加載進來
如果沒有的話可能是網絡卡頓或者Mug
手動去選擇即可
每種控制類型下有多個預處理器
比如Lineart下面就有標準、寫實、粗略等等
按需選擇
後邊的模型保持默認即可
如果你模型這裏顯示的是5
那麼這個ControlNet就是無效的
檢查自己的ControlNet模型是否裝好
並點擊後邊的刷新
底圖下邊的選項就是ControlNet的開關
若要啓用勾選上啓用完美像素模式和允許預覽三個選項
開啓完美像素模式之後
ControlNet將自動計算選擇預處理器分辨率
不再需要我們手動設置分辨率
如果顯存不夠的話可以勾選低顯存模式
當然它會使你出圖的速度變慢
在預處理器和模型之間有一個紅色的按鈕
點擊它會進行預處理
可以在上面看到處理之後的預覽圖片
下面就是各項參數
權重就是控制權重大小
越大最後生成的圖片和原始底圖的結構越接近
反之控制力越弱
引導介入時期表示在圖片生成過程中
如果設置爲0就表示從一開始使用ControlNet控制圖片的生成
如果設置爲0.5就表示ControlNet從圖片繪製進程的50%開始進行控制
引導終止時期表示在圖片生成過程中從哪一步結束ControlNet的控制
和引導介入時期相對應
如果設置爲1表示使用ControlNet進行控制直到完成圖片生成
如果設置爲0.8表示圖片繪製進程的80%時結束控制
我一般會建議你們設置參數時
引導介入時期默認爲0不要動
否則畫面容易出現大的變動
引導終止時期給一個0.6到1之間的數值
給AI一點適當的自由發揮空間
對於控制模式
不同的控制類型所選擇的控制模式也有所區別
比如我在使用Lineart時常使用更偏向提示詞的模式
這個模式下出的圖都比較穩定
而均衡模式和更偏向ControlNet的模式出的圖往往質量會比較差
而在使用Scribble Sketch時
更偏向提示詞和ControlNet的模式都會用到
基本上都能得到不錯的結果
均衡模式稍弱一些
當然以上結論並不絕對
它還和你的底圖提示詞參數權重有關係
所以自己在使用的時候一定要多試試
不同的搭配出來的效果也都是不一樣的
最後縮放模式就很簡單了
它會在你導入的底圖和生成的圖片尺寸不一致時發揮作用
比如我這張底圖的尺寸是1464x824
我們將它的生成尺寸改爲1464x1464
看一下對比
僅調整大小是不管圖片的寬高比
直接將圖像拉伸成設置的分辨率
裁剪後縮放是保持底圖的比例不動
將圖片裁剪到指定的大小
縮放後填充空白是先縮放到生成圖片的尺寸
再將空白區域進行類似AI構圖的操作進行填充
所以一般會選擇裁剪後縮放以保證圖片的準確性
你也看到了當圖片尺寸差距比較大時
生成的圖片往往會出現很多錯誤
所以在使用的時候儘量保持前後圖片比例的一致性
這些就是ControlNet所有參數的介紹了
看了這麼多ControlNet的控制類型
首先我們對它進行一個分類
分別是
線稿輪廓類
圖像優化類
空間結構類
色彩調整類
以及分隔遷移類
我們建築當中常用的就是線稿輪廓類
我個人最常用的主要有三個
Lineart
SoftEdge
和ScribbleSketch
這也是建築當中比較好用的三個類型
基於課程的完整性
我們來簡單介紹一下
首先是Kine
Kine邊緣檢測算法
能夠檢測出原始圖片中
各對象的邊緣輪廓特徵
提取生成線稿圖
作爲SD模型生成時的條件
Depth
Depth算法是通過提取原始圖片中的深度信息
能夠生成和原圖一樣深度結構的深度圖
其中預處理器圖片顏色越淺越白的區域
代表距離鏡頭越近
越是偏深色越黑的區域
則代表距離鏡頭越遠
它多用於一些需要強調畫面中
Normal Map
Normal Map算法是根據圖片生成一張
記錄凹凸紋理信息的法線貼圖
Depth主要是控制深度關係
這個更多的是控制圖片的凹凸質感
Open Pose
繪製人物時常用的預處理器
就是控制姿勢一致
它的算法包含了實時的人物關鍵點檢測模型
如人臉手腿和身體等位置關鍵點信息
從而達到精準控制人體動作
除了生成單人的姿勢
它還可以生成多人的姿勢
此外還有手部骨骼模型
解決手部繪圖不精準的問題
從它的預處理器可以看出
它可以檢測出人物四肢
甚至五官在畫面中的位置
MLSD
它是一種直線線條的檢測算法
通過分析圖片的線條結構和幾何形狀
來構建出建築外框
它對於提取具有直線的輪廓非常有用
但是對人或其他有曲線的物體邊緣
提取的效果很差
Lineart
線稿與Kiney相似
也是線稿處理
可以檢測出輸入圖像中的線稿信息
識別線稿起來比Kiney更加精細
識別功能更多一些
出圖效果普遍比Kiney好
SoftEdge軟邊緣
SoftEdge算法的主要作用
是檢測圖像的軟邊緣輪廓
相對於比較寬鬆和柔性
讓AI繪畫的過程中
有更大的靈活性和更多的創意發揮空間
當然準確性也會相對弱一些
Scribble Sketch
它的算法能夠提取圖片中
曝光對比度比較明顯的區域
申稱黑白線稿塗鴉成圖
它不會識別很精細的地方
只是識別大輪廓
出圖的質量普遍較高
適用於非常簡單的線稿生成圖片
Segmentation語音分割
它主要是通過對圖片內容進行語音分割
可以區分畫面色塊
簡單來說
它可以根據我們上傳的色塊圖片
自動識別不同的顏色代表什麼
然後每個物體都會有對應的顏色
AI型生成圖片的時候
就會按照顏色來生成物品
比如綠色代表樹
藍色代表水
但是它對圖片顏色的要求非常精準
必須是滿足它固定的RGB顏色數值
纔可以被讀取
Shuffle隨機洗牌
它會通過你輸入的參考圖
把圖片的分隔遷移到新圖片上邊
控制AI生成相似分隔的圖像
一般需要兩個ControlNet來控制
一個是控制輪廓的底圖
一個就是Shuffle控制分隔
這張圖片就是我拿Lineart
和Shuffle共同作用結果生成的
Tail和Blur
分塊 模糊
Tail可以增加圖片的分辨率
並且同時還可以增加圖片的細節
讓圖片質感質量更好
和我們之前在高清放大里
講的Tail是一個東西
Blur相當於給圖片加噪
變模糊再生成圖片
有點像圖生圖的操作
局部重繪
局部重繪算法
和圖生圖當中的局部重繪操作一樣
使用Mask門板
對需要重繪的部分進行遮蓋
然後進行局部圖像修改
Instructor P2P
這是一個根據提示詞
修改圖片的功能
例如白色衣服變成黑色衣服
這個指令
目前實現一些簡單的指令還行
不過出圖的效果非常不穩定
慎用
Reference 參考
這個功能很像MJ的電圖功能
簡單來說就是給它一個參考圖
它就可以根據參考圖生成
出來劃分相似的圖片
畫面會不一樣
主要是控制大致分格
也可以搭配線稿類ContentNet一起使用
Recolor 重新上色的功能
啓用此處理器後
導入一張圖片
輸入簡單的提示詞對顏色進行定義
即可對圖片重新上色
常用於黑白圖片上色
老照片修復等操作
Revision 圖片提示詞
這個功能是可以讓你輸入一張圖片
當作提示詞來進行繪畫
適用於不會描寫提示詞的時候來使用
T2L Adapter
它的算法是由騰訊發佈
和ContentNet模型一樣
能夠作爲控制條件
控制Stable Diffusion模型生成圖片的過程
它是幾種新型控制類型的集合
比如常見的Sketch
Kiney
Lineart
OpenPose
Dice
可選擇使用
IP Adapter 圖像提示適配器
同樣類似電圖操作
可以根據用戶上傳的一張圖片
然後根據這個圖片創作圖片
包括風格復刻
構圖復刻
人物特徵復刻等
也是AnimeDev做AI動畫時
保持人物一致性的關鍵
InstantID
非常火的AI換臉神器
就是出自於它
可以根據一張圖片的人臉作爲底圖
在生成新的圖片的時候
保持人臉一致
還可以多個圖片融合
非常不錯的一個功能
最後一個就是西數控制
它常和AI動畫搭配使用
可以應用於圖像動畫
關鍵幀插值
視頻插值
視頻預測
深度圖
以上就是所有的
ControlNet控制類型的介紹了
如果你對某個控制類型感興趣的話
不妨把它敲在彈幕上
後面我會根據大家的使用情況
再單獨出某個控制類型的詳細講解
接下來進入實操演練
我們利用建築類常用的
線稿控制類型
來一起繪製幾張圖片
首先我們來看一張
上海路家嘴的建築線稿圖
這個線稿細節算是非常豐富了
我們就利用ControlNet中的LineArt
對它進行控制
打開WebUI
大模型選擇邁矩寫實
在正向和反向提示詞當中
輸入這些提示詞
正向提示詞
主要去描述一些國際大都市的感覺
注入這裏的摩天大樓
城市中心
上海
東方明珠
未來城市
科幻電影等等
這些提示詞
我都會整理一份到課間鏈接當中
方便大家下載參考使用
採樣方法選擇RMColors
迭代部數20
尺寸先不用動
我們一會兒可以直接自動識別
ControlNet底圖的尺寸
並填寫進來
提示詞引導西數
默認的7就好
然後在下面打開ControlNet選項欄
拖動或點擊上傳底圖都是可以的
點擊啓用完美像素和允許一欄
如果顯存不夠的話
就勾選低顯存模式
再點擊底圖輸入框右下角的箭頭
識別底圖的尺寸
你會發現上面的圖片生成尺寸
也改成了和底圖一樣的尺寸
控制類型選擇Lineart
下邊的預處理器和模型會自動加載
預處理器改爲Lineart Realistic
控制權重調整爲1.6
引導時機改爲從0到0.8
控制模式選擇更偏向提示詞
縮放模式保持默認的裁剪後縮放就好
因爲我們的圖片尺寸一致
所以其實這三個縮放模式
對於我們來說並沒有區別
設置完成之後點擊生成
我們的AI神筆就開始發揮作用了
一張非常炫酷的建築效果圖
就出現在了我們眼前
是不是很神奇呢
從一張只有線稿輪廓的圖片
到一張非常精緻色彩絢麗的效果圖
多出幾張圖我們能看出
它的發揮算是非常穩定的
大多數都能得到比較滿意的結果
我們再用同一張底圖
來做幾組橫向對比
首先我們來切換一下控制模式
其他參數均保持一致
利用均衡模式
和更偏向ContraNet的模式
分別出7張圖來進行對比
可以很明顯的看出
均衡模式下出的圖完全不能用
而更偏向ContraNet的模式
出的圖質量又比較低
這也是之前爲什麼說
我們將控制模式調回更偏向提示詞
然後我們切換一下預處理器
將Lineart Realistic
改爲Lineart Standard和Lineart Coarse
標準線稿和粗略線稿
分別再出6張圖來進行對比
觀察一下
我覺得整體來說
Lineart Realistic發揮更好一些
Lineart Standard算是中規中矩
而Lineart Coarse因爲是粗略線稿
所以能看出有的地方
和線稿有明顯的出入
會出現不夠準確的情況
接着我們再換個控制類型
將Lineart改爲SortEdge
再看一下區別
預處理器選擇默認的PDNet算法就行
點擊預覽
你會發現線條只有少部分輪廓
並不細緻
這種情況可能就會導致
出的圖不夠精準
控制模式還是選擇更偏向提示詞
點擊生成
透過SortEdge
出來的圖片質量也還不錯
但是由於是軟邊緣的關係
會導致有些地方的準確性
相對來說弱一些
再改爲均衡模式試一下
出的圖依舊不能用
更偏向ContraNet的圖也和之前一樣
準確性還不錯
但是圖片質量普遍會比較低
再把控制模式改爲SquibbleSketch
這個類型下常用的預處理器有兩個
一個就是這個PDNet像素拆分
一個是下邊的Xdog強化邊緣
先選擇默認的PDNet像素拆分
點擊預覽
你會發現這個比SortEdge
出來的預處理圖線稿更少了
只有局部幾根明顯的輪廓線條
由此可推測
它生成的圖片一定不準確
好
其他提示詞和各項參數依舊保持不變
控制模式選擇更偏向提示詞
點擊生成看一下它的結果
果不其然和我們的底圖差距非常大
所以這種複雜線稿的底圖
對於SquibbleSketch來說並不適用
我們再試一下它裏面的Xdog強化邊緣
這次的線稿好像被識別的還不錯
看一下結果
畫面乍一看還不錯
大致的輪廓是對的
但是細看又會發現
它和我們的底圖偏差還是非常大的
遇到這種情況的一般處理辦法
就是先去調整參數
看是否能讓ControlNet的控制加強
比如拉高控制權重
調整引導時機等等
如果還是不行的話
就換一種控制類型再調整出圖
所以說雖然AI出圖極快
但是由於各種不確定性
要抽到一張不錯的卡
還是需要進行各種調整和測試的
我們將三種控制類型分別出的圖放在一起
就可以得出一個簡單的小結論
就是這種複雜線稿類型的ControlNet底圖
適合用LineArt進行控制出圖
其次控制模式選擇更偏向提示詞
往往是比較靠譜的選擇
再來看一個案例
我們拿一張體快的簡單線稿來進行測試
這張圖片是我在SketchUp里拉了個體快
然後調成線稿的顯示模式
直接截圖得到的
將它導入我們WebUI的ControlNet當中
大模型選擇老王的大模型
在正向和反向提示詞輸入框當中
輸入這些提示詞
正向提示詞主要去描述你想要的一些場景
反向提示詞主要是一些標準類提示詞
採用方法選擇IMKeras
Delay部署20
識別底圖的尺寸自動填寫
點擊下面的啓用完美像素模式和允許預覽
還是從Lineart開始
我們用Lineart Standard Realistic和Course
分別進行出圖來對比
控制權重1.7
引導時機0-0.9
模式選擇更偏向提示詞
點擊生成
對比一下這三種方式
你會發現用Lineart控制
基本上都不太行
除了建築輪廓是準的
和繪製了一些簡單的環境以外
其他就沒有AI發揮的東西了
我們最重要的建築沒有任何變化
該有的立面和細節都沒有
有人可能會問了
是不是控制權重太高的原因呢
我們再將ControlNet的控制權重調低
讓AI能夠自由發揮多一些
看看效果
雖然是有一些立面細節了
但是很明顯的看出
AI的發揮很不穩定
效果也大打折扣
如果權重再低的話
畫面就會出現偏差
和我們的底圖輪廓就對不上了
總和來說
這個類型的線稿
Lineart並不是一個好的選擇
再切換到SaltEdge軟邊緣嘗試一下
其他參數都不要動
點擊生成
權重爲1.70和Lineart結果一樣
建築的立面細節還是沒有
環境也比較草率
但是當權重降低到0.7左右時
基本上就能得到一張不錯的效果圖了
最後我們再來看一下ScribbleSketch
使用PDNet像素拆分的魚處理器
同樣在不同的權重下
我們來進行一個對比
點擊生成
看一下結果
基本上在任何權重下
都能得到畫面豐富的效果圖
但仔細一看
當權重在1到1.7左右時
畫面還不錯很穩定
但是當權重降低很多之後
建築就出現了明顯的偏差
這就是不同權重所帶來的區別
我們再將控制模式改成均衡模式
和更偏向ContraNet來對比一下
權重都給到1.2
它就不像其他的控制類型
完全出不來東西
在ScribbleSketch的控制下
均衡模式和更偏向ContraNet的模式
也能抽到很不錯的卡片
這三種控制類型綜合來看的話
這種簡單線稿的輪廓
AI出圖是簡單並且迅速的
但這也往往是多參數取得平衡的結果
在實際使用當中
自己一定要多去嘗試
修改不同的參數進行對比
StableDiffusion它是以經驗爲導向的
沒有所謂的標準答案和標準參數
即使一模一樣的參數搭配不同的底圖
出來的效果也有可能千差萬別
這節課我們就講到這裏了
到目前爲止
你已經掌握了StableDiffusion出圖的所有方式
如果跟着課程走到這裏的話
恭喜你
你已經可以順利且熟練的用上StableDiffusion了
如果覺得課程對你有幫助的話
一定不要忘了給up三連哦
總結一下吧
這節課我們講了ControlNet的相關知識
包含它的原理和ControlNet的安裝
以及界面和各參數的含義
後面瞭解了ControlNet
各種控制類型的分類以及作用
最後通過兩個案例完整學習了
ControlNet工作流以及注意事項
下節課我們將學習StableDiffusion中
Laura模型的訓練
爲自己的模型做一套私人定製
我們下節課見
拜拜

