Meta最新開(kāi)源!跟蹤一切升級版!性能超越OmniMotion!
最近幾個(gè)月,CV界真是跟“一切”杠上了。先是Meta在4月5日發(fā)布了Segment Anything,可以為任何圖像中的任何物體提供Mask。隨后又涌現出大量的二創(chuàng )“一切”,例如SAM3D(在3D場(chǎng)景中分割一切)、SAMM(分割一切醫學(xué)模型)、SegGPT(分割上下文中的一切)、Grounded Segment Anything(檢測一切/生成一切)等等,真的是一個(gè)大模型統治一個(gè)領(lǐng)域了。而在6月8日,谷歌又提出了“跟蹤一切”模型OmniMotion,直接對視頻中每個(gè)像素進(jìn)行準確、完整的運動(dòng)估計。本以為這就完了,結果前兩天Meta又新開(kāi)源了CoTracker:跟蹤任意長(cháng)視頻中的任意多個(gè)點(diǎn),并且可以隨時(shí)添加新的點(diǎn)進(jìn)行跟蹤!性能直接超越了谷歌的OmniMotion,不禁感嘆大佬們的世界真是太卷了。今天筆者就帶領(lǐng)小伙伴們欣賞一下這一神作!注意,這里說(shuō)的跟蹤一切,并不是目標跟蹤,而是針對具體的點(diǎn)跟蹤。對目標跟蹤感興趣的小伙伴可以關(guān)注Track Anything這篇文章。
1. 效果展示先來(lái)看一下具體效果!
真的很絲滑。幾乎各種動(dòng)態(tài)目標上的點(diǎn)都可以穩定跟蹤!下面再來(lái)看看從標準網(wǎng)格上采樣的點(diǎn)能否穩定跟蹤:相對于其他SOTA方案可以說(shuō)很強了。而且也完全不懼遮擋:
總之,效果非常好。代碼已經(jīng)開(kāi)源了,感興趣的小伙伴趕快試試吧。下面我們來(lái)看看具體的文章信息。
用于視頻運動(dòng)預測的方法要么使用光流聯(lián)合估計給定視頻幀中所有點(diǎn)的瞬時(shí)運動(dòng),要么獨立跟蹤整個(gè)視頻中單個(gè)點(diǎn)的運動(dòng)。即使對于能夠通過(guò)遮擋跟蹤點(diǎn)的強大的深度學(xué)習方法,后者也是如此。單獨的跟蹤點(diǎn)忽略了點(diǎn)與點(diǎn)之間可能存在的強相關(guān)性,例如,由于它們屬于同一個(gè)物理對象,可能會(huì )損害性能。在本文中,我們提出了CoTracker,一種在整個(gè)視頻中聯(lián)合跟蹤多個(gè)點(diǎn)的架構。這種架構結合了來(lái)自光流和跟蹤文獻中的幾種思想,形成一種新的、靈活的和強大的設計。它基于一個(gè)Transformer網(wǎng)絡(luò ),通過(guò)專(zhuān)門(mén)的注意力層對不同時(shí)間點(diǎn)的相關(guān)性進(jìn)行建模。Transformer迭代更新多個(gè)軌跡的估計值。它可以以滑動(dòng)窗口的方式應用于非常長(cháng)的視頻,為此我們設計了一個(gè)unrolled learning環(huán)。它可以從一個(gè)點(diǎn)聯(lián)合跟蹤到幾個(gè)點(diǎn),并支持隨時(shí)添加新的點(diǎn)進(jìn)行跟蹤。其結果是一個(gè)靈活而強大的跟蹤算法,在幾乎所有的基準測試中都優(yōu)于最先進(jìn)的方法。
3. 算法解析目前主流的運動(dòng)跟蹤方法主要有兩類(lèi):一個(gè)是光流法,即直接估計視頻幀中所有點(diǎn)的瞬時(shí)速度,但是很難估計長(cháng)期運動(dòng)(尤其是遇到遮擋和相機幀率低的時(shí)候)。另一個(gè)是跟蹤法,即選擇有限點(diǎn)直接在連續時(shí)間上進(jìn)行跟蹤,但是沒(méi)有利用同一物體上不同點(diǎn)的相互作用關(guān)系。而CoTracker就同時(shí)利用了兩種方法的思想:使用Transformer來(lái)建模同一物體上點(diǎn)的相關(guān)性,并且使用滑動(dòng)窗口來(lái)跟蹤超長(cháng)視頻序列!CoTracker的輸入是視頻和可變數量的軌跡起始位置,輸出是整條軌跡。注意,網(wǎng)絡(luò )的輸入可以是視頻序列中的任意位置和任意時(shí)間!整篇論文其實(shí)沒(méi)有特別多的數學(xué)推導,但是文章是思想很巧妙。CoTracker的具體原理如下。首先假設點(diǎn)是靜止的來(lái)初始化點(diǎn)坐標P,然后使用CNN來(lái)提取圖像特征Q,為了節省顯存,圖像特征為原圖的1/32大小,同時(shí)還會(huì )加上一個(gè)標記v表示目標是否被遮擋。之后,輸入token(P,v,Q)就被饋送到Transformer中進(jìn)行相關(guān)性建模,得到輸出token(P’,Q’)表示更新后的位置和圖像特征。CoTracker的亮點(diǎn)在于,它設計了滑動(dòng)窗口和循環(huán)迭代來(lái)進(jìn)行長(cháng)視頻的跟蹤。對于長(cháng)度超過(guò)Transformer所支持的最大長(cháng)度T的視頻序列,會(huì )使用滑動(dòng)窗口進(jìn)行建模?;瑒?dòng)窗口的長(cháng)度為J=?2T′/T-1?,并且對于每個(gè)滑動(dòng)窗口,會(huì )進(jìn)行M次迭代。也就是說(shuō)總共有JM次迭代運算。對于每一次迭代,都會(huì )對點(diǎn)的位置P和圖像特征Q進(jìn)行更新。需要注意的是,這里的標記v并不是通過(guò)Transformer來(lái)更新的,而是在M次迭代結束以后根據計算結果更新的。還有一個(gè)unrolled learning是啥意思呢?這里主要說(shuō)的是針對半重疊窗口的學(xué)習方式。由于這種學(xué)習方式不會(huì )導致計算成本的大幅增加,因此理論上CoTracker可以處理任意長(cháng)度的視頻序列。此外,unrolled learning可以跟蹤后出現在視頻中的點(diǎn)!
CoTracker還使用了大量的trick,比如對于網(wǎng)絡(luò )的輸入和輸出使用兩個(gè)線(xiàn)性層,這樣計算復雜度就從O(N2T2)降低到了O(N2+T2)。這里的N代表跟蹤的總點(diǎn)數,T代表視頻序列的長(cháng)度。
CoTracker的訓練在TAP-Vid-Kubric綜合數據集上進(jìn)行,測試在TAP-Vid-DAVIS、TAP-Vid-Kinetics、BADJA、FastCapture四個(gè)包含軌跡真值的數據集上進(jìn)行。訓練使用了11000個(gè)預生成的24幀視頻序列,每個(gè)序列包含2000個(gè)跟蹤點(diǎn)。而在具體的訓練過(guò)程中,主要是從前景對象上采樣了256個(gè)點(diǎn)。訓練使用了32塊V100(果然普通人還是玩不起)。CoTracker的實(shí)驗很有意思,因為數據集上含有軌跡真值。因此為了驗證軌跡是由CoTracker真實(shí)產(chǎn)生的,作者還在視頻中選擇了很多額外的點(diǎn)進(jìn)行驗證。CoTracker的結果也很棒!性能直接超越了谷歌6月發(fā)布的OmniMotion!作者也做實(shí)驗證明了unroll滑動(dòng)窗口的重要性。由于評估過(guò)程中的benchmark都超級長(cháng),因此結果也證明了CoTracker確實(shí)可以很好得應用到長(cháng)視頻序列中!
近期,全世界各大實(shí)驗室都在瘋狂發(fā)布大模型。Cotracker是一個(gè)很新穎的跟蹤一切的AI模型,它主要的創(chuàng )新在于可以對同一物體上的不同點(diǎn)進(jìn)行相關(guān)性建模,并且可以用于超長(cháng)的視頻序列。這一點(diǎn)是常規的光流方法和跟蹤方法所替代不了的,所以對于有長(cháng)時(shí)間跟蹤需求的項目來(lái)說(shuō),Cotracker是一個(gè)很不錯的選擇。未來(lái)還會(huì )出現什么新奇的模型呢,匹配一切?對話(huà)一切?計算一切位姿?讓我們拭目以待。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。