百度PaddlePaddle開源視訊分類模型Attention Cluster,曾奪挑戰賽冠軍

PaddlePaddle發表於2019-03-15

Attention Cluster 模型

視訊分類問題在視訊標籤、監控、自動駕駛等領域有著廣泛的應用,但它同時也是計算機視覺領域面臨的一項重要挑戰之一。

目前的視訊分類問題大多是基於 CNN 或者 RNN 網路實現的。眾所周知,CNN 在影象領域已經發揮了重大作用。它具有很好的特徵提取能力,通過卷積層和池化層,可以在影象的不同區域提取特徵。RNN 則在獲取時間相關的特徵方面有很強的能力。

Attention Cluster 在設計上僅利用了 CNN 模型,而沒有使用 RNN,主要是基於視訊的以下幾個特點考慮:

百度PaddlePaddle開源視訊分類模型Attention Cluster,曾奪挑戰賽冠軍

圖 1 視訊幀的分析

首先,一段視訊的連續幀常常有一定的相似性。在圖 1(上)可以看到,除了擊球的動作以外,不同幀幾乎是一樣的。因此,對於分類,可能從整體上關注這些相似的特徵就足夠了,而沒有必要去特意觀察它們隨著時間的細節變化。

其次,視訊幀中的區域性特徵有時就足夠表達出視訊的類別。比如圖 1(中),通過一些區域性特徵,如牙刷、水池,就能夠分辨出『刷牙』這個動作。因此,對於分類問題,關鍵在於找到幀中的關鍵的區域性特徵,而非去找時間上的線索。

最後,在一些視訊的分類中,幀的時間順序對於分類不一定是重要的。比如圖 1(下),可以看到,雖然幀順序被打亂,依然能夠看出這屬於『撐杆跳』這個類別。

基於以上考慮,該模型沒有考慮時間相關的線索,而是使用了 Attention 機制。它有以下幾點好處:

1.    Attention 的輸出本質上是加權平均,這可以避免一些重複特徵造成的冗餘。

2.    對於一些區域性的關鍵特徵,Attention 能夠賦予其更高的權重。這樣就能夠通過這些關鍵的特徵,提高分類能力。

3.    Attention 的輸入是任意大小的無序集合。無序這點滿足我們上面的觀察,而任意大小的輸入又能夠提高模型的泛化能力。

當然,一些視訊的區域性特徵還有一個特點,那就是它可能會由多個部分組成。比如圖 1(下)的『撐杆跳』,跳、跑和著陸同時對這個分類起到作用。因此,如果只用單一的 Attention 單元,只能獲取視訊的單一關鍵資訊。而如果使用多個 Attention 單元,就能夠提取更多的有用資訊。於是,Attention Cluster 就應運而生了!在實現過程中,百度計算機視覺團隊還發現,將不同的 Attention 單元進行一次簡單有效的『位移操作』(shifting operation),可以增加不同單元的多樣性,從而提高準確率

接下來我們看一下整個 Attention Cluster 的結構。

百度PaddlePaddle開源視訊分類模型Attention Cluster,曾奪挑戰賽冠軍

 圖 2 Attention Cluster 的模型結構

整個模型可以分為三個部分:

1.    區域性特徵提取。通過 CNN 模型抽取視訊的特徵。提取後的特徵用 X 表示,如公式(1)所示:百度PaddlePaddle開源視訊分類模型Attention Cluster,曾奪挑戰賽冠軍(1)X 的維度為 L,代表 L 個不同的特徵。

2.    區域性特徵整合。基於 Attention 來獲取全域性特徵。Attention 的輸出本質上相當於做了加權平均。如公式(2)所示,v 是一個 Attention 單元輸出的全域性特徵,a 是權重向量,由兩層全連線層組成,如公式(3)所示。實際實現中,v 的產生使用了 Shifting operation,如公式(4)所示,其中α和β是可學習的標量。它通過對每一個 Attention 單元的輸出新增一個獨立可學習的線性變換處理後進行 L2-normalization,使得各 Attention 單元傾向於學習特徵的不同成分,從而讓 Attention Cluster 能更好地學習不同分佈的資料,提高整個網路的學習表徵能力。由於採用了 Attention clusters,這裡會將各個 Attention 單元的輸出組合起來,得到多個全域性特徵 g,如公式(5)所示。N 代表的是 clusters 的數量。

百度PaddlePaddle開源視訊分類模型Attention Cluster,曾奪挑戰賽冠軍

