比 Meta" 分割一切 " 的 SAM 更全能的圖像分割 AI,來了!
模型名爲Semantic-SAM,顧名思義,在完全複現 SAM 分割效果的基礎上,這個 AI 還具有兩大特點:
語義感知:模型能夠給分割出的實體提供語義标簽
粒度豐富:模型能夠分割從物體到部件的不同粒度級别的實體
用作者自己的話說:
Semantic-SAM,在多個粒度 ( granularity ) 上分割 ( segment ) 和識别 ( recognize ) 物體的通用圖像分割模型。
據我們所知,我們的工作是在 SA-1B 數據集、通用分割數據集 ( COCO 等 ) 和部件分割數據集 ( PASCAL Part 等 ) 上聯合訓練模型的首次嘗試,并系統研究了在 SA-1B 上定義的交互分割任務 ( promptable segmentation ) 和其他分割任務 ( 例如,全景分割和部件分割 ) 上多任務聯合訓練的相互促進作用。
論文來自香港科技大學、微軟研究院、IDEA 研究院、香港大學、威斯康星大學麥迪遜分校和清華大學等研究單位。
具體詳情,一起來看 ~
論文地址:https://arxiv.org/abs/2307.04767
代碼地址:https://github.com/UX-Decoder/Semantic-SAM
在線 Demo 地址:上述代碼倉庫的首頁
( 以下爲論文作者投稿 )
簡介
Semantic-SAM 可以完全複現 SAM 的分割效果并達到更好的粒度和語義功能,是一個強大的 vision foundation model。Semantic-SAM 支持廣泛的分割任務及其相關應用,包括:
Generic Segmentation 通用分割(全景 / 語義 / 實例分割)
Part Segmentation 細粒度分割
Interactive Segmentation with Multi-Granularity Semantics 具有多粒度語義的交互式分割
Multi-Granularity Image Editing 多粒度圖像編輯
1.1 複現 SAM
SAM 是 Semantic-SAM 的子任務。我們開源了複現 SAM 效果的代碼,這是開源社區第一份基于 DETR 結構的 SAM 複現代碼。
1.2 超越 SAM
粒度豐富性 : Semantic-SAM 能夠産生用戶點擊所需的所有可能分割粒度(1-6)的高質量實體分割,從而實現更加可控和用戶友好的交互式分割。
語義感知性。Semantic-SAM 使用帶有語義标記的數據集和 SA-1B 數據集聯合訓練模型,以學習物體 ( object ) 級别和細粒度 ( part ) 級别的語義信息。
多功能。Semantic-SAM 實現了高質量的全景,語義,實例,細粒度分割和交互式分割,驗證了 SA-1B 和其他分割任務的相互促進作用。
隻需單擊一下即可輸出多達 6 個粒度分割!與 SAM 相比,更可控地匹配用戶意圖,不用擔心鼠标移動很久也找不到想要的分割了~
2. 模型介紹 2.1 模型結構
Semantic-SAM 的模型結構基于 Mask DINO 進行開發。Mask DINO 是基于 DETR 框架的統一檢測和分割的網絡,目前仍然是相同模型 size 下的 SOTA 模型。Semantic-SAM 的模型結構主要改進在 decoder 部分,同時支持通用分割和交互式分割。通用分割的實現與 Mask DINO 相同。交互式分割包括 point 和 box 兩種形式,其中 box 到 mask 不存在匹配的 ambiguity,實現方式與通用分割相同,而 point 到 mask 的匹配是 Semantic-SAM 的關鍵設計。
在 Semantic-SAM 中,用戶的 point 輸入被轉換成 6 個 prompt, 每個 prompt 包含一個可學習的 level embedding 進行區分。這 6 個 prompt 通過 decoder 産生 6 個不同粒度的分割結果,以及 object 和 part 類别。
2.2 訓練
爲了學到物體級别 ( object ) 和部件級别 ( part ) 的語義,Semantic-SAM 同時從多個數據集中進行學習,如多粒度數據集 ( SA-1B ) ,物體級别數據集 ( 如 COCO ) ,以及部件級别數據集 ( 如 Pascal Part ) 。
爲了從聯合數據集中學習語義感知性和粒度豐富性,我們引入以下兩種訓練方法:
解耦物體分類與部件分類的語義學習:爲了學習到可泛化的物體和部件語義,我們采用解耦的物體分類和部件分類,以使得隻有 object 标注的數據也可以學習到一些通用的 part 語義。例如,head 是在幾乎所有動物上都通用的 part,我們期望模型從有标注的 dog head,cat head,sheep head 等 head 中學習到可泛化的 lion,tiger,panda 等 head 的識别能力。
Many-to-Many 的多粒度學習:對于交互式分割中的 point 輸入,Semantic-SAM 利用 6 個 prompt 去輸出多粒度的分割結果,并用包含該點擊的所有标注分割來作爲監督。這種從多個分割結果到多個分割标注的 Many-to-Many 的匹配和監督,使得模型能夠達到高質量的多粒度分割效果。
3. 實驗 3.1 SA-1B 與通用分割數據集的聯合訓練
我們發現,聯合訓練 SA-1B 和通用分割數據集可以提高通用分割性能,如對 COCO 分割和檢測效果有大幅提升。
在訓練 SA-1B 數據的過程中,我們也發現了利用少量 SA-1B 的數據即可得到很好的效果。
3.2 SA-1B 與細粒度分割數據集的聯合訓練
同樣的,聯合訓練 SA-1B 和細粒度分割數據集可以提高部件分割性能。
4. 可視化 4.1 Semantic-SAM 的 prompt 從大量數據中學到了固定模式的表征
Semantic-SAM 一共有 6 個可學習的 prompt。對于不同圖片的點擊,觀察每個 prompt 對應的分割結果,可以發現每個 prompt 的分割都會對應一個固定的粒度。這表明每個 prompt 學到了一個固定的語義級别,輸出更加可控。
4.2 Semantic-SAM 與 SAM, SA-1B Ground-truth 的比較
每行最左邊圖像上的紅點是用戶點擊的位置, ( a ) ( b ) 分别是 Semantic-SAM 和 SAM 的分割輸出, ( c ) 是包含用戶點擊的 Groud-truth 分割。與 SAM 相比,Semantic-SAM 具有更好的分割質量和更豐富的粒度,方便用戶找到自己需要的分割粒度,可控性更好。