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