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