看過上百部片子的這個人教你視訊標籤演算法解析

騰訊雲加社群發表於2019-01-17

本文由雲+社群發表

隨著內容時代的來臨,多媒體資訊,特別是視訊資訊的分析和理解需求,如影象分類、影象打標籤、視訊處理等等,變得越發迫切。目前影象分類已經發展了多年,在一定條件下已經取得了很好的效果。本文因實際產品需求,主要探討一下視訊打標籤的問題。

查閱了部分資料,筆者拙見,打標籤問題無論是文字、影象和視訊,涉及到較多對內容的“理解”,目前沒有解決得很好。主要原因有以下一些方面,標籤具有多樣性,有背景內容標籤,細節內容標籤,內容屬性標籤,風格標籤等等;一些標籤的樣本的實際表現方式多種多樣,樣本的規律不明顯則不利於模型學習;標籤問題沒有唯一的標準答案,也存在一定的主觀性,不好評估的問題則更不利於模型學習。

依然筆者拙見,視訊打標籤問題目前還沒有很好的解決辦法,也處於探索階段。方法上主要有以下一些思路:可以從視訊角度出發,可以從影象角度出發;可以利用caption生成的思路,可以轉化為多分類問題。

直接從視訊角度出發,即從視訊整體的角度出發,提取影象幀,甚至字幕或者語音資訊,進一步處理得出視訊標籤的結果。Deep Learning YouTube Video Tags,這篇文章提出一個hybrid CNN-RNN結構,將視訊的影象特徵,以及利用LSTM模型對標籤考慮標籤相關性和依賴性的word embeddings,聯合起來,網路結構如下圖。

img

Large-scale Video Classification with Convolutional Neural Networks提出了幾種應用於視訊分類的卷積神經網路結構,在網路中體現時空資訊。single frame:就是把一幀幀的影象分別輸入到CNN中去,和普通的處理影象的CNN沒有區別;late fution:把相聚L的兩幀影象分別輸入到兩個CNN中去,然後在最後一層連線到同一個full connect的softmax層上去;early fution:把連續L幀的影象疊在一起輸入到一個CNN中去;

slow fution:通過在時間和空間維度增加摺積層,從而提供更多的時空全域性資訊。如下圖所示:

img

另一方面,為了提高訓練速度,這篇文章還提出Multiresolution CNNs,分別將擷取中間部分的影象和縮放的影象作為網路的輸入,如下圖所示:

img

這篇文章主要研究了卷積神經網路在大規模視訊分類中的應用和表現。通過實驗,文章總結網路細節對於卷積神經網路的效果並不非常敏感。但總的來說,slow fusion網路結構的效果更好。

從影象角度出發,即從視訊中提取一些幀,通過對幀影象的分析,進一步得出視訊標籤的結果。對影象的分析,也可以轉化為影象打標籤或者影象描述問題。Visual-Tex: Video Tagging using Frame Captions,先從視訊中提取固定數量的幀,用訓練好的image to caption模型對影象生成描述。然後將文字描述組合起來,提取文字特徵並用分類方法進行分類,得到tag結果。這篇文章對生成的描述,對比了多種不同的特徵和多種不同的分類方法。可見,影象打標籤對視訊打標籤有較大的借鑑意義。另一種思路,CNN-RNN: A Unified Framework for Multi-label Image Classification可以看作將影象打標籤問題轉化為多分類問題。將卷積神經網路應用到多標籤分類問題中的一個常用方法是轉化為多個單標籤的分類問題,利用ranking loss或者cross-entropy loss進行訓練。但這種方法往往忽略了標籤之間的聯絡或者標籤之間語義重複的問題。這篇文章設計了CNN-RNN的網路結構裡,並利用attention機制,更好地體現標籤間的相關性、標籤間的冗餘資訊、影象中的物體細節等。網路結構主要如下圖所示,主要包括兩個部分:CNN部分提取影象的語義表達,RNN部分主要獲取影象和標籤之間的關係和標籤之間的依賴資訊。

img

針對空間部分短視訊資料,筆者設計了一個簡單的視訊打標籤的方案,並進行了實驗。由於預處理和演算法細節的很多進一步改進和完善工作還沒有進行,在此只是提出一種思路和把實驗結果簡單地做個分享。

方法介紹:

整體思路:圖片打標籤 => 視訊打標籤

也就是說,對視訊提取幀,得到視訊中的圖片;然後對圖片進行打標籤;最後將視訊中幀圖片的標籤進行整合,得到視訊標籤。

1、從圖片描述說起:

圖片描述典型框架:利用deep convolutional neural network來encode 輸入影象,然後利用Long Short Term Memory(LSTM) RNN decoder來生成輸出文字描述。

img

2、在打標籤任務中,我們把標籤或類別組合,構造成“描述”:

一級類別+二級類別+標籤(重複的詞語進行去重)

3、利用預訓練和強化學習,對訓練樣本圖片和標籤構造模型對映。

img

《Self-critical Sequence Training for Image Captioning》

網路模型有三種:fc model;topdown model;att2in model;模型細節見論文。

一般地,給定輸入影象和輸出文字target,,模型訓練的過程為最小化cross entropy loss(maximum-likelihood training objective):

img

利用self-critical policy gradient training algorithm:

img

其中,是reward funtion

img

通過根據每一個decoding time step的概率分佈進行取樣獲得,是baseline output,通過最大化每一個decoding time step的概率分佈輸出獲得,也就是a greedy search。論文裡提到,利用CIDEr metric作為reward function,效果最好。

4、根據視訊幀圖片的標籤,對視訊打標籤。具體有兩種思路:

記錄視訊提取的所有幀圖片中每一個出現的標籤,以及標籤出現的次數(有多少幀圖片

被打上了這個標籤)。按照出現次數排序。

1.將幀圖片的最多前n個標籤,輸出為視訊標籤。

2.將幀圖片中,出現次數大於閾值c的標籤,,輸出為視訊標籤。

資料示例:

img

其中1class表示一級類別,2class表示二級類別。

實驗結果示例:

擷取一些實驗結果展示如下,其中output指模型輸出的結果,reference指人工標定的參考結果。

img

img

總的來說,遊戲類視訊的資料量最大,效果較好;但具體不同英雄的視訊資料如果不平衡,也會影響演算法結果。其他型別視訊資料不算太稀疏的效果也不錯,長尾視訊的效果不行。

總結:

資料預處理、模型結構、損失函式、優化方法等各方面,都還有很多值得根據視訊打標籤應用的實際情況進行調整的地方。後續再不斷優化。方法和實驗都還粗糙,希望大家多批評指導。

此文已由作者授權騰訊雲+社群在各渠道釋出

獲取更多新鮮技術乾貨,可以關注我們騰訊雲技術社群-雲加社群官方號及知乎機構號

相關文章