今年4月,Meta的AI模型Segment Anything Model(SAM,分割一切模型)發布,一鍵輕鬆實現圖像分割,難怪網友直呼太強。
SAM模型之所以在計算機視覺領域產生重要影響,是因為圖像分割是許多任務中的基礎步驟,比如自動駕駛、人臉識別、車牌識別等都有用到。
在這些應用過程中,從目標檢測、分割再到識別的整個流程,由算法自動完成,無需人工幹預,而SAM模型正是專攻其中的圖像分割。
雖然SAM是圖像分割的代表性模型,但不可避免存在以下短板:
1.它能夠處理圖片分割,但是不能處理視頻,尤其是不能對視頻裏邊移動的物體做連續追蹤。
2.它能分割,但是並不認識所分割的區域到底是什麽。
3.它存在過度分割的問題,經常把一個完整的物體分割成不同的部分,而人是把目標作為整體看待的。
一、SAV模型
現在,彩神V數據(835305.BJ)在SAM和YOLOv8的基礎上,“分割一切”模型的進化版——分割一切視頻Segment-Any-Video(SAV)來了,進一步豐富了計算機視覺成果。
圖片SAV模型(圖片來源:SAV)
作為一種新的圖像、視頻分割方法,SAV可以在圖片或視頻中實現全自動標注,一鍵分割物體。
同時,基於Zero-Shot Transfer(零樣本遷移),SAV無需額外訓練,即使是訓練庫中沒有的圖片,也可以實現輕鬆分割。
與SAM相比,SAV升級主要表現在以下方麵:
1.既可以分割圖片,也可以分割視頻;
2.可以明確目標對象並打標簽;
3.可得到語義上完整的目標區域。
圖片SAV與SAM圖像分割對比結果(圖片來源:SAV)
從上圖可以看出,SAV將巴士、小汽車等分割成一個個完整的區域,而SAM是把這些單個的物體又分割為不同的區域。
除了圖片以外,通過SAV,視頻也可以進行清晰的目標分割和追蹤。
二、示例
現在,我們在網頁版 demo (http://sav.drdedun.com)上體驗一下SAV,可以直觀地感受SAM和SAV兩者的差異。
在首頁可任意選擇一張示例圖片,也可從本地上傳圖片,然後點擊Segment按鈕,就可以同時得到SAM和SAV的結果。
demo首頁示例圖片(圖片來源:SAV)
圖片分割結果:左側為SAM,右側為SAV(圖片來源:SAV)
如果需要觀察某個實例的詳細效果,鼠標放置原圖,移動鼠標即可。
圖片移動鼠標查看詳細分割效果(圖片來源:SAV)
在上圖中,由SAV分割的兩隻小狗是完整而獨立的色塊,並不像左邊分割結果所展示——小狗耳朵顏色和身體部分顏色不一,不是完整的目標對象。同時,SAV分割的兩隻小狗都打上了“dog”的標簽。
需要說明的是,本項目隻關注算法自動分割的應用場景,所以SAV無需人工輸入點、曲線、矩形框等提示信息。
更多示例如下:
圖片圖片分割結果對比(圖片來源:SAV)
三、原理
如前所述, SAM的自動分割不返回標簽信息,並且一個實例(例如,一輛車)可能會被拆分成多個小區域。
自動分割模式下,SAM不返回標簽信息,車輛被分割成多個區域(圖片來源:SAM)
基於此,研發團隊在SAM的基礎上加入YOLOv8檢測模型,YOLOv8返回的結果中包含目標框、類別及置信度,目標框可作為提示信息輸入到SAM,類別名稱即為標簽,因此SAM加YOLOv8可有效地解決上述問題。
該方法同樣可用於視頻分割任務,與處理單幅圖像不同的是,除了分割,我們通常更關心目標的運動軌跡、目標重識別,以及如何實現一鍵摳視頻等。因此研發團隊在SAM和YOLOv8的基礎上加入跟蹤算法,持續關注感興趣的目標,這樣比單純地分割每幀圖像更有實際意義。
考慮到使用了目標檢測模型,在跟蹤方麵,研發團隊選擇Tracking-By-Detection(TBD) 範式的跟蹤方法,例如BoTSORT,而TBD是目前多目標跟蹤任務中特別有效的範式。
圖像分割
使用YOLOv8做前向推理,獲得n個目標框,將這n個目標框作為提示信息輸入到SAM模型並推理,即可完成目標框的實例分割並且得到n個對應的掩膜,然後對這n個掩膜取並集,結果記為m。
使用YOLOv8做前向推理(圖片來源:SAV)
然後使用SAM做一次全局自動分割,將此時得到的掩膜圖像記為m2。
使用SAM做全局自動分割(圖片來源:SAV)
由於YOLOv8無法檢測到它不能識別的物體,可以設置兩個超參數來確定新的物體,即未知區域與檢測區域的交並比r,以及未知區域的像素個數n。具體而言,按麵積對m2中的區域作降序排序,依次取出其中的區域,然後分別與m計算交並比,若交並比r小於0.3且該區域的像素個數n大於100,則認為該區域是一個新的物體。按照此方法處理m2中的所有區域,即可完成SAV分割單幅圖像的全部流程。
SAV分割單幅圖像(圖片來源:SAV)
視頻分割
SAV視頻分割的原理可以簡單描述為:
1.使用YOLOv8檢測某幀圖像中的所有目標;
2.使用跟蹤算法預測後續幀中的目標框;
3.根據檢測到的目標框與當前軌跡集合相關聯,獲得每個目標的id;
4.將目標矩形框輸入SAM,進行實例分割。
重複上述1~4步驟,實現視頻分割。
SAV視頻分割算法框架圖(圖片來源:SAV)
效果展示
圖像分割對比(圖片來源:SAV)
可以看出,SAV能夠很好地解決文章開頭提到的SAM存在的問題。
四、潛在用途
無人駕駛。特斯拉無人駕駛汽車經常會把樹樁或者墓碑當成行人,這個對於無人駕駛來說是不利的,因為如果是電線杆子在路邊的話,我們沒必要讓無人駕駛汽車減速,但如果是一個行人準備過馬路的話,那麽就需要預先作出處理。SAV可以有效地解決這種問題。
無人機自主飛行。無人機自主飛行在密林中或者建築物中,需要對所有的目標進行識別,並且做出恰當的反應。SAV將大大提高這種智能水平。
機器人視覺。機器人行走在工廠或者街上的時候,如果不認得障礙物,不認得道路,不認得其他移動的物體,那將寸步難行。SAV將為機器人裝上智慧的眼睛。
重點區域防護。可連續追蹤和識別每個目標,結合其他的算法對目標的身份和行為進行識別。確保重點區域的的每一個人,每一輛車都在管控的範圍內。
五、更多
目前,SAV模型已開源,並在GitHub正式上線。感興趣的朋友可以點擊【閱讀原文】或者直接前往https://github.com/cStor-cDeep/Segment-Any-Video了解,也歡迎向研發團隊訂製更高性能的大模型算法,聯係方式如下:
聯係人:張先生
郵箱:zhangkun@drdedun.com
手機:15895885574(微信同號)
參考文獻
[1] Kirillov A, Mintun E, Ravi N, et al. Segment anything[J]. arXiv preprint arXiv:2304.02643, 2023.
[2] Dillon Reis, Jordan Kupec, et al. Real-Time Flying Object Detection with YOLOv8[J]. arXiv preprint arXiv:2305.09972, 2023.