不懂視頻分類?ResNet3D幫你搞定

本文來自:blog.aistudyclub.com

隨著短視頻應用火爆全網(wǎng),現(xiàn)在各種短視頻已經(jīng)占據(jù)了全網(wǎng)50%以上的流量讲仰,那么如何對短視頻分類就成了一個問題谜诫。目前漾峡,我們使用卷積網(wǎng)絡可以有效的對圖片進行分類,同時精度也比較高喻旷。那么神經(jīng)網(wǎng)絡是否可以對視頻分類呢生逸?答案是肯定的,本文帶你使用ResNet3D網(wǎng)絡來完成視頻分類任務且预。

本文對ResNet3D論文解讀和復現(xiàn)槽袄,ResNet3D網(wǎng)絡主要內(nèi)容出自以下兩篇論文:

《Can Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet?》

《Would Mega-scale Datasets Further Enhance Spatiotemporal 3D CNNs》

論文項目地址:
https://github.com/kenshohara/3D-ResNets-PyTorch

1.目標

這里我們先簡單介紹一下第一篇論文《Can Spatiotemporal 3D CNNs Retrace the History of 2D CNNs and ImageNet?》的目標。我們已經(jīng)知道CNN網(wǎng)絡在CV領域已經(jīng)取得了巨大的成功锋谐,在大量的圖片數(shù)據(jù)集下遍尺,比如ImageNet數(shù)據(jù)集,CNN網(wǎng)絡可以取得較高的精度怀估。那么使用目前已有的視頻數(shù)據(jù)集狮鸭,將現(xiàn)有的CNN網(wǎng)絡的2維卷積核調(diào)整為3維卷積核,是否有充足的數(shù)據(jù)可以滿足CNN網(wǎng)絡的訓練需求多搀?文中主要使用ResNet3D網(wǎng)絡對此進行了驗證歧蕉。

第二篇論文《Would Mega-scale Datasets Further Enhance Spatiotemporal 3D CNNs》是在第一篇的基礎上進行的工作,其目標是希望驗證超大規(guī)模的數(shù)據(jù)集是否可以增強CNN網(wǎng)絡的性能康铭。

2.工作內(nèi)容

在第一篇論文中惯退,論文作者發(fā)現(xiàn)只有在Kinetics400這種大規(guī)模數(shù)據(jù)集上,ResNet系列模型才能很好的收斂从藤。在UCF101催跪、HMDB-51和ActivityNet上模型都會出現(xiàn)過擬合的情況锁蠕,很難訓練出高精度的模型。在Kinetics400數(shù)據(jù)上懊蒸,隨著模型的深度增加荣倾,比如在ResNet152之后,精度提升就很微弱了骑丸。這里說明了如果有大規(guī)模的數(shù)據(jù)集是可以使用3D的CNN網(wǎng)絡進行訓練的舌仍。既然有了大規(guī)模數(shù)據(jù)集訓練好的模型,就可以在小規(guī)模的數(shù)據(jù)集上進行微調(diào)訓練通危,作者取得了不錯的結果铸豁。


第二篇論文在第一篇論文的基礎上,對不同的大規(guī)模數(shù)據(jù)集進行融合菊碟,得到了不同的組合超大規(guī)模的數(shù)據(jù)集节芥,分別訓練出不同層數(shù)ResNet3D網(wǎng)絡。保存模型權重可以作為預訓練權重逆害,在小規(guī)模數(shù)據(jù)集上進行微調(diào)訓練头镊,在不同數(shù)據(jù)集和模型上都得到了不同程度的精度提升。

3.模型結構

通常做圖像分類使用的ResNet網(wǎng)絡的卷積核一般只是在2D圖像上做滑動窗口忍燥,計算特征圖拧晕,卷積核的形狀一般為[out_channel, in_channel, W, H]隙姿。而在視頻分類任務中一般對網(wǎng)絡輸入的是視頻中的一段序列梅垄,比如16幀或32幀,這樣在原有WH維度上又增加了一個時間T的維度输玷,卷積核的形狀為 [out_channel, in_channel, T, W, H]队丝。這時,卷積核不止在2D平面上滑動欲鹏,還需要在第三個維度T上移動机久,提取幀之間的關聯(lián)特征。這樣就需要對2D的ResNet進行改造赔嚎,將其改造為3D的ResNet網(wǎng)絡膘盖。ResNet3D保持原有的ResNet的整體架構不變,替換每個block中的basicblock或bottleneckblock中的卷積核為Conv3D,同時池化層也需要替換為3D池化尤误。


整體網(wǎng)絡結構描述如下:


4.訓練方法

第一篇論文中在Kinetics400數(shù)據(jù)集上訓練使用寬和高均為112像素侠畔,16幀的RGB圖像作為輸入樣本。同時使用5種不同尺寸的裁剪方式對圖像進行隨機裁剪损晤,同時添加了隨機水平翻轉软棺,進行數(shù)據(jù)增強。使用交叉熵作為損失函數(shù)尤勋,同時使用SDG優(yōu)化器喘落,設置正則化系數(shù)為0.001茵宪,動量系數(shù)設置為0.9,起始學習率為0.1瘦棋。如果在10個epochs之后稀火,驗證集的損失沒有減小,則學習率除以10赌朋。在小數(shù)據(jù)集上進行模型微調(diào)時設置SDG優(yōu)化器學習率為0.001憾股,同時正則化系數(shù)設置為1e-5。同時作者在多次實驗得出結論:在訓練時箕慧,凍結前4個block服球,只微調(diào)第5個block和全連接層的權重可以得到更好的結果。

