【ComfyUI進階教程】🎯洞察一切:深入瞭解Segmentation+Impact檢測核心,輕鬆識別任意元素🖼️! #aigc #comfyui #controlnet

那麼這一期我們正式進入Config UI的第三部分
主要的內容就是以機器世界識別爲主
同時使用資料區域來達到我們圖像局部修復
或者是局部重繪的這樣一個流程
或者是這樣一種功能
主要實現的插件就是Impact
大家都知道了
在正式內容開始之前
歐陽又來跟大家分享歐陽的使用資源了
很多羣裏的朋友反饋在線使用服務器方面
有時候有很多有資源緊張
搶不上的這種情況
所以我們是需要很多不同的備選方案的
這一期歐陽還是跟大家說這樣一個平臺
也是之前跟大家詳細說過的這樣一個平臺端腦雲
那麼之前那個視頻應該是挺長時間以前了
大概有半年左右了
這個平臺的共享理念還是挺有趣的
大家感興趣的話
可以看一下我之前那個視頻
正好最近平臺也有這樣一個活動
是新用戶買一送一的這樣一個活動
充一百送一百
所以結合這個活動算下來的使用費用
還是相當有性價比的
這邊我們來看一下
在經過了一段時間的優化以後
平臺這個使用已經非常便捷了
比如說我們來找一個config UI
然後這邊配置我們就使用4090
可以看到它的費用是一小時
我們可以按小時計費
這邊我們選擇按小時
OK可以看到一小時是2塊4
買一送一的話這就相當於五折了
對吧
一小時一塊二
所以歐陽看到這個活動
就趁這個活動跟大家再說一下
對於鏡像這裏
在官方的鏡像選擇這裏
我們可以看到有專業版和輕量版兩種
我大概示了一下
那麼專業版它是包含了config UI
在絕大部分的插件
基本上是個傻大拳的鏡像
如果是輕量版
只會有一些必要的插件
一些其他的插件
需要我們另外去安裝
可以根據我們自身的需要來決定
現在我們直接來立即使用
這樣我們就成功的開啓了個鏡像
至於使用方式其實也很簡單
就和我們之前所講的一樣
右邊文件管理進去以後
可以傳輸我們自己的模型之類的
點擊進入應用
就可以開啓我們的config UI
當鏡像正式啓動以後
我們可以點擊更多
可以看到查看日誌
點開這裏的話
我們可以直接來到
後臺的日誌頁面
但是要輸入一下
我們的用戶名和密碼
在這裏我們可以直接複製
登錄賬號和登錄密碼
然後來查看我們整體的後臺日誌
可以看到這是啓動前的
所有的插件的讀取對吧
另外值得注意的是
可以看到現在服務器是三天釋放
所以說有很多
我們要用的一些模型的話
也可以通過雲盤功能
目前儲存是限時免費的
免費空間是60G
當然了我們也可以通過
API的授權
來開通我們的百度的一個網盤空間
來隨時的調用拉取
這樣的話可以方便
我們以後長時間的
進行一個自我文件的管理
那麼最後我會把端腦雲的
邀請鏈接放到視頻簡介當中
又或者是評論區置頂
大家有需要的話
可以通過歐陽的鏈接
來直接註冊和訪問
這樣的話歐陽會獲得
一定的服務器的免費使用時長
也算是大家對歐陽教程
錄製的一份支持
之後歐陽就可以使用
不同的免費算力資源
給大家錄製教程了
OK
那麼這就是這個平臺的
基本使用方式
那麼之後我們直接點擊
進入應用
就可以打開我們的config UI了
這節的內容
我們就以這個服務器爲例
來跟大家講解
好的
那麼回來以後這一期
我們其實談論的
不是遮罩本身
我們因爲設計的是
人工智能領域
我們談論的是
AI對於遮罩
到現在的一個發展史
以及一些由來
當中可能設計很多基礎的
底層技術和方法
那麼說到AI領域的遮罩
我們自然要回顧之前
在我講web UI的時候
當中的control net
一部分的時候
我們涉及到的一個
segmentation
也就是語義分割的這一塊
其實在人工智能領域
語義分割
就是最早的機器視覺語言
什麼意思
這裏我使用了4個
propel image的節點
control net當中
AOX預處理節點當中的
這麼4個語義分割的節點
爲了方便大家理解
我們還是找一下
目前在AOX預處理節點當中
我們可以調用4類語義分割
一類是coco
一類是ADE
20K
還有SIM
以及UNI
當我們依次運行完以後
我們可以看到
每一種預處理的方式
對我們的圖片進行了
不同樣式的一個標註
這些標註又代表的什麼
其實在這一張圖像當中
用不同顏色標註出來的區域
它都代表了一個tag
也就相當於將圖像
和我們的語言
進行了一個關聯
比如說這個地方
就是建築building對吧
下面就是道路
綠色的這個地方
就是car對吧
一輛車
我們可以看到
不同的語義
所標註出來的顏色都不一樣
而且在區分的質量上
也略有差異
第一個coco的這樣一種方式
標註的是比較清晰的
下面的ADE
它和coco標註的物體
和類別有所不同
比如說coco有粉色的
這邊是什麼
我們可以看一下原圖
可以看到這邊是窗戶
以及門玻璃材質的
它把這個東西標註出來了
但是下面的ADE
它標註出來了一個電線杆
對不對
它用藍色標註出來
很多電線杆
而coco它就沒有
這就說到了
它們的數據問題
首先我們來看一下
segmentation
它的一個定義
它是基於機器學習的原理
讓機器識別圖中的各種元素
同時與我們的語音關聯
經過不同規格
不同形式的
這麼一個劃分和區分
賦予機器更好的識別力
說白了
以我們現在理解
就是一個機器看待
真實世界的一種分辨能力
這樣的技術
在最早期
它是應用於交通路況的
機器視覺分析
以及判斷
一直到現在
經過了大概十餘年的迭代
已經應用在了各個領域
比如說室內室外交通路況
又或者是地理數據
以及醫療等等行業
包括我們現在所謂的
CHP4
它能看見東西對吧
我們給它輸入一張圖片
它就能分辨出來是什麼
並且告訴我們圖片表達的是什麼
其實底層最早的基礎技術
都是基於SEG語意分割的一個技術
那麼回到我們工作流
在我們的節點裏面
我們可以看到
這有很多的處理方式
每種處理方式都不一樣
有的叫SEG
有的又叫ADE20K
又或者是COCO
它們到底有什麼區別
最本質的東西
其實是它們的數據集不一樣
這代源模型爲我們進行了一個
詳細的解釋
因爲不同的模型
或者是不同的結果
它是基於不同的數據集所訓練的
早期常見的數據集有VOC
那麼之後有COCO以及ADE20K
包括城市路況的CTSpace
2017年的數據
是一個地理環境的一個數據
可以看到各式各類
對應不同場景的一個數據集
我們現在使用AI生成圖像
通常用的是兩種
一種是COCO
一種是20K
這裏我們也可以詳細的看到
COCO的數據集是從2014年
就開始建立了
它的分類一共有80多種
每一種分類都有一個詳細的標識
也就是我們在工作流中看到的
圖像的每一種不同的顏色
其實就代表了一個分類
涵蓋最廣的是ADE20K
它是2016年比COCO晚一些
那麼在整個數據集上
進行了一個擴容和擴充
擴充到了200種分類
也就是它能識別到圖像中
200種類別了
對不對
目前是非常適用於場景解析
所以說我平時會用20K
但是對於我們實際情況來說
因爲我們configUI裏面的調用模型
20K的預處理模型
可以看到
有時候它的質量並不是很好
它的分割的邊緣並不是很明顯
對吧
那麼這就是它在實際使用當中的
一些問題
如果要求不是很高
不需要太多的分類劃分的話
其實我們使用COCO
它的效果要比20K好一些
這個我們也俗稱爲協議
比如說ADE20K的協議
或者是Segmentation的COCO協議
所謂這個協議大家現在明白了
就是基於不同的數據集
進行不同的訓練的方式
最終出來的結果也會有所不同
這個取決於我們到時候
到底要調用哪些東西
對於我們正常生成來說
其實兩個都完全夠用了
其實這個時候
我們是完全可以和Segmentation結合
甚至是藉助它的這種分割能力
來直接調用的
之後我們來一個人物的這麼一個圖像
那麼這個分類集
我們看我們需要什麼
如果我們需要人物和旁邊的
這樣一個樹幹
我們顯然是用20K的協議比較合適
對不對
因爲有人物有樹幹
這個樹幹提取的比較明顯
如果用COCO
COCO其實對人物是提取是比較好的
更精緻一些
比20K
但是對於樹幹
它並沒有單獨提取出來
它把樹和後面的場景以及植物相結合了
具體怎麼提取
這個就很簡單了
之前我們的基礎也是沒白學的
我們直接通過預處理的結果
搜索ColorToMask對吧
隨便這樣一個ColorToMask節點
我們就可以指定提取這麼一個色系
成爲Mask
有了Mask以後
我們再來一個什麼
Composition對吧
這都是我們之前講過的
當然如果我們指定使用Essentials
這樣的一個節點的話
可以直接搜MaskFromColor對吧
這兩個功能其實是一樣的
之後我們來取色複製到我們這個節點當中就可以
當然如果我們安裝了ColorStyle
這個節點組以後
我們也可以找Picker
Picker這樣一個取色器
我們就可以在工作流當中取色了
直接點擊取色
點這邊的取色器對吧
直接取人物可以看到是150561
之後我們就可以在這邊
RGB通道150561
我們稍微給一點預值
然後這樣我們預處理拿過來
Mask是不是就有了
我們直接Provide
這個人物自然就通過語義分割的方式
把它摳出來了
同時我們還想把樹給它摳出來怎麼辦
同樣的我們再加一個分類顏色進來就可以了
值得說的是對於LayerStyle的這麼一個取色器的節點
我們可以看到有個輸出的Model
這裏有兩種不一樣的
一個是HEX一個是DEC
DEC就是我們剛纔所看到的這三色
那麼SEX是這個井號的一個顏色碼
這個大家都清楚
我們可以在這邊來看一下
一種顏色它有HEX的顏色碼
以及下面RGB的三色通道的不同的值對吧
這裏的EDC它就是三色通道
所以說當我們選了三色通道以後
我們再出來看一個ShowText
它就比較有趣
可以看到我們這邊就是三色通道的值
那麼這個值之後我們可以substitute
然後把這邊三個值直接提升了
把這邊substitute的三個值傳進來就可以了
這個操作也算留給大家一個小作業
這些基本操作我們之前都說過
那麼有了遮罩有了圖像之後
我們就可以通過遮罩把圖像給它摳出來
通過我們合成
但這裏我們不是說了嗎
還需要把樹把它想摳出來
自然我們複製出來一層
然後我們實現色
把樹的顏色看一下是多少
我們這邊一樣
同樣我們看一下它的遮罩
這邊的植物一些顏色就都被我們識別出來了
對吧
那麼之後我們就是要進行合成了
這都是基礎
我們就快速來操作
因爲我們這個圖像要遠比我們預處理圖像大
把它的尺寸給限定一下
直接使用upscale
寬度我們設置成768
我們還需要建一個空的背景
也就是MT image
把它作爲我們的背景
把它作爲我們的前景
把我們的摳向的mask給過來
下一個我們一樣重複
這樣我們就得到了另一個植物的部分
對吧
之後我們只需要通過一個blender image
把這兩個進行一個合併
那麼這樣我們所摳的內容就出來了
image blender基於我們圖層的混合模式的
它有一個合成數值
這樣的話是上下疊加我們兩層不同的內容
可以看到我們如果選屏幕的話
數值選1的話
它就可以進行最終圖像的一個合成
當然方法有很多
如果我們不在這個地方操作
我們也完全可以把兩個mask進行一個合成
這裏我們mask可以直接搜索composition
然後把這兩個mask進行一個串聯
然後這個地方我們選擇相加
最後得出來的一個mask
我們可以看一下
那就是兩個mask進行了一個相加
這種方式我們就只需要一個
image的composition的一個節點就夠了
然後把我們的mask傳進去
最終我們出來的圖像
其實就是我們想要的一個摳圖的最終的一個圖像
這就是在mask上進行的一個合併
對不對
所以說通過語義分割
它是可以摳出來我們想要的所有的東西
所以說我們去背
是不是就很簡單
就能把這個背景去了
其實我們就可以省去很多
我們經常平時所用的各種各樣亂七八糟的插件
這個分割那個分割
這個sum那個模型
就各種各樣的去背的模型
你只需要有一個content-net一處理器
那麼這就是基礎
這是一種順勢思維
就是我們如何用
那麼我們還可以逆向思維
再進一步如何使用segmentation
這是我們之前在webUI當中留下來的一個話題
但是沒有深入的去講
這一期我們就順便把segmentation
深入的一個content-net應用
我們再講一下
除了我們對現有圖像進行一個提取特徵的識別以外
我們還可以逆向工程化
也就是我們對於這個圖像進行一個重構
可以看一下在這個地方
我找到了一份AED20K的這麼一個協議的規範
就classes它的分類集
它是針對哪些物體進行了哪些標識
以及用的色號
這裏我們可以詳細的看到
它對門對地對櫃子對草對座位對欄杆
對人物等等有很多種標識
這樣的話就可以讓我們進行一個圖像的逆向工程
也就是重構
比如說這個地方
我在PS裏進行了一些簡單的處理
那麼這個圖像可以看到
我使用這個協議當中的某些顏色指定了它的區域內容
我們把它放到旁邊
第三個天空的顏色061616
那麼就是這個顏色
那麼海就是下面的海水的顏色
通過這樣的方式對這個圖像進行了重構
對於樹木這邊是一個棕櫚樹
我也找到了它對應的一個色號
對於這個樹的樣式
我們是需要進行制定的
怎麼制定
我找了一個圖像把它塗成這麼一個顏色
它自然就會在這個協議裏
或者是我們segmentation裏
它的屬性就出來了
至於人物其實是一樣的
進行了一個顏色的填充
我希望這裏有個人物
但是這個人物不一定是我們看到的實際的圖像
對吧
這樣的話我們就通過逆向工程
製作了一個基於AED20K的預處理圖像
那麼這張圖像我們就可以引用到
我們這邊的contra net裏面進行生成
那麼這裏我們簡單構建一個contra net
一樣我們還是用的inspire這樣一個節點組走的pipe
然後這邊我們解個包
然後把contra net的應用連接來
同時我們使用一個SEG
contra net針對我們segmentation的一個預處理器
對吧
因爲是1.5的這裏
所以說我們調用了一個1.5的模型
下面我們給個簡單提示詞
上面一行是增強
下面一行簡單一個美麗的女士
在沙灘藍天白雲棕櫚樹等等的一些簡單提示詞
而下面也是一些簡單的負面
之後我就把segmentation的分割信息圖
傳給我們最終的contra net
之後我們以我們預處理圖像的大小
分辨率是一樣的
和預處理圖像最好是要一致的
然後我們給它一個4的batch
我們直接來生成
那麼這樣就通過我們segmentation的一個逆向工程
來完成我們最終想要生成圖像的一個構圖
可能看到它正面和背面有些不分
如果要細節的話
我們可能還要輸入一個kenny或者其他一些東西
但是它能很好的控制構圖
就這個地方我想要什麼
它是能控制的
這就是segmentation在contra net當中使用的最大的作用
就是說這個地方我就想要海
下面我就想要沙灘
而不是街道
而不是公路
而不是泥濘等等東西的這些類別
你是可以控制的
至於細節我們可能還是需要layer線性等等來控制
那麼這就是它在我們圖像生成當中最大的一個作用
通過這個案例我們也可以看到對於姿勢
人物的姿勢它也能形成一定的控制
對不對
這裏如果我想換一個人物的姿勢
對不對
我就可以來換一個人
我在它之上也同樣加了這麼一個顏色疊加
重新來把它保存一下
還是上傳到我們的工作流裏面來
之後我們再來進行一個生成
這就是它給予我們的結果
所以segmentation它在AI或者是人工智能領域裏面
尤其是對於圖像處理裏面
它是一個很關鍵的一個基礎
通過這一節的瞭解
我們就可以善加利用它
它是一個被低估了的一個東西
那麼說到這以後
我們segmentation基本上就已經弄明白了
之後我也會把關於20k的協議發給大家
大家可以基於20k的協議進行各方面的處理
那麼接下來一個環節我們就說到
真正涉及到我們imparc這個節點的正體了
那麼就是SIG模型
大家可能覺得這個東西跟模型有什麼關係
其實這個東西它就是模型的基礎
首先對於我們imparc節點
它當中的一個大類就是物體的檢測與遮罩的生成
包括很多遮罩識別的其他類型的節點
它都是有這麼一個環節的
imparc裏面我覺得它做的是比較細緻
或者是比較好的
所以在這裏我們找到imparc
在imparc當中我們可以看到
專門有一個detector的分類
這一期因爲鏡像沒有中文翻譯
所以說我們這一期還是以英文來講解
因爲英文講解我覺得稍微
對於這個節點來說稍微清晰一些
當然大家也可以根據中文的類目來對照
detector這個節點的中文就是偵測器探測器的一個節點組
在這個分類裏面我們可以看到有很多的detector
其實很簡單就是那麼三類
第一類是sieve
第二類就是box bbox
但是不是那個
這又走上口技節目了
不是那個
那個是baitbox
它這個全稱是bonding box
就是對於一個物體的邊框檢測
生成出來是一個方形的
所以說簡稱爲bbox
一樣是有兩個
一個輸出是segment
還有一個輸出是合併
第三類就是segment
這裏注意在瞭解之前
我們要先有一個基礎的概念
因爲這裏的關係稍微有一點點繞
impact當中所使用的模型類型一共有兩種
而這兩種模型輸出的數據類型一共有三種
我們把它簡單的先理解爲兩種三類
那麼這兩種模型也是目前主流的AI視覺識別模型
那麼現在來了解第一種sieve模型
可以看到有兩個sieve的detector
兩個有什麼不一樣
我們調出來可以看一下
這邊我們可以看到輸出的是一個mask的序列
遮罩序列
而這邊只會輸出一個遮罩
這就是這兩個檢測器唯一不一樣的
而這邊我們可以直接通過一個SAM加載器
來直接讀取SAM模型
至於這些模型
我們都可以通過manager來進行拉取和下載
作者的Github也有模型的下載地址
之後我們再說這個事情
我們先了解第一類模型就是SAM模型
什麼是SAM模型
它的全稱就是我們經常說的
segmentation anything mode
可以分割一切的模型
這裏我們先來到它的hack&fix我們看一下
這個頁面當中有它的一些解釋和詳細的一個內容
這個模型是在2023年
也就是去年的23月份的時候
Meta公司開源了這樣一個模型
它的訓練數據集可以看到是一個很大的量級
下面我們看一下它模型的一個識別度
是不是很像segmentation
可以看到它的分割和分區就更細緻
接下來我們看一下
這邊它有一個特性的解釋
我找到的一個文章
首先我們看一下它的數據集
是一個叫SAEB的一個數據集
在它訓練的時候是一共分了三個階段
這三個階段我們大概看一下就知道了
它特點一共有兩個
第一個是它識別的物體很精細
就是分割出來的物體很精細
可以看到這邊的橋和樓
對不對
每個樓其實分割的還不一樣
是比較精準和精細的
那麼第二個方面
它是有一個注意力引導的
也就是我們所謂的attention
是有個attention mask
就是我們注意力的遮罩網絡
我們可以通過交互的形式給它添加一個注意力
比如說我們可以通過鼠標點擊某一個東西
又或者是通過一個標註mask又或者是prompt
告訴它我需要識別哪一個東西
提取某一個東西
通過整體的瞭解
是不是我們也發現了一些
和我們之前所講的segmentation的一些相似性和關聯性
沒有錯
在它這個SAEB的這麼一個數據集裏面
其實包含了大量的segmentation的一個數據
也是用了segmentation的這樣的標註方式來進行識別的
只不過這個模型是運用我們人工智能的神經網絡進行訓練的
我們可以把它理解爲這種AI模型是在之前的
segmentation的基礎上進行了另一個維度的升級
就是技術的一個迭代
在這裏我們來具體瞭解一下
感受一下SAM模型它的一個效用
比如說這裏當我們安裝了impact的時候
我們是可以通過load image的節點右鍵
可以看到有一個SAM detector
就是用SAM模型檢測我們這張圖像當中的元素
第一次安裝impact
它會自動的下載識別圖像的SAM模型
這個界面當中我們可以左鍵點擊
可以發現界面當中多出一些藍點
那麼右鍵點擊它會多出一些紅點
什麼意思
藍點是我們選取的物體
紅點是我們排除的物體
就不想要的部分
我們clean一下把它清除掉
我們比如說點選這個女人
點一下她的身體和臉部
相當於是給了她一個attention的mask
給了她一個注意力的遮罩
之後我們下面可以調節一下它的識別閾值
直接點擊後面的detector
讓它進行一個偵測
它就會根據我們的這個點
自動識別出來我們想要的一個物體
這時候可以看到她的頭髮這裏不是特別好
我們也可以點擊一下
把這些東西框選進來
再重新讓它偵測一下
OK
那麼這個時候頭髮就已經被完全選中了對不對
那麼這就是它的一個特點和效用
現在我們save to node
這張圖像就會自動加載這樣一個遮罩了
那麼這就是這個SAM模型
它的一個特點和使用方式
所以在我們SAM模型detector的時候
偵測和識別的時候
因爲這是我們手動去識別
並不是自動
如果自動化識別的話
我們是不是需要給它一個attention
給它一個目標
我們要識別什麼
這個時候我們先把這個東西連過來之後
我們就看到這個SIGs
這個數據是什麼
這裏我們說到了一個加載器
in park當中除了SAM模型以外
還有一個全稱是ultralytics一個加載器
這個ultralytics是什麼
我們先說它加載的模型
這裏我們也可以看到有一些模型
這些模型有一個特點
我們看它的後綴都叫ULU對不對
ULU V8 SIG
ULU V8 S對不對
沒錯了
這個模型它就叫ULU模型
ULU模型又是什麼
我們切回來來看一下
這個ULU模型其實也是基於神經網絡進行訓練的
但是它的歷史更悠久
它是從2015年就問世了的一個
神經網絡的視覺識別模型
2015年剛剛開源的時候是V1版本
就從V1到現在
每過一年多的樣子就會更新一代
每過一年多更新一代
到現在已經是V8
最新的是V9了
所以它已經有了10年的歷史
和我們Segmentation的時期是差不多的
是兩種不一樣的技術路線
但是要達到的目的都一樣
那麼下面我們來看
這個名字是不是就很熟
Ultralytics就是我們的加載器
Ultralytics其實是一個公司
這個英語有點繞嘴
我們就叫它UL公司
這個公司很牛
尤其是在AI領域
包括之前的SIM模型也和這個公司是有一些關係的
它也是很多AI工具的開發商
比如說大家都知道Pytouch對吧
AI底層開發的一個框架
那也是這個公司提供的工具開發的工具
這個UL模型其實到現在訓練已經分了很多類型了
我們可以看到下面它有很多種模型
很多很多很多
包括SAM我們也能看到SAM模型對不對
這是它的開源模型網站
這些模型很多我們都不能直接使用
都需要轉換成我們InPark的一個框架才能來調用
才能來使用
當我們加載UL加載器的時候
它有兩種輸出
一種是Bbox的
一種是Segment
Bbox是什麼
其實它檢測的是一個物體的相對位置
Segment其實檢測的就是物體的邊緣
和我們這邊的檢測到的有些相似
首先這裏我們一樣找到InPark節點Detector這裏
我把Bbox和Segment全部調出來
這裏我們來看一下
可以看到它們的輸出是不一樣的
SIGS輸出一種是Mask輸出
Mask就相對簡單
直接識別一個物體輸出遮罩就可以
包括下面Segment的Detector也是一樣的
那麼通常我們都會用SIGS
所謂SIGS這個管道是什麼
這個管道是InPark作者單獨定義的一個管道
它裏面所包含的信息基本上全是Mask的信息
以及Bbox和Segment產出的不同的位置信息
所以我們可以理解爲
它是一個遮罩圖形組的一個集成管道
這個管道對應後面的大部分的重繪流程
明白這一點以後
我們把後面的這兩個直接刪掉就可以了
我們直接來走SIGS
這個模型可以輸出兩個類型對不對
但是現在Segment的類型是個紅叉對不對
表示這個模型當中沒有Segment的信息
這一點是要注意的
對於YOLO模型第一類是Box
我們可以看到前綴是Box
這一類模型它只支持輸出Box的這麼一個數據
不支持輸出Segment的數據
另一類就是Segment
我們可以看到第二類
它放置的文件夾就是Segment
而後面會有一個標籤就是Seg
它就是有分割數據的
所以這樣的模型它既有Box的數據
又有Segment的數據
明白這一點以後
我們可以選擇一個Person的YOLO模型
從這個名字我們就能看出來
它主要負責識別前景的人物
我們就把這一張圖像傳入到我們這邊來
然後Segment給到我們下面的Segment的偵測器
然後圖形也一樣傳過來
最後因爲這邊是SIGS
我們可以用多種的方式來進行SIGS的解析
但是最直觀的方式
就是作者給我們提供了一個SIGS的Preview預覽管道
它轉換出來的東西就是一系列的Image
因爲我們之前說了它是一系列的遮罩
並不是一個
所以說出來的是一個Image的Batch
那麼我們直接來預覽
這是第一種方式
那麼第二種方式
我們也可以通過SIGS進行一個轉換
比如SIGS to Mask
那麼它所轉換出來的就不是這個圖像
而是Mask
這是單圖
如果我們是序列
這樣的話會報錯
我們就需要轉換成Mask一個List
或者是一個Mask的Batch
一個序列
這兩種都可以
之後我們自然就是一個Preview Mask
對吧
現在我們來生成一下
就對於這張圖像
我們選擇ULU V8的Process模型
一個是用Box信息識別
一個是用Segment信息識別
我們來進行運行
OK
這樣我們就生成了兩種不一樣的圖像
可以看到第一種的Box
因爲它給我們預覽了
所以它給我們的是一個Image
就是已經合成完畢的
像我們之前已經合成完畢的這麼一個圖像
如果它出來的是Mask
其實是一個框體
可以看到Box信息出來的就是一個識別區域
而Segment信息出來的就是完整的一個人物的輪廓
所以通過ULU模型
我們就能很快的提取到人物的遮罩
或者是人物的區域
當然了我們也可以選擇Hand
可以看到這裏有個手部的檢測
但是我們要知道
這個手部檢測
它是不是就沒有Segment的數據了
對吧
沒有數據了
我們下面就可以把它mute掉
因爲這個不起作用
下面我們的預覽會報錯
我們直接用Bbox來識別一下人物的Hand
看看效果
準確的識別到人物的手了
這Seg是包括了很多不同對象的
我們可以識別很多不同的對象
打包到Segs的管道里面
一共是兩個遮罩
這兩個不能說遮罩
應該是識別區域
都是識別人物的手
對吧
現在我們就明白了
這兩類模型分別是Sim模型
和ULU模型的兩種不同的輸出
分別是ULUbox和ULU的Segment
現在明白這一點以後
我們是不是就要疑惑了
好像ULU模型就可以完全提取人物了
對吧
我不需要那麼多模型
只用一個ULU模型
我想提取人物遮罩
直接這樣的話
我們知道就出來了
爲什麼還要Sim模型
這就說到了兩種模型的一個特性
它不一樣
之前我們瞭解了Sim模型的特性
現在我們說ULU模型
它的特性是什麼
一是小巧輕便
速度快
運行速度很快
可以看到它檢測一個物體的範圍
尤其是box
它的運車速度很快的
如果我們要使用Face的Segment
下面我們把它打開
你會發現這塊
它就沒有那麼快的能檢索到
而報錯了
因爲我們這邊是預覽
所以說我們沒有預覽圖
它就會報錯
就它沒有檢索到任何東西
爲什麼
因爲我們這邊給的預值可能不夠低
我們的人物的面部可能有點小
佔據畫幅有點小
我們把預值給它改到低一點
這邊的識別預值
我們也給改到0.2
我們再重新生成一下
你會看到現在它就會識別到面部了
但是面部我們仔細看
這個面部的遮罩它不是很精細
它會有一些鋸齒
所以說它對於快速識別物體的位置
就是說box的信息來說
它是很快很準的
而對於Segment的信息來說
我們需要調節一下
而且它出來的並不是非常精準
準確的這麼一個mask
這個時候我們就想到
把兩個最有名的視覺識別模型
給它結合起來
怎麼結合
就可以看到我們上面這裏有一個SIGS
SIGS就是我們輸入的一個SIGS管道
比如說我們這邊已經把人物的臉部快速定位了
有了定位以後
我們把SIGS直接傳給我們上面的
SIM模型的detector
因爲通過我們之前的瞭解知道
SIM模型它不能直接輸出內容
我們需要給它一個attention的一個注意力引導
當我們現在對這個區域
有一個明確的box標註的時候
其實變相的來說就給了它一個引導
給了它一個注意力區域
就是讓它注意我們角色的面部
所以這個時候
當我們把SIGS發送給它
SIM模型就會自動的識別我們區域當中的面部
從而進行細化的提取
現在我們把這個mask直接輸出出來
這個batch我們來prove
image傳過來我們直接生成
它就完全的生成了一個
我們這邊比較精準的人物面部
那麼這就是SIM模型它的一個優勢
對於物體的邊緣描繪比較精細
我們可以看一下之前的
用ULU SIM出的這個遮罩
它就沒有我們這個精細
它的下面就把衣服的左邊的領子就給框進來了
所以通過這個東西我們就能看得出來
甚至分辨出來模型和模型之間的優勢
那麼這也就是我們in park當中所使用的常用的一種方法
就是先用ULU模型
迅速的檢索到我們這個物體所在的區域
之後把這個區域的SIG
就是這個遮罩信息傳給我們的SIM模型
讓我們的SIM模型對這個遮罩區域
再進行精細化的修復或者是修整
可以看到它的邊緣是很圓的
對吧
而我們這邊的邊緣再仔細看一下
它就有很多的聚成
這就是兩種模型的一個搭配使用
當然瞭如果我們的要求不是那麼精細的話
最效率的方法是直接走SIG
我們這邊連box都不需要
直接通過ULU模型的SIG來直接提取
就完成了圖像的識別
這是最快的
那麼這個流程其實作者已經給我們提供了一個打包的節點
這裏我們來找一下detector當中的simple detector
這裏有一種是anime diff
它是生成序列用的
後面兩種一種是SIG一種是pipe
這裏我們也同樣都看一下
第一種是SIG
第二種是帶管道
這個管道是我們之後要說到的一個detailer的一個管道
它當中包含了box
SIM以及segment的三種輸入
所以這個我們現在不需要
我們就單一的爲每一個接口進行一個輸入
這裏很簡單
我們就是把之前的模型拿過來
這個是sim的模型
這個是UL的加載模型
sim過來
然後box這裏就要注意了
如果沒有精細化的處理
是不是就是先生成box
然後在box的基礎上用sim進行檢測
所以這兩個就夠
這是精細化的流程
然後我們把這個圖像直接輸入過來
這幾個節點就相當於我們這邊所做的一系列的事情
這樣看不清的話
我們還是單獨讀取一下
這樣對吧
現在我們就能看清了
這種方式我們調一下個
這種方式就是相當於我們的這種方式
把預覽圖都刪除掉
先單獨調用box
然後再單獨給sim
然後最後檢測出來這個
而我們這邊的一個simple detector直接加載兩個
它就會執行我們這邊相同的操作
如果我們想走這種方式
就是特別簡單
用seg的方式一樣
我們直接複製一份出來
只需要輸入它segment
就是這樣一個seg的輸出
同樣把圖像傳過來
這就是我們最簡單的
走這個YOLO模型
segment接口所輸出的一個圖像
這裏我們可以看到還需要一個box
它也是需要一個box作爲快速
所以然後再進行segment的生成
現在我們重新生成
sim生成的是識別出來了
而下面卻沒有識別出來
同樣我們這裏把它的預值降低一些
OK這樣的話
我們也識別到皮膚所在的位置了
基本上也和臉部是差不大多的
但是我們可以看到sim
它檢測的是不是更好
OK那麼這就是我們這個偵測器
所有偵測器的用法
也就是detector的用法
這裏我們基本上都已經講完了
當然了當中還有一個ONNX
這是另外一種檢測器
我們可以看到這邊也可以加載ONNX
但這個我們用的很少
基本上不會用這種
這就是我們這個環節要講的
識別模型當中的sim模型
和我們UI公司所訓練的
YOLO模型之間的一個關係
那麼當我們明白以後就知道了
這兩者之間它是有很大的關係的
這邊是基座
而這邊是進行了進一步的升級
也就相當於我們這邊的模型
是把這邊的數據進行了完整的訓練和統一
或者是添加豐富
通過神經網絡訓練出來的這兩種
或者是一系列的這類的模型
那麼Impact就是調用這類模型的能力
幫我們識別圖像當中
我們想要提取的部分
就這麼回事
因爲這兩類模型我們看到比較多
尤其是這個YOLO模型
這個鏡像裏沒有特別多
我們可以通過manager當中的
install models這個地方
我們搜索Impact
然後這裏列出來的所有的模型
基本上都是我們的YOLO模型
有face模型
就是專門識別面部的模型
但我們要注意後面有個後綴
bbox
就這些模型只支持輸出box的數據
除了face識別
還有hand識別
以及process識別
後面的後綴爲segment
SEGM的
就是有分割能力的模型
這都是我們在Impact當中
可以通用的一些模型
當然這裏還有一個比較有趣的
我們可以看到deep fashion 2
這個模型是專門用於識別人物服裝的
有什麼短裙 長裙 短袖 長袖等等
各式各樣的服裝
用於我們進行服裝的替換
或者是服裝的二次渲染
那麼之後我們要來到作者的Github
來看一下
在這裏作者給我們提供了
不同的模型下載地址
之後我可能也會把模型給共享一下
放到我們的網盤裏
如果沒有的話
大家可以去網盤裏下載這個模型
這邊模型可以看到
是YOLOv8模型來訓練的
通常我們所檢測的模型
YOLOv8它是真實世界的
在這裏還有一些animate
就針對於動漫的
我們可以看一下它的數據集
基本上都是基於動漫素材進行訓練的
所以說這個模型是可以識別到
動漫的臉部或者是動漫的手部
這裏識別動漫臉部一共有四個模型
識別動漫的手部有兩個模型
那麼下面也有人物的
這個就是基於coco2017的一個數據
人物數據進行訓練的
那麼這個就是我們剛纔說的服裝識別
對於服裝來說
它一共分了12個類別
什麼長袖 短袖 長裙 短裙等等的
一共這12個類別
都可以識別的出來
那麼最下面就是我們常用的了
就是我們剛纔在manager
安裝模型當中看到的這幾類
那麼第二個
我們也可以去看一些
社區去訓練的detailer模型
負責檢測不一樣的東西
特殊的東西
也可以看到後面有很多檢測NSFW
這個我就不點開了
大家有興趣就可以看一下去
那麼中間這個就是我們的YOLO模型
當然了
我覺得這個倒沒有必要重複的
去使用那麼多模型
因爲我們已經講過了
Segmentation它的功能和能力是很強的
有很多比較小衆的東西
你想識別的話
直接用語義分割的預處理
我覺得來的更方便
OK
那麼這就是這一節要跟大家分享的
機器語言與遮罩的轉換的
基礎認識和基礎內容的部分
本來這一節還想帶一個
基礎的通過遮罩進行面部修復
部位重繪的一個部分
但是一看這個時間真的太長了
沒想到前面都講了這麼長
那麼我們就只有把這一部分
放到下一期來詳細的講解了
OK
那麼這就是這一期的全部內容了
對了
最後千萬不要忘了
我們是在服務器操作
一定要回來點擊關機
OK
這樣我們就一套打完了
如果這一期的內容對大家有所幫助的話
就千萬不要忘了點擊系列按鍵
來支持歐陽一下下了
大家的支持纔是歐陽更新的原動力
我們下期再見