題目:OMG-Seg : Is One Model Good Enough For All Segmentation?
作者:Xiangtai Li1 ? Haobo Yuan1 Wei Li1 Henghui Ding1 Size Wu1 Wenwei Zhang1Yining Li2 Kai Chen2 Chen Change Loy1
代碼:OMG-Seg
會議:cvpr2024
邊讀邊記:
這里面提到,omg-seg是首個將圖像、視頻、開放詞匯、交互分割,四種結合到一起的模型。之前的unified models是有一個共享的視覺backbone,多個特定任務分枝;而本模型是共享的encoder-decoder架構,所有任務的輸出都被統一為一種“查詢表示”(Query Representation),通過這種設計,OMG-Seg 能夠用一個統一的框架處理多種任務,而無需為每個任務設計單獨的分支。
3.1節:定義了圖像分割、視頻分割、交互分割、開放詞匯分割的任務。
其中視頻分割提到了tube mask,但是我不太理解tube mask是什么樣子的。大概就是每一幀都有mask吧。
interactive segmentation中,編碼過程是將每個visual prompt(比如一個點坐標或一個矩形框)轉化為一個對象查詢向量。
Open-Vocabulary and Multi-Dataset Segmentation中,在視覺任務中使用?CLIP 文本嵌入?(CLIP?text embedding)作為掩碼分類器(mask classifier)意味著直接用文本嵌入來表示類別。
所以本篇文章是提出了?All the Things are in Queries,通過將所有實體的預測統一到查詢機制中,可以實現對多種分割任務的支持。
統一的查詢掩碼分類框架:
作者提到,通過結合不同的任務設置,可以使用相同的基于查詢的掩碼分類框架來表示所有的分割實體。
具體來說,每個對象查詢(object query)對應三個輸出:
mask掩碼(mi):表示預測的分割掩碼(即物體的像素級區域)。
label標簽(ci):表示預測的類別標簽(如“人”、“車”等)。
ID(di):表示實例的唯一標識(用于區分同一類別的不同實例,常用于實例分割任務)。
不同的分割任務(如語義分割、實例分割、全景分割等)對?mi、ci、di?的格式和范圍有不同的要求。例如:
在語義分割中,di?可能不需要,因為只關心類別標簽?ci?和掩碼?mi。
在實例分割中,di?是必需的,因為需要區分同一類別的不同實例。
盡管不同任務對?mi、ci、di?的具體要求不同,但它們的格式和范圍是相似的,因此可以統一到一個框架中。
3.2 omg-seg的架構
backbone+pixel decoder+mask decoder
backbone:OpenCLIP?中的?ConvNeXt?架構作為視覺編碼器(VLM Encoder)。是凍結的
pixel decoder:作為特征適配器,因為VLM Encoder 提取的特征是凍結的,可能不完全適合特定的分割任務。那么Pixel Decoder 通過多階段的可變形注意力機制,能夠動態調整特征,使其更適合生成高質量的分割掩碼。它還能夠融合多尺度特征,增強模型對物體大小和形狀的適應性。
mask decoder:基于高分辨率特征,生成最終的掩碼和類別標簽。
Combined Object Queries(組合對象查詢):不同任務(如圖像、視頻、交互式分割)對對象查詢的需求不同,圖像任務:對象查詢關注物體級別的定位和識別;視頻任務:對象查詢需要考慮時間一致性(如跨幀的物體跟蹤);交互式分割:對象查詢需要定位用戶指定的特定區域。
語義查詢(Semantic Queries,?QsobjQsobj?):
用于圖像和視頻任務。
這些查詢負責生成圖像掩碼(image masks)或跟蹤的管狀掩碼(tracked tube masks),并需要語義標簽。
例如,在視頻任務中,語義查詢需要確保同一物體在不同幀中的掩碼具有時間一致性。
位置查詢(Location Queries,?QlobjQlobj?):
用于交互式分割任務。
這些查詢通過?Prompt Encoder?將各種視覺提示(visual prompts)編碼為與對象查詢相同的形式。
例如,用戶可以通過點擊或框選指定感興趣的區域,Prompt Encoder 將這些提示轉換為位置查詢。
組合對象查詢:
將語義查詢?QsobjQsobj??和位置查詢?QlobjQlobj??組合在一起,共享相同的解碼器接口。
Shared Multi-Task Decoder(共享多任務解碼器):核心操作:交叉注意力(cross-attention)。輸入:組合對象查詢(QsobjQsobj??和?QlobjQlobj?)和圖像/視頻特征?{Fjfuse}{Fjfuse?}。輸出:精煉后的對象查詢(refined object queries)。最終掩碼通過精煉后的查詢和高分辨率特征?F3fuse的點積得到。
圖像任務加入2d位置嵌入,視頻任務是要加入3d位置嵌入的:
4 實驗
數據集:coco分割的一堆等 還有視頻分割的Youtube-VIS-2021, ADE-20k [102], and DAVIS-2017 datasets 等
實現細節:
-
實現框架:基于 MMDetection,使用 32 張 A100 GPU 進行分布式訓練。
-
數據增強:采用大規模抖動方法。
-
訓練步驟:統一訓練步數,確保公平比較。
-
模型初始化:使用 OpenCLIP 初始化 backbone,并替換分類器為文本嵌入。
-
輸入處理:將圖像輸入視為偽視頻,統一圖像和視頻任務的輸入格式。
-
訓練策略:調整采樣率平衡數據集,報告凍結和訓練 backbone 的結果。
小知識:
分布式訓練中,總 Batch Size 是所有 GPU 上樣本的總和。每個 GPU 的 Mini-batch Size 是單個 GPU 上處理的樣本數量。
在?OMG-Seg?中,每個 GPU 的 Mini-batch Size 為 1,意味著每個 GPU 每次處理 1 張圖像,32 個 GPU 一起處理 32 張圖像(總 Batch Size = 32)。
---還沒寫完 先發布 后面接著寫