论文阅读 - Large-scale weakly-supervised pre-training for video action recognition
文章目錄
- 1 概述
- 2 數據的收集方式
- 3 使用的模型
- 4 預訓練時的一系列問題
- 4.1 預訓練的數據是不是越多越好?
- 4.2 用于預訓練的模型是不是越大越好?
- 4.3 預訓練數據的標簽種類和數量是不是越多越好?
- 4.4 用于預訓練的每個video有長有短,時長該如何選取?
- 5 總結
1 概述
本文是對論文Large-scale weakly-supervised pre-training for video action recognition的閱讀筆記。在視頻領域,一直沒有一個像圖像中ImageNet那樣的標準,龐大且適用于各種下游任務的預訓練數據集。這篇文章就是提出了一種構建video action recognition這一任務的預訓練數據集的制作方法。因為預訓練這種操作,是只要有大佬用N機N卡在N大的數據集上花N天訓練好之后分享出來,我們一機一卡的老百姓就可以直接拿過來finetune一下提升自己任務的指標了,所以是非常實惠的一個東西。這么好的東西,自然要記錄并分享一下。
代碼可見:microsoft/computervision-recipes
論文對預訓練這件事拋出了幾個問題,并根據他們的實驗結果,自行解答了一下,本文第4節也會按這幾個問題進行總結。
- 預訓練的數據是不是越多越好?
- 用于預訓練的模型是不是越大越好?
- 預訓練數據的標簽種類和數量是不是越多越好?
- 用于預訓練的每個video有長有短,時長該如何選取?
2 數據的收集方式
論文當中的數據都是通過搜索的方式下載的網上的公開視頻,因此只要有功夫,數據量可以一直大下去。搜索的時候是根據label去搜索的,而且也會對label的單詞進行換位,盡可能搜索到所有相關的視頻,比如在找label=“catching a fish"的視頻時,也會去搜索"catch fish”,"fish catching"等等。這樣收集到的數據必然有一個問題,就是會有很多的視頻標簽是錯的,也就是一大堆臟數據,但這個問題不大,數據的多樣性和龐大的數據量可以outdo這個影響。
那么這些label是哪里來的呢?因為是預訓練的模型,所以希望這個label涵蓋的范圍可以盡可能地大。文中有4中類型的label,分別是"IG-Kinetics",“IG-Noun”,“IG-Verb”,“IG-Verb+Noun”。"IG"不用管他,就是說明出自這篇文章的一個標識。"IG-Kinetics"的label來源于Kinetics-400數據集,共359個labels;"IG-Noun"的label來源于ImageNet-1K中的名詞,共1428個labels;"IG-Verb"的label來源于"Kinetics"和"VerbNet"中的動詞,共438個labels;"IG-Verb+Noun"的label來源于以上兩個標簽集中名詞和動詞的組合,共10653個labels。
3 使用的模型
使用什么模型并不是論文當中的重點,只要是能夠測出預訓練數據的變化對模型訓練的影響就行,論文當中選取了R(2+1)D-d模型,其中ddd表示模型的深度,可以是{18,34,101,152}\{18, 34, 101, 152\}{18,34,101,152}。
訓練時,雖然一個video可能有多個標簽,但是按多標簽的方法去訓練的話,實驗結果不佳,故論文用多類別的方式去訓練的模型,也就是如果一個video有多個標簽的話,每次從中隨機選一個作為訓練時的類別。
4 預訓練時的一系列問題
4.1 預訓練的數據是不是越多越好?
是的。
論文從"IG-Kinetics"中選取了6個子集,數據量的大小分別是{500K,1M,5M,10M,19M,65M}\{500K, 1M, 5M, 10M, 19M, 65M\}{500K,1M,5M,10M,19M,65M},然后做預訓練時候,分別在"Kinetics"和"Epic-Kitchens"上進行finetune,finetune采用了整個網絡finetune(full-ft)和只finetune最后的全連接層(fc-only)兩種方式。為了證明預訓練有助于模型的訓練,論文還用不用預訓練的直接訓練的模型結果作為baseline。
下圖中,(a)是在"Kinetics"上finetune的結果,縱軸是top-1準確率,橫軸是預訓練用到的數量大小,其中的黃點(67.0)是baseline的準確率,該值和橫軸無關。可見隨著數據量的增大,準確率近似對數線性提升,相對baseline有較大提升。同時也可以發現,full-ft的準確率更高,但隨著數據量的增大,fc-only的準確率慢慢逼近full-ft。
(b)是在"Epic-Kitchens"上finetune的結果,縱軸是mAP,橫軸是預訓練用到的數量大小,其中的黃點(12.3)是baseline的準確率,該值和橫軸無關。其結論與(a)類似。不過full-ft的結果會比fc-only一直好很多。
在預訓練的數據集中,有很多長尾的標簽,圖?對采集預訓練數據時的方式進行了對比。虛線是隨機采樣的數據訓練得到的結果,實線是把長尾類別的videos都保留訓練得到的結果,在fc-only上,保留長尾數據有明顯更好的效果。當數據量增大時,隨機采樣和保留長尾的采樣數據越來越接近,訓練結果也就越來越接近。
4.2 用于預訓練的模型是不是越大越好?
一定程度上,是的。
這里的大,指的是模型的層數越來越多。下表就是論文在"IG-Kinetics-65M"上用d={18,34,101,152}d=\{18, 34, 101, 152\}d={18,34,101,152}訓練得到的結果。可見隨著模型越來越深,準確率也越來越高。但我們也可以看到在"Epic-Kitchens"上,101101101的準確率要高于152152152的準確率。論文認為是數據量限制了大模型的效果,不過這也是猜測而已,尚待深究。當然,大模型消耗的資源更多,速度也更慢,這是一個trade-off,現在來看,R(2+1)D?101R(2+1)D-101R(2+1)D?101是個不錯的選擇。
4.3 預訓練數據的標簽種類和數量是不是越多越好?
標簽種類和目標數據集標簽種類越一致越好,數量越多并不一定好,標簽的多樣性和數量同時增長才好。
下圖是論文用"IG-Kinetics",“IG-Noun”,“IG-Verb”,“IG-Verb+Noun"分別作為預訓練數據,然后在"Kinetics”,“Epic-Kitches-Noun”,"Epic-Kitchens-Verb"和"Epic-Kitchens-Action"上finetune得到的結果。同時也用了"Sports-1M"和"Kinetics"作為預訓練數據,把其結果作為baseline參考。
可以觀察到(a)中的"Kinetics",在"IG-Kinetics"數據集上預訓練后得到的結果最好,(b)中的"Epic-Kitches-Noun"在"IG-Noun"上的結果最好,?和(d)也是如此,都是在和自己label最接近的預訓練數據集上的表現最好。但是"IG-Noun-Verb"里什么label都有呀,為沒有其他的好呢?論文認為是標簽分布不均勻導致的。
總之,預訓練的標簽和目標數據集的標簽越一致越好。
論文還進行了另兩個實驗,就是固定預訓練數據集的總量,改變其中標簽的數量。當標簽數量比目標數據集標簽數量大時,隨著標簽數量的增加,提升的效果一下子就飽和了;當標簽數量比目標數據集小時,則隨著標簽數量的增加,準確率也近似線性提升。
4.4 用于預訓練的每個video有長有短,時長該如何選取?
視頻數量固定時,長視頻更有利;視頻總時長固定時,短視頻更有利。
通過搜索得到的視頻長短是不齊的,長的視頻中并不一定是整個視頻都和標簽相對應的,這就引入了temporal noise,但長視頻同時也有更多但visual diversity,這就是個trade-off。
論文把"IG-Kinetics"拆成了3份,分別是
- short-N: N個時長在1-5秒的短視頻
- long-N: N個時長在55-60秒的長視頻
- long-center-N: N個截取long-N中視頻的中間4秒得到的視頻
論文先是固定了每份中視頻的總數量,然后分別預訓練后得到結果,發現都是長視頻的效果更好,見下表F1。論文又固定了視頻的總時長,然后預訓練后得到結果,發現都是短視頻的效果更好。真實情況下,還是要我們自行判斷。我個人認為,都是短視頻就可以了。
5 總結
Large-scale weakly-supervised pre-training for video action recognition主要討論了預訓練這件事,給我們自己做項目提升模型性能提供了一個“便宜”的方法。
總結
以上是生活随笔為你收集整理的论文阅读 - Large-scale weakly-supervised pre-training for video action recognition的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从拉格朗日乘子法到SVM
- 下一篇: python 自定义类(特殊方法)