目錄
- 總體介紹
- 總體流程
- 模塊介紹
- 目標檢測: grounding dino
- 目標分割:Segment Anything Model (SAM)
- 整體思路
- 模型結構:
- 數據引擎
- 圖片繪制
- 集成
- 樣例
- 其他問題
- 附錄
總體介紹
總體流程
本方案用到了三個步驟,按順序依次為:
- 基于語義的目標檢測(使用grounding dino)
- 在檢測到的范圍內進行目標分割生成mask(使用segment anything)
- 圖片繪制(使用stable diffusion)
模塊介紹
目標檢測: grounding dino
總體架構圖
從圖中可以看出,本算法本質上是對圖像和文本進行多模態融合,將二者映射到同一個向量空間并使用attention的思路進行匹配從而得到文本對應的圖像。
模型中使用Swin Transformer作為image backbone,BERT作為text backbone,使用cross-transformer進行多模態融合。
從上面流程可以更深入地理解attention中qkv含義,即可以將attention視為一種軟尋址。在網上看到過一個簡單易懂的解釋:
attention 機制里主要有三個向量 - key, query 和 value,其實可以將 Attention 機制看作一種軟尋址(Soft Addressing):Source 可以看作一個中藥鋪子的儲物箱,儲物箱里的藥品由地址 Key(藥品名)和值 Value(藥品)組成,當前有個 Key=Query(藥方)的查詢,目的是取出儲物箱里對應的 Value 值(藥品),即 Attention 數值。通過 Query 和儲物箱內元素 Key 的地址進行相似性比較來尋址,之所以說是軟尋址,指的是我們不只從儲物箱里面找出一中藥物,而是可能從每個 Key 地址都會取出內容,取出內容的重要性(量的多少)根據 Query 和 Key 的相似性來決定,之后對 Value 進行加權求和,這樣就可以取出最終的 Value 值(一副中藥),也即 Attention 值。所以不少研究人員將 Attention 機制看作軟尋址的一種特例
目標分割:Segment Anything Model (SAM)
整體思路
模型的目的是構建一個用于圖像分割的基礎模型,即尋求開發一個可提示的(promptable)模型并將其進行預訓練,預訓練的數據集通過一個有強大泛化能力的任務來生成。使用這個模型就可以尋求解決在使用prompt工程生成的新數據分布上的一系列下游分割問題。
本計劃能否成功主要和三個部分相關:任務(task)、模型(model)、數據(data)。為了研究這些部分,需要解決以下三個問題:
- 什么樣的任務可以零樣本泛化?
定義一個可提示的分割任務,可以針對任何分割提示(prompt)返回有效的分割掩碼。本任務有兩個作用,一是作為預訓練目標,二是通過prompt工程解決下游通用分割任務。
- 與之相應的模型架構是什么樣的?
模型必須支持靈活的prompt,且可以實時輸出掩碼(mask)。
- 什么樣的數據能支持這項任務和模型?
論文提出需要大規模多樣化的數據集,為了得到這樣的數據集,可以構造一個數據引擎,通過引擎可以半自動、全自動生成新數據完成模型迭代
模型結構:
數據引擎
互聯網上目前沒有適用于本任務數據量的數據集,所以必須構建一套引擎來生成數據。生成的訓練數據集名為SA-1B,總共包括1100萬張圖像和11億個掩碼。數據生成收集包含三個階段。
-
人工輔助階段。專業標注員使用瀏覽器上的交互式標記工具,并結合 SAM 進行手動標注。SAM 首先使用公共數據集進行訓練。隨著數據量的逐漸增加,SAM 圖像編碼器的尺寸也隨之增大(ViT-B擴展為ViT-H)。在這一階段結束時,收集了 430 萬個掩碼和 12 萬張圖像。
-
半自動階段。為了增加掩碼的多樣性并改善模型的性能,研究人員首先預先填充了掩碼,標注人員需要在此基礎上補充其他未標注的對象。為了檢測掩碼的可信度,使用第一階段得到掩碼的數據訓練一個邊界檢測模型,用來進行高置信度預測。在此階段結束時,一張圖像平均可以提供 72 個掩碼。
-
全自動階段。本階段可以實現全自動標注。實現此步驟主要由于亮點:一,在前面兩個階段已經收集了足夠的掩碼;二,引入了可以在有歧義情況下也可以判斷的歧義感知模型。在這一階段結束時,最終的 SA-1B 數據集包含 1100 萬張圖像和 1.1B 個掩碼。
圖片繪制
stable diffusion(網上說這部分的文章眾多,暫略)
集成
樣例
(目前跑的樣例均涉及到公司內部信息,暫略,后期有時間會補充脫敏版)
其他問題
grouding-dino檢測到的目標是一個范圍,如果此范圍內有多個物體且互相之間不好區分,則會全部覆蓋。
例:原圖如下,src為dog,dst為tiger
原圖:
生成的mask:
結果圖:
附錄
GroundingDINO開源項目地址
GroundingDino論文地址
segment anything論文地址
segment anything github
segment anything官方demo
SAM論文解讀
Segment Anything(SAM)論文雜談
SAM綜述
sam數據集
SA-1B數據集
手把手教程
當前圖片編輯基礎代碼