第二篇論文在第一篇論文訓練策略的基礎上進行了調(diào)整颠焦,因為是使用超大規(guī)模數(shù)據(jù)集對模型進行微調(diào)斩熊,所以其他參數(shù)不變,只是將SGD優(yōu)化器的起始學習率設置為0.003伐庭,正則化系數(shù)和動量系數(shù)保持0.001和0.9粉渠。

5.實驗結果

通過在多種超大規(guī)模數(shù)據(jù)集和多種模型結構組合訓練得出以下結果。


本次復現(xiàn)的條件和目標如下圾另,

預訓練模型:K+M數(shù)據(jù)集上的ResNet50預訓練權重

數(shù)據(jù)集:UCF-101

目標:Top1為92.9%

6.論文復現(xiàn)

項目地址:
https://github.com/txyugood/Paddle-3D-ResNets

1.下載解壓數(shù)據(jù)集
數(shù)據(jù)集地址數(shù)據(jù)集地址:
https://aistudio.baidu.com/aistudio/datasetdetail/48916

mkdir dataset/
unzip UCF-101.zip -d dataset/

2.視頻轉換為圖片

mkdir /home/aistudio/dataset/UCF-101-jpg/
cd Paddle-ResNets/ && python generate_video_jpgs.py /home/aistudio/dataset/UCF-101 /home/aistudio/dataset/UCF-101-jpg/ ucf101

3.轉換pytorch預訓練模型

pip install torch==0.4.1
cd Paddle-ResNets/model/ && python convert_to_paddle.py

4.訓練網(wǎng)絡
在訓練過程中進行clips準確率驗證霸株,并保存clips準確率最高的模型,最終clips準確率90%。

訓練方法:

  • 訓練時開啟4進程讀取,將數(shù)據(jù)集分為4塊集乔,batch_size 為128去件,以異步方式讀取數(shù)據(jù)進行模型訓練。

  • 每次迭代總訓練時間為2.3秒左右扰路,數(shù)據(jù)讀取時間為1.8秒左右尤溜,

  • CPU使用率已接近100%,內(nèi)存占用在80-90%之間汗唱。

  • GPU使用率50%,可見訓練瓶頸在CPU讀取數(shù)據(jù)部分宫莱,若CPU和內(nèi)存擴容,還可以繼續(xù)提升訓練速度哩罪。

  • 訓練使用的優(yōu)化器為Momentum,學習率0.003授霸,momentun=0.9 L2Decay為0.001.

  • 數(shù)據(jù)增強方式選擇RandomResizedCrop方式。

  • 按照論文中提到的方法际插,凍結Resnet50網(wǎng)絡的conv1碘耳、conv2、conv3和conv4腹鹉,只訓練conv5和fc層藏畅。

cd Paddle-ResNets/ && python train.py

5.驗證網(wǎng)絡
按照論文的方法將視頻以16幀為一個clip進行分割,最后計算一個視頻的所有clips的平均值作為視頻的分類結果。

最后會生成val.json文件供計算top-1準確率使用愉阎。這里與pytorch版本代碼邏輯一致绞蹦。

cd Paddle-ResNets/ && python test.py

6.計算準確率
Top-1準確率為93.55% 超過論文中的92.9%。

cd Paddle-ResNets/ && python eval_accuracy.py
load ground truth
number of ground truth: 3783
load result
number of result: 3783
calculate top-1 accuracy
top-1 accuracy: 0.9355009251916468
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榜旦,一起剝皮案震驚了整個濱河市幽七,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溅呢,老刑警劉巖澡屡,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咐旧,居然都是意外死亡驶鹉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門铣墨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來室埋,“玉大人,你說我怎么就攤上這事伊约∫ο” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵屡律,是天一觀的道長腌逢。 經(jīng)常有香客問我,道長超埋,這世上最難降的妖魔是什么搏讶? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮纳本,結果婚禮上窍蓝,老公的妹妹穿的比我還像新娘腋颠。我一直安慰自己繁成,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布淑玫。 她就那樣靜靜地躺著巾腕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪絮蒿。 梳的紋絲不亂的頭發(fā)上尊搬,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音土涝,去河邊找鬼佛寿。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的冀泻。 我是一名探鬼主播常侣,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弹渔!你這毒婦竟也來了胳施?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肢专,失蹤者是張志新(化名)和其女友劉穎舞肆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體博杖,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡椿胯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了剃根。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片压状。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖跟继,靈堂內(nèi)的尸體忽然破棺而出种冬,到底是詐尸還是另有隱情,我是刑警寧澤舔糖,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布娱两,位于F島的核電站,受9級特大地震影響金吗,放射性物質(zhì)發(fā)生泄漏十兢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一摇庙、第九天 我趴在偏房一處隱蔽的房頂上張望旱物。 院中可真熱鬧,春花似錦卫袒、人聲如沸宵呛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宝穗。三九已至,卻和暖如春码秉,著一層夾襖步出監(jiān)牢的瞬間逮矛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工转砖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留须鼎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像晋控,于是被迫代替她去往敵國和親挑围。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容