code:https://github.com/facebookresearch/sam2/tree/main
demo:https://sam2.metademolab.com/
paper:https://ai.meta.com/research/publications/sam-2-segment-anything-in-images-and-videos/
這是SAM
這是SAM2
Facebook出品,繼SAM在圖像上分割一切后,SAM2實現了效果優異的視頻上的分割一切
- 構建了能通過用戶交互持續改進模型與數據的數據引擎,收集了迄今為止規模最大的視頻分割數據集。
- 該模型采用簡單的Transformer架構,配備流式內存以實現實時視頻處理。
- 在視頻分割方面,SAM2準確度優于現有方法,且交互次數減少至三分之一;
- 在圖像分割領域,相比"可分割任意模型"(SAM),SAM2精度更高且速度提升6倍(1024分辨率下實現130 FPS的圖像分割速度)。
針對的核心問題
-
圖像分割向視頻領域的擴展不足
現有圖像分割模型(如SAM)無法直接處理視頻中的時空動態特性,如物體運動、變形、遮擋、光照變化等,且視頻數據具有時間維度,需要高效處理長序列幀。 -
視頻分割數據集的局限性
傳統視頻分割數據集(如DAVIS、YouTube-VOS)規模較小,主要覆蓋完整物體,缺乏對物體部分、遮擋/重現場景的覆蓋,難以支持“分割任意物體”的泛化能力。 -
交互式視頻分割的效率與精度平衡
現有方法需大量人工交互(如多次點擊或重新標注),且模型難以在實時處理中保持高精度,尤其在復雜場景下容易丟失目標。
數據:交互式數據收集框架
- 三階段迭代優化
- Phase 1:基于SAM的逐幀手動標注,確保高質量空間掩碼。
- Phase 2:引入SAM 2 Mask進行掩碼傳播,減少手動標注工作量(速度提升5.1倍)。
- Phase 3:全功能SAM 2支持點/掩碼混合提示,利用內存機制進一步提升效率(速度提升8.4倍)。
- 自動掩碼生成(Auto Masklet)
- 通過網格點提示自動生成掩碼,覆蓋小物體和背景區域,提升數據多樣性。
- 最終構建SA-V數據集:包含50.9K視頻、3550萬掩碼,是現有最大視頻分割數據集(比YouTube-VOS多53倍掩碼)。
任務定義
- 核心目標:給定輸入視頻,通過在任意視頻幀上提供交互式提示(如點、框、掩碼),分割并跟蹤目標對象的時空掩碼(masklet),即生成覆蓋整個視頻的時空一致分割結果。
- 交互性:用戶可在任意幀添加提示以迭代優化分割結果。例如,在某一幀糾正分割錯誤后,模型會將修正傳播到整個視頻,減少重復標注成本。
- 對比半監督視頻對象分割(VOS):
VOS通常僅在第一幀提供掩碼提示,且聚焦于完整物體跟蹤;PVS支持多幀任意提示,并可分割物體部分(如“人的手臂”),覆蓋更廣泛的“任意物體”場景。
模型
(其中紅色線是手繪的,因為原圖中沒標注這部分,圖像編碼器的部分特征通過跳躍連接直接輸給mask decoder,來提高掩碼精度)
一、總體設計
- 統一框架:SAM 2是首個統一處理圖像和視頻分割的基礎模型,將圖像視為單幀視頻,通過**流內存機制(Streaming Memory)**擴展SAM的靜態分割能力至動態視頻場景。
- 輸入與輸出:接受視頻中任意幀的點、框、掩碼提示,輸出目標對象的時空掩碼(masklet),支持通過迭代提示逐步優化分割結果。
二、核心組件
1. 圖像編碼器(Image Encoder)
- 采用23年的層次化視覺Transformer(Hiera),基于MAE預訓練,支持多尺度特征提取(共4各stage),其中高分辨率的1,2stage特征直接輸給mask decoder,3,4stage輸給memory attention。
2. 內存注意力模塊(Memory Attention)
- 通過Transformer塊實現當前幀與Memory Bank中的歷史內存的交互。
- 其中自注意力(Self-Attention)處理當前幀特征,交叉注意力(Cross-Attention)關聯Memory Bank中的空間特征和對象指針(Object Pointers)。
3. 提示編碼器與掩碼解碼器(Prompt Encoder & Mask Decoder)
- 提示編碼器:與SAM完全兼容,支持稀疏提示(點/框)和密集提示(掩碼),通過位置編碼和卷積嵌入提示信息。
- 掩碼解碼器:
- 多掩碼預測:處理歧義提示時輸出多個掩碼,如果后續提示仍存在歧義,則選擇最高IoU的掩碼進行傳播。
- 遮擋預測頭:新增分支預測目標是否在當前幀可見,輔助內存更新和分割校正。
- 跳躍連接(Skip Connections):引入圖像編碼器的高分辨率特征,提升掩碼細節精度(圖中手繪的紅色線)。
4. 內存編碼器
內存編碼器的實際輸入是預測得到的mask,以及image encoder得到的圖像嵌入,將mask下采樣后跟圖像嵌入逐元素相加,并經過一個輕量的卷積層得到最終的編碼信息。
5.Memory Bank
- FIFO隊列:存儲最近N幀的內存和M個提示幀的信息,統稱為spatial features,平衡時間上下文和計算成本。
- 對象指針:輕量級向量存儲每幀的語義摘要,增強跨幀語義一致性,用以捕獲高層語義信息(如掩碼解碼器輸出的token),后續實驗驗證這個指針很有效。
與SAM的對比
維度 | SAM | SAM 2 |
---|---|---|
處理對象 | 單幀圖像 | 圖像+視頻(時空序列) |
核心機制 | 靜態提示-分割 | 流內存+時間注意力+迭代提示優化 |
速度(FPS) | 21.7(ViT-H) | 130(Hiera-B+,圖像)/43.8(視頻) |
交互效率 | 依賴單幀多次點擊 | 跨幀內存復用,交互次數減少3倍 |
數據集規模 | SA-1B(11M圖像) | SA-V(50.9K視頻,3550萬掩碼) |
訓練策略:圖像與視頻聯合優化
1. 預訓練(圖像優先)
- 數據:SA-1B圖像數據集(11M圖像)。
- 目標:學習基礎視覺特征和提示響應能力,與SAM初始化一致。
- 技術細節:
- 損失函數:焦點損失 + 骰子損失(比例20:1),L1損失監督IoU預測。
- 數據增強:水平翻轉,Resize至1024×1024,過濾掩碼面積>90%的樣本。
2. 全訓練(圖像+視頻聯合)
- 數據混合:
- 圖像數據:15.2% SA-1B;
- 視頻數據:70% SA-V + 14.8% Internal數據集 + 開源VOS數據集(如DAVIS/YouTube-VOS)。
- 交替訓練策略:按數據規模比例交替采樣圖像和視頻批次,視頻批次處理8幀序列,圖像批次處理單幀。
- 模擬交互式提示:
- 采樣8幀的序列,并隨機選擇最多2幀進行提示,在訓練期間根據真實掩模和模型預測的概率性接收矯正點擊(模擬用戶迭代優化),初始提示及概率為掩碼(50%)、正點擊(25%)或框(25%);
- 數據增強:
- 視頻:水平翻轉、仿射變換、顏色抖動、隨機灰度化;
- 馬賽克變換(10%概率):將視頻幀拼接為2×2網格,強制模型區分相似目標(附錄D.2.2)。
3. 微調(長視頻優化)
- 目標:提升長視頻中的長時依賴建模能力。
- 方法:
- 采樣16幀長序列,僅使用SA-V和Internal數據中“高編輯幀”樣本(前50%最難樣本);
- 凍結圖像編碼器,僅微調內存和注意力模塊,學習率降至原值1/2,訓練50k迭代。