百度PaddlePaddle開源視頻分類模型Attention Cluster 曾奪挑戰賽...

2020-11-22 極客公園

  百度 PaddlePaddle

  百度深度學習框架 PaddlePaddle 最近開源了用於視頻分類的 Attention Cluster 模型。由於擁有卓越的分類能力,它曾助力百度計算機視覺團隊奪取了 ActivityNet Kinetis Challenge 2017 挑戰賽的冠軍。該模型通過帶 Shifting operation 的 Attention clusters,處理經過 CNN 模型抽取特徵的視頻的 RGB、光流、音頻等數據,實現視頻分類。

  Attention Cluster 模型

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

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

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

  圖 1 視頻幀的分析

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

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

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

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

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

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

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

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

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

  圖 2 Attention Cluster 的模型結構

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

  1. 局部特徵提取。通過 CNN 模型抽取視頻的特徵。提取後的特徵用 X 表示,如公式 (1) 所示:

  (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 的數量。

  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

  

  # 方法 2

  

  用戶也可下載 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

  # 方法 2

  使用 scripts/test/test_attention_cluster.sh 進行評估時,需要修改腳本中的--weights 參數指定需要評估的權重。

  若未指定--weights 參數,腳本會下載已發布模型進行評估

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

  模型推斷結果存儲於 AttentionCluster_infer_result 中,通過 pickle 格式存儲。

  若未指定--weights 參數,腳本會下載已發布模型 model 進行推斷

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

  參數取值:

  評估精度:

  傳送門:

  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


相關焦點

  • 百度PaddlePaddle聯手Kubernetes,助力開發者高效訓練深度學習模型
    選自Kubernetes等參與:吳攀、李亞洲、蔣思源2016 年 9 月,百度開源了深度學習框架 PaddlePaddle,今天,百度又宣布實現了這一框架和集群管理系統(cluster management system)Kubernetes 的兼容,從而使 PaddlePaddle 成為了迄今為止唯一一個官方支持 Kubernetes 的框架。
  • 百度開源業內首個口罩人臉檢測及分類模型
    2月13日,百度宣布免費開源業內首個口罩人臉檢測及分類模型。該模型可以有效檢測在密集人流區域中攜帶和未攜戴口罩的所有人臉,同時判斷該者是否佩戴口罩。目前已通過飛槳PaddleHub開源出來,廣大開發者用幾行代碼即可快速上手,免費調用。
  • 23個系列分類網絡,10萬分類預訓練模型,這是飛槳PaddleClas百寶箱
    數據集訓練的分類模型作為預訓練模型,然後進行圖像分類的遷移學習。然而 ImageNet1K 數據集的類別只有 1000 種,預訓練模型的特徵遷移能力有限。因此百度自研了一個有語義體系的、粒度有粗有細的 10W 級別的 Tag 體系。通過使用人工或半監督方式,至今收集到 5500w+ 圖片訓練數據;該系統是國內甚至世界範圍內最大規模的圖片分類體系和訓練集合。
  • 520禮包 | 情感分析算法從原理到PaddlePaddle實戰全解
    在深度學習的方法出現之前,主流的文本表示方法為詞袋模型BOW(bag of words),話題模型等等;分類方法有SVM(support vector machine), LR(logistic regression)等等。對於一段文本,BOW表示會忽略其詞順序、語法和句法,將這段文本僅僅看做是一個詞集合,因此BOW方法並不能充分表示文本的語義信息。
  • PaddlePaddle 2.0.0 Beta 發布,API 體系升級,命令式編程完善
    模型組網 新增常見Loss接口paddle.nn.loss.*和Metric接口paddle.metric.提供Model.save/Model.load接口,支持動態圖訓練模式存儲推理模型。 新增Callback接口paddle.callbacks.*,用於模型執行接口,進行日誌記錄、Checkpoint模型存儲等,用戶可繼承paddle.callbacks.Callback進行自定義。
  • 百度發布 Paddle Fluid v1.3 版本,帶來多項重要更新
    正式發布 AnalysisConfig 預測接口,支持計算圖分析、算子融合等優化,並支持利用 Intel MKLDNN、Nvidia TensorRT 子圖引擎等第三方庫的加速.模型庫新增發布 PaddlePaddle 視頻模型庫,提供 5 個視頻分類經典模型以及適合視頻分類任務的通用骨架代碼,用戶可一鍵式高效配置模型完成訓練和評測。
  • 推理引擎Paddle Inference改造三要點,ERNIE時延降低81.3%
    近年來對於NLP的研究也在日新月異的變化,有趣的任務和算法更是層出不窮,百度提出知識增強的語義表示模型 ERNIE就是其中的佼佼者。飛槳開源框架1.8版本中,Paddle Inference在算子融合、TensorRT子圖集成和半精度浮點數(Float 16)加速三個方面對ERNIE模型推理進行了全方位優化。
  • 百度Paddle Fluid v1.3版本官方正式發布
    高效先進的視頻分類庫新增視頻模型庫,提供5個視頻分類經典模型以及適合視頻分類任務的通用骨架代碼,用戶可一鍵式高效配置模型完成訓練和評測。視頻理解權威競賽ActivityNet - Kinetics視頻動作識別任務冠軍方法stNet的resnet50版本開源實現。基於PaddlePaddle的NLP裡程碑Bert模型新增支持NLP語義表示BERT模型,支持多機多卡訓練,支持混合精度訓練,訓練速度對比主流實現提升50%+,提供完整部署示例。
  • 經典目標檢測方法Faster R-CNN和Mask R-CNN|基於PaddlePaddle深度...
    因此,百度深度學習框架 PaddlePaddle 開源了用於目標檢測的 RCNN 模型,從而可以快速構建強大的應用,滿足各種場景的應用,包括但不僅限於安防監控、醫學圖像識別、交通車輛檢測、信號燈識別、食品檢測等等。
  • 如何用Paddle Fluid API搭建簡單的神經網絡?這裡有一份編程指南
    PaddlePaddle 是百度自主研發,集深度學習核心框架、工具組件和服務平臺為一體的開源深度學習平臺。該平臺技術領先、功能完備。Paddle Fluid 是 PaddlePaddle 的核心框架,滿足模型開發、訓練、部署的全流程需求。本文將展示如何用 Paddle Fluid API 編程並搭建一個簡單的神經網絡。
  • 百度ERNIE語義理解開源套件重磅升級 零基礎也能秒變NLP達人
    從模型拉取到執行預測,只需7行代碼,ERNIE開源套件就能用起來!話不多說直接上才藝:如此簡潔易用,得益於本次ERNIE語義理解開源開發套件的全新升級。為了兼顧兩種優勢,ERNIE開源套件進行了全新升級,推出了動靜合一的ERNIE語義理解開發套件。動靜合一的ERNIE開源套件新版ERNIE開源套件突顯了模型易取易用性,簡單幾行代碼就可以把ERNIE跑起來。
  • 走進機器閱讀理解的世界,飛槳開源升級版 BiDAF模型解讀
    在重要的機器閱讀領域,基於DuReader數據集,飛槳升級並開源了一個經典的閱讀理解模型 —— BiDAF,相較於DuReader原始論文中的基線,在效果上有了大幅提升,驗證集上的ROUGE-L指標由原來的39.29提升至47.68,測試集上的ROUGE-L指標由原來的45.90提升至54.66。1.
  • CNN 模型的可視化
    大家都了解卷積神經網絡 CNN,但是對於它在每一層提取到的特徵以及訓練的過程可能還是不太明白,所以這篇主要通過模型的可視化來神經網絡在每一層中是如何訓練的。我們知道,神經網絡本身包含了一系列特徵提取器,理想的 feature map 應該是稀疏的以及包含典型的局部信息。
  • 百度飛槳發布工業級圖像分割利器PaddleSeg
    機器之心發布機器之心編輯部近日,飛槳官方發布了工業級圖像分割模型庫 PaddleSeg,給開發者帶來誠意滿滿的三重超值驚喜:①一次性開源 15 個官方支持的圖像分割領域主流模型,大禮包帶來大滿足。②多卡訓練速度比對標產品快兩倍,工業級部署能力,時間節省超痛快。
  • ActivityNet Kinetics Challenge 2018奪冠|基於PaddlePaddle的...
    百度視覺技術部聯合PaddlePaddle團隊近期開源了用於視頻分類的StNet框架。StNet框架為ActivityNet Kinetics Challenge 2018中奪冠的網絡框架。本次開源了基於ResNet50實現的StNet模型。該模型提出「super-image"的概念,在super-image上進行2D卷積,建模視頻中局部時空相關性。
  • 長江白鱘滅絕了丨Chinese paddlefish in Yangtze River declared extinct
    Psephurus gladius, a Chinese paddlefish living in the Yangtze River, was
  • 百度大腦首場開放日:AI已經滲透到了產業的毛細血管
    中關村創業大街,這個曾見證網際網路創業熱潮的著名地標,也曾陷入冷寂。而今,」智能+「已經成為時代新命題,這條大街又因AI有了新的活力。去年12月底,百度大腦在中關村創業大街開設第一家「線下體驗店「,引來人頭攢動。3月20日,首期百度大腦開放日在中關村創業大街舉辦,更多了一份熱鬧。
  • 一文讀懂最強中文NLP預訓練模型ERNIE
    基於飛槳開源的持續學習的語義理解框架ERNIE 2.0,及基於此框架的ERNIE 2.0預訓練模型,在共計16個中英文任務上超越了BERT和XLNet, 取得了SOTA效果。本文帶你進一步深入了解ERNIE的技術細節。
  • 總結|百度Paddle輕量級目標檢測挑戰賽
    作者:李珺 來源:人工智慧學習圈競賽任務為輕量級目標檢測,在獲取準確的目標檢測BBOX時,要兼顧模型推理速度。提交形式以提交推理代碼由官方進行推理,計算精度和耗時。筆者為炮灰,只獲得了挑戰賽第10名,在此僅僅是總結一下比賽經驗。