3. 全域性特徵分類。將多個全域性特徵拼接以後,再通過常規的全連線層和 Softmax 或 Sigmoid 進行最後的單標籤或多標籤分類。

用 PaddlePaddle 訓練 Attention Cluster

PaddlePaddle 開源的 Attention Cluster 模型,使用了 2nd-Youtube-8M 資料集。該資料集已經使用了在 ImageNet 訓練集上 InceptionV3 模型對特徵進行了抽取。

如果執行該模型的樣例程式碼,要求使用 PaddlePaddle Fluid V1.2.0 或以上的版本。

資料準備:首先請使用 Youtube-8M 官方提供的連結下載訓練集和測試集,或者使用官方指令碼下載。資料下載完成後,將會得到 3844 個訓練資料檔案和 3844 個驗證資料檔案(TFRecord 格式)。為了適用於 PaddlePaddle 訓練,需要將下載好的 TFRecord 檔案格式轉成了 pickle 格式,轉換指令碼請使用 PaddlePaddle 提供的指令碼 dataset/youtube8m/tf2pkl.py。

  • 訓練集:http://us.data.yt8m.org/2/frame/train/index.html

  • 測試集:http://us.data.yt8m.org/2/frame/validate/index.html

  • 官方指令碼:https://research.google.com/youtube8m/download.html

模型訓練:資料準備完畢後,通過以下方式啟動訓練(方法 1),同時我們也提供快速啟動指令碼 (方法 2)

# 方法 1

python train.py --model-name=AttentionCluster 
        --config=./configs/attention_cluster.txt
        --save-dir=checkpoints 
        --log-interval=10 
        --valid-interval=1

# 方法 2

bash scripts/train/train_attention_cluster.sh

使用者也可下載 Paddle Github 上已釋出模型通過--resume 指定權重存放路徑進行 finetune 等開發。

資料預處理說明: 模型讀取 Youtube-8M 資料集中已抽取好的 rgb 和 audio 資料,對於每個視訊的資料,均勻取樣 100 幀,該值由配置檔案中的 seg_num 引數指定。

模型設定: 模型主要可配置引數為 cluster_nums 和 seg_num 引數。其中 cluster_nums 是 attention 單元的數量。當配置 cluster_nums 為 32, seg_num 為 100 時,在 Nvidia Tesla P40 上單卡可跑 batch_size=256。

訓練策略:

  • 採用 Adam 優化器,初始 learning_rate=0.001

  • 訓練過程中不使用權重衰減

  • 引數主要使用 MSRA 初始化

模型評估:可通過以下方式(方法 1)進行模型評估,同樣我們也提供了快速啟動的指令碼(方法 2):

# 方法 1

python test.py --model-name=AttentionCluster 
        --config=configs/attention_cluster.txt
        --log-interval=1 
        --weights=$PATH_TO_WEIGHTS

# 方法 2

bash scripts/test/test_attention_cluster.sh
  • 使用 scripts/test/test_attention_cluster.sh 進行評估時,需要修改指令碼中的--weights 引數指定需要評估的權重

  • 若未指定--weights 引數,指令碼會下載已釋出模型進行評估

模型推斷:可通過如下命令進行模型推斷:

python infer.py --model-name=attention_cluster 
        --config=configs/attention_cluster.txt
        --log-interval=1 
        --weights=$PATH_TO_WEIGHTS 
        --filelist=$FILELIST
  • 模型推斷結果儲存於 AttentionCluster_infer_result 中,通過 pickle 格式儲存。

  • 若未指定--weights 引數,指令碼會下載已釋出模型 model 進行推斷

模型精度:當模型取如下引數時,在 Youtube-8M 資料集上的指標為:

引數取值:

百度PaddlePaddle開源視訊分類模型Attention Cluster,曾奪挑戰賽冠軍

評估精度:

百度PaddlePaddle開源視訊分類模型Attention Cluster,曾奪挑戰賽冠軍

傳送門:

PaddlePaddle Github: https://github.com/PaddlePaddle 

Attention Cluster in PaddlePaddle Github:https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/video/models/attention_cluster 

Reference:Xiang Long, Chuang Gan, Gerard de Melo, Jiajun Wu, Xiao Liu, Shilei Wen, Attention Clusters: Purely Attention Based Local Feature Integration for Video Classification

https://arxiv.org/abs/1711.09550

相關文章