本文由雲+社區發表

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

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

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

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

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:通過在時間和空間維度增加卷積層,從而提供更多的時空全局信息。如下圖所示:

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

這篇文章主要研究了卷積神經網路在大規模視頻分類中的應用和表現。通過實驗,文章總結網路細節對於卷積神經網路的效果並不非常敏感。但總的來說,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部分主要獲取圖像和標籤之間的關係和標籤之間的依賴信息。

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

方法介紹:

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

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

1、從圖片描述說起:

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

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

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

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

《Self-critical Sequence Training for Image Captioning》

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

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

利用self-critical policy gradient training algorithm:

其中,是reward funtion

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

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

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

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

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

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

數據示例:

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

實驗結果示例:

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

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

總結:

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

此文已由作者授權騰訊雲+社區在各渠道發布

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

推薦閱讀:

相关文章