飛槳視頻理解黑科技開源,支持3000個實用標籤

意料之外,一場疫情解鎖了上班族的存封已久廚藝技能,“秒會陝西正宗涼皮”、“電飯煲實現蛋糕夢”……無數美食短視頻幫助帥哥靚妹登上了廚房的舞臺,舌尖上的中國再次風靡互聯網。更驚喜的是,手機APP上的美食短視頻就總能在合適的時間、推薦合適的菜譜,讓小夥伴們不必爲晚餐喫什麼而發愁。我不僅暗自感嘆,它爲啥如此“懂”我?

說起短視頻,網紅用到它,炫技用到它……在手機的世界,它無處不在。至2020年3月,我國短視頻用戶規模爲7.73億,佔網民整體的85.6%,每天有大量UGC短視頻被生產、分發和消費。

之所以APP可以如此懂我,揭開其神祕面紗,得益於人工智能的視頻分類技術。高效的視頻分類技術讓信息的分發更快地觸及目標人羣,讓APP變得更有溫度。

 

面對海量的視頻數據,如何推薦用戶感興趣的視頻?

 

互聯網視頻分類任務的目標是理解視頻的語義,並給視頻打上標籤,標籤包括不限於美食、旅遊、影視/遊戲等等。標籤越精細、在視頻分發和推薦時,準確率越高。

熟悉深度學習的同學們都知道,數據集對於算法的研究起着非常重要的作用。對於視頻分類任務而言,網絡上雖然有大量用戶上傳的視頻數據,但它們大多缺少類別標籤,無法直接用於模型訓練。在學術界,Kinetics系列是最熱門的視頻分類數據集,但其數據量(以Kinetics-400爲例,包含23萬個視頻)與當前國內主流APP的數據量(千萬/億/十億量級)相比較,也是雲泥之別,且視頻內容與互聯網短視頻也存在較大差異。

此外,視頻中包含成百上千幀圖像,處理這些幀圖像需要大量的計算。基於TSN、TSM、SlowFast視頻分類模型,使用Kinetics-400數據,模型訓練大概需要1周才能達到70%~80%的Top-1精度,面對上千萬的數據量,顯然學術界模型是無法實現產業應用的。

飛槳大規模視頻分類模型VideoTag基於百度短視頻業務千萬級數據,在訓練速度上進行了全面升級;支持3000個源於產業實踐的實用標籤;引入ActivityNet冠軍模型Attention Cluster等,在測試集上達到90%的精度;具備良好的泛化能力,非常適用於國內大規模(千萬/億/十億級別)短視頻分類場景的應用。

當前飛槳VideoTag模型全面開源開放,歡迎感興趣的企業和開發者試用,有如下兩種方式:

如果您想使用PaddleHub快速實現模型預測(VideoTag預訓練模型已經集成到PaddleHub中),GitHub地址:

https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/hub_module/modules/video/classification/videotag_tsn_lstm

如果您想Fine-tune或瞭解更多的VideoTag模型實現細節,可以下載模型完整代碼,GitHub地址:

https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/video/application/video_tag

 

飛槳大規模視頻分類是如何實現的?

 

 

考慮到國內主流APP視頻數據量巨大,爲了提升模型訓練速度,VideoTag採用兩階段建模方式,即圖像建模和序列學習。第一階段,使用少量視頻樣本(十萬級別)訓練大規模視頻特徵提取模型;第二階段,使用千萬級數據進行序列學習,最終實現在超大規模(千萬/億/十億級別)短視頻上產業應用,其原理示意如下圖所示。

  • 數據處理:視頻是按特定順序排列的一組圖像的集合,這些圖像也稱爲幀。視頻分類任務需要先對短視頻進行解碼,然後再將輸出的圖像幀序列灌入到VideoTag中進行訓練和預測。

  • 圖像建模:先從訓練數據中,對每個類別均勻採樣少量樣本數據,構成十萬量級的訓練樣本。然後使用TSN網絡進行訓練,提取所有視頻幀的TSN模型分類層前一層的特徵數據。在這個過程中,每一幀都被轉化成相應的特徵向量,一段視頻被轉化成一個特徵序列。

  • 序列學習:採用Attclusters、LSTM和Nextvlad對特徵序列進行建模,學習各個特徵之間的組合方式,進一步提高模型準確率。由於序列學習相比於圖像建模耗時更短,因此可以融合多個具有互補性的序列模型。

  • 預測結果:融合多個模型結果實現視頻分類,進一步提高分類準確率。

在訓練過程中,可以使用少量GPU和CPU Hadoop集羣完成如上操作,實現較少耗時(1周左右),就可以完成VideoTag模型訓練。

實驗表明,在模型訓練速度上:基於Kinetics- 400數據集完成TSN模型訓練,8卡P40機器僅需要26小時,相比較升級前,需要8卡機器訓練5天,效率提升75%

 

代碼示例

 

飛槳Video-tag預訓練模型已經集成到PaddleHub中,用戶僅需一行命令或數行代碼即可完成模型預測。

1. 安裝飛槳(1.7.2以上版本即可)

$ pip install paddlepaddle==1.8.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 安裝paddlehub(1.6.0以上版本即可)

$ pip install paddlehub==1.7.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

3. 下載預訓練模型videotag_tsn_lstm

$ hub install videotag_tsn_lstm==1.0.0

4. 有兩種模型預測方式:

  • 命令行預測

$ hub run videotag_tsn_lstm --input_path 1.mp4 --use_gpu False

示例的1.mp4的內容截圖如下所示:

讓我們看看模型預測的結果:

模型取出了排名較前的幾個分類結果,分別是“訓練”、“蹲”、“槓鈴”、“健身房”。其中分類的置信度均超過了0.8,網絡預測出來的標籤也和事實相一致。

  • API預測

PaddleHub提供了更加靈活的API預測方式,可以同時處理多個文件。

import paddlehub as hub
videotag = hub.Module(name="videotag_tsn_lstm")
# 一行代碼完成模型預測,paths可接收多個自定義文件路徑
results = videotag.classify(paths=["1.mp4","2.mp4"], use_gpu=False) 
print(results)

示例的2.mp4的內容截圖如下所示:

模型取出了分類結果“舞蹈”,分類的置信度均超過了0.85,網絡預測出來的標籤也和事實相一致。

事實上,該模型對場景的預測標籤有多達3396種,包括瞭如超市、實驗、機場等地點,或者是醫生、教師等人物。可以說,這些標籤足夠達到我們日常小視頻分類的要求,能夠很好的處理我們需要的場景。

無論您是從業者、學生或者深度學習愛好者,在大規模短視頻分類任務上,有飛槳VideoTag預訓練模型加持,都會有助於產品用戶體驗的提升,增加用戶粘性。飛槳期待您的使用,並將您的實踐經驗隨時反饋給我們。

 

如在使用過程中有問題,可加入飛槳官方QQ羣進行交流:703252161。

如果您想詳細瞭解更多飛槳的相關內容,請參閱以下文檔。

VideoTag預訓練模型地址:

https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/hub_module/modules/video/classification/videotag_tsn_lstm

VideoTag模型地址:

https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/video/application/video_tag

官網地址:

https://www.paddlepaddle.org.cn

飛槳開源框架項目地址:

GitHub:

https://github.com/PaddlePaddle/Paddle

Gitee: 

https://gitee.com/paddlepaddle/Paddle

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章