該存儲庫包含在論文“ Quo Vadis,Action識別?新模型和動力學數據集”中報導的訓練有素的模型。該論文於2017年5月發佈在Arxiv上,並將作為CVPR 2017會議論文發表。
“ Quo Vadis”引入了一種新的架構,用於視頻分類,即膨脹的3D Convnet或i3d。在這裡,我們發布了在動力學數據集訓練分開的培訓的Inception-V1 I3D模型。
在我們的論文中,我們報告了通過微調這些模型的UCF101和HMDB51數據集上的最新結果。預先培訓動力學的I3D模型也是CVPR 2017 Charades Challenge的第一名。
存儲庫現在還包括使用RGB輸入的預訓練檢查點,並在Kinetics-600上從頭開始訓練。
新:我們使用的視頻預處理現已由Google開源。要設置它,請在Google的MediaPipe Repo中檢查這些說明。
免責聲明:這不是官方的Google產品。
首先遵循安裝十四行詩的說明。
然後,使用此存儲庫克隆
$ git clone https://github.com/deepmind/kinetics-i3d
使用示例代碼運行
$ python evaluate_sample.py
使用默認標誌,這將構建I3D兩流模型,將預訓練的I3D檢查點加載到TensorFlow會話中,然後通過模型傳遞示例視頻。示例視頻已經進行了預處理,並提供了RGB和Flow Numpy陣列(請參見下面的更多詳細信息)。
該腳本輸出logits張量的規範,以及模型預測的概率和logit值的前20個動力學類。使用默認標誌,輸出應類似於以下的數值精度差異:
Norm of logits: 138.468643
Top classes and probabilities
1.0 41.8137 playing cricket
1.49716e-09 21.494 hurling (sport)
3.84312e-10 20.1341 catching or throwing baseball
1.54923e-10 19.2256 catching or throwing softball
1.13602e-10 18.9154 hitting baseball
8.80112e-11 18.6601 playing tennis
2.44157e-11 17.3779 playing kickball
1.15319e-11 16.6278 playing squash or racquetball
6.13194e-12 15.9962 shooting goal (soccer)
4.39177e-12 15.6624 hammer throw
2.21341e-12 14.9772 golf putting
1.63072e-12 14.6717 throwing discus
1.54564e-12 14.6181 javelin throw
7.66915e-13 13.9173 pumping fist
5.19298e-13 13.5274 shot put
4.26817e-13 13.3313 celebrating
2.72057e-13 12.8809 applauding
1.8357e-13 12.4875 throwing ball
1.61348e-13 12.3585 dodgeball
1.13884e-13 12.0101 tap dancing
可以使用測試文件運行
$ python i3d_test.py
這檢查了該模型可以正確構建並產生正確的形狀。
默認模型已在成像網和動力學上進行了預訓練。其他標誌允許加載僅在動力學上預先訓練的模型,並僅選擇RGB或Flow流。腳本multi_evaluate.sh
顯示瞭如何運行所有這些組合,並在out/
Directory中生成樣本輸出。
目錄data/checkpoints
包含訓練的四個檢查點。剛剛在動力學上訓練的方法是使用默認的十四行詩/張量初始化器初始化的,而在Imagenet上預先訓練的方法是通過從2D Inception-V1模型中引導過濾器的3D來初始化的,如本文所述。重要的是,RGB和流動流是分別訓練的,每個流都有SoftMax分類損失。在測試時間內,我們通過將邏輯添加相等的加權來組合,如evalute_sample.py
代碼所示。
我們使用tf.train.SyncReplicasOptimizer
使用同步SGD訓練。對於每個RGB和流動流,我們用4個備份複製品在64個複製品上匯總。在訓練過程中,我們使用0.5輟學並應用batchnorm,MiniBatch尺寸為6。使用的優化器為SGD,動量值為0.9,我們使用1E-7重量衰減。 RGB和流量模型分別以115K和155K步驟進行培訓,並採用以下學習率計劃。
RGB:
流動:
這是因為確定流程模型在首次運行115K步驟後需要進行更多的培訓。
使用動力學的訓練分開對模型進行培訓。在動力學測試集上,我們獲得以下TOP-1 / TOP-5精度:
模型 | Imagenet +動力學 | 動力學 |
---|---|---|
RGB-I3D | 71.1 / 89.3 | 68.4 / 88.0 |
流-I3D | 63.4 / 84.9 | 61.5 / 83.4 |
兩流i3d | 74.2 / 91.3 | 71.6 / 90.0 |
DeepMind Kinetics數據集的發布僅包括YouTube ID以及剪輯的開始和結束時間。對於此處的示例數據,我們使用來自UCF101數據集的視頻,為此提供了所有視頻。使用的視頻是v_CricketShot_g04_c01.mp4
,可以從UCF101網站下載。
我們的預處理使用內部庫,這些庫現在已被開源檢查Google的MediaPipe回購。它執行以下操作:對於這兩個流,我們以每秒25幀的速度對幀進行採樣。對於動力學,我們還將在提供的開始和結束時間剪輯視頻。
對於RGB,調整視頻的大小確定縱橫比,以使最小的尺寸為256像素,並具有雙線性插值。然後在-1和1之間重新縮放像素值。在訓練期間,我們隨機選擇224x224圖像作物,而在測試期間,我們從視頻中選擇中心224x224圖像作物。因此,提供的.npy
文件具有RGB的形狀(1, num_frames, 224, 224, 3)
,對應於批次大小為1。
對於流量流,在每秒25幀以25幀的方式對視頻進行採樣後,我們將視頻轉換為灰度。我們應用了TV-L1光流算法,類似於OPENCV的此代碼。像素值被截斷為[-20,20]範圍,然後在-1和1之間重新縮放。我們僅使用前兩個輸出尺寸,並施加與RGB相同的裁剪。因此,提供的.npy
文件具有流量的形狀(1, num_frames, 224, 224, 2)
,對應於批次大小為1。
這是GIF顯示提供的.npy
文件。從RGB數據中,我們添加了1,然後除以2以在0到1之間。對於流數據,我們添加了所有0的第三個通道,然後在整個數組中添加了0.5,因此結果也在0和0和1。
有關預處理的更多詳細信息,請檢查此信息,請參閱我們的論文或與作者聯繫。
Brian Zhang,Joao Carreira,Viorica Patraucean,Diego de Las Casas,Chloe Hillier和Andrew Zisserman幫助準備了此最初版本。我們還要感謝動力學數據集背後的團隊以及該體系結構和代碼所基於的原始成立論文。
為了為此存儲庫做出貢獻,您將首先需要簽署condruting.md文件中提供的Google貢獻者許可協議(CLA)。然後,我們將能夠接受任何拉的請求,儘管目前並不是要擴展到其他受過訓練的模型。
對於任何疑問,您可以聯繫“ Quo Vadis”論文的作者,該紙張的電子郵件已在論文中列出。