阿里 UC 視頻標籤識別技術

阿里 UC 視頻標籤識別技術

分享嘉賓:雪萌 阿里巴巴

出品社區:DataFun

注:歡迎轉載,轉載請在留言區內留言。

導讀:本次分享的主題為 UC 信息流視頻標籤識別技術,主要介紹標籤識別整體架構以及基於多模態信息的視頻標籤識別方法,實現讓機器理解海量的視頻中的關鍵信息。

包括以下幾部分:

  • 標籤使用場景
  • 標籤識別系統架構
  • 標籤識別算法
  • 未來工作

▌標籤使用場景

首先介紹下為什麼使用標籤以及標籤的使用場景:

1. 什麼是視頻標籤

阿里 UC 視頻標籤識別技術


UC 信息流推薦比較多的內容都是新聞資訊類的,每天新的內容都非常多,如果沒有內容理解結構化的信息,是比較難做內容冷啟動的。視頻標籤可以理解成描述一個視頻的幾個關鍵詞,當我們看到視頻標籤的時候就可以大概知道這個視頻的內容。這幾張圖片是我們信息流小視頻的幾張截圖,大家可以看下可以給這幾個小視頻打上什麼樣的標籤,比如第一個視頻會打上時尚、穿搭、小姐姐等標籤,第二個視頻會打上美食、燒烤等標籤。當我們提取這樣的標籤之後,該如何使用呢?

2. 標籤在推薦中的使用

阿里 UC 視頻標籤識別技術


標籤在推薦中的使用大概有三個場景:

① 構建用戶畫像:當用戶點擊前面時尚穿搭的視頻,我們可以大概推測用戶可能是對時尚比較感興趣的女性用戶,然後我們會通過對用戶一系列的歷史行為更精準的刻畫用戶的畫像。

② 輔助內容推薦:當用戶觸發一次刷新時,可以參考左邊的圖片,會調用推薦的接口拉取用戶畫像中用戶的特徵表示,然後從用戶特徵中匹配對應的標籤作為 Key 來拉取候選的視頻或資訊,放入一系列的排序模型中排序(這樣的排序模型也會使用標籤作為特徵進行訓練),再對排序之後的候選列表使用標籤來控制多樣性,避免推薦單一內容使用戶產生煩感(我們會使用標籤訓練一些相似性的模型來判斷兩個資訊的相似度做一些過濾或者直接限制每一刷同樣標籤出現的次數),最後對經過排序和過濾之後的候選列表通過閾值截斷,把最終的結果返回給用戶。

③ 生成垂直頻道:比如有娛樂、搞笑、美女等垂直頻道,可以方便用戶直接獲取感興趣的內容。

▌標籤識別系統架構

接下來介紹下標籤識別的系統架構:

1. 標籤體系

阿里 UC 視頻標籤識別技術


我們需要知道什麼樣的詞適合當做標籤來使用,因此,需要維護一套標籤體系:

① 標籤粒度:在信息流的場景下,標籤分為實體標籤和語義標籤,以一部影視劇為例,具體的某一部電影就可以是一個實體標籤,某一類電影,比如喜劇片或者動作片,就是一個語義標籤。

② 標籤更新:由於不斷的有新的詞出現,需要不斷的更新標籤庫,標籤來源(圖中紅框部分):搜索日誌、爬蟲標籤、競品標籤、熱點事件等。我們會從來源中挖掘出新的候選標籤,然後從大搜的知識圖譜中拉取標籤對應的屬性,根據標籤屬性和標籤庫已經存在的標籤挖掘它的同義詞以及關聯關係,再經過人工審核把標籤和標籤對應的屬性入到標籤庫,供後續的使用。

③ 標籤關係:同義關係、關聯關係(上一步已經介紹,不再複述)

2. 標籤系統架構

阿里 UC 視頻標籤識別技術


下面介紹下標籤的整體架構:

我們會用標籤預測的 daemon 不斷的消費 kafka 的資訊流,kafka 的資訊流包含新入庫和屬性發生變化的資訊。標籤預測的 daemon 會去篩選新入庫的資訊或者包含有模型依賴屬性發生變化的資訊去請求標籤預測的服務,通過把請求寫入 kafka request queue。標籤的預測服務會按照右邊的流程做預測。首先把視頻下載下來,進行抽幀或者文本的預處理,然後把預處理之後的數據拿到特徵模塊中抽取圖像、視頻、文本等特徵,然後把抽取的特徵輸入到一系列的標籤預測的模型中,把得到的每個模型預測出的結果放入後處理的模塊中做融合、去重或者擴展,得到最終返回的標籤預測結果,同樣把結果寫到 kafka response queue 中,然後返回到標籤預測的 daemon,標籤預測的結果直接寫入 HBase 或者推到審核平臺,經過人工審核之後再寫入 HBase。由於有一些領域的標籤變化是比較快的,比如影視劇或者綜藝的標籤,對於這樣的標籤預測模型,我們會定期重新拉取數據做例行化的訓練。

▌標籤識別算法

接下來主要介紹下標籤識別的算法:

阿里 UC 視頻標籤識別技術


我們會使用 NextVlad 進行全局視頻標籤識別,在整體的標籤識別上得到不錯的效果,但是對一些長尾的和專業領域的標籤處理的還不夠好,對於一些專業領域的標籤會再用更適合的模型做處理。比如使用 3D 識別行為標籤和使用 mtcbb+InsightFace 識別人物標籤。

1. NextVlad

  • 最初方案:


阿里 UC 視頻標籤識別技術


NetVlad 是2017年 YouTube 8M 視頻理解比賽(主要給 YouTube 的視頻打標)中提出來的一個網絡結構,主要分為三個部分:左邊是特徵的輸入,中間是視頻的特徵提取,右邊是模型的分類階段。

① 視頻特徵:通過 Inception V3+pca 降維得到的一個1024維的視頻特徵;音頻特徵:經過音頻的預處理,使用 VGGish+pca 降維得到的128維音頻特徵,會每秒進行一次採樣,相當於每秒會得到一個128維的音頻特徵,VGGish 模型訓練使用的是 Audio set 數據集,類似於在圖片領域的 ImageNet 這樣的模型,主要是做的是聲音的分類,包括動物的聲音、機械的聲音或者音樂的風格等。

阿里 UC 視頻標籤識別技術


② 特徵提取:中間的特徵提取層使用了雙流的 NetVlad 模塊,分別提取視頻和音頻的特徵,之後拼接一個全連接層,然後通過 Context Gating 的機制來重新計算特徵的相關性。NetVlad 的主要作用是(由於視頻的長短可能是不一致的,輸入的特徵維度是不一樣的。)通過把局部的特徵聚合為整體特徵的方式,得到一個固定長度的向量表示。

我們看下右邊的公式:

  • NetVlad:


多幀特徵聚合:


阿里 UC 視頻標籤識別技術


i 表示第 M 幀,j 表示第 N 維特徵,k 表示聚類的個數 K。αk(xi) 類似 Softmax 函數計算得到的是第 i 幀屬於第 k 個聚類的概率,再乘上 j 維特徵與 k 個聚類第 j 維的距離得到每一幀的 N x K 維的向量,通過對所有的 M 幀的 N 維向量進行累加,得到 N x K 維的視頻級別向量:


阿里 UC 視頻標籤識別技術


  • Context Gating 作用:


一方面,計算特徵的相關性,使得比較重要的權重變的更大,不相關的權重變得比較小;

另一方面,引入一些非線性,使其效果更好。

  • Moe:


③ 分類階段:使用的是混合專家網絡(如左下圖),把輸入 X 分別放入 K 個專家網絡,每個專家的單元可以看做一個簡單的分類器,再用 gating 網絡訓練每個分類器的權重,通過線性的加和得到最終預測的效果。這樣做的目的是,我們認為每一個專家在他自己的專業領域裡會做的比較好,最終的結果是相信了每個專家在他專業領域中的意見,對其進行整合,得到更好的效果。

  • NextVlad:


阿里 UC 視頻標籤識別技術


我們使用的 NextVlad 模型是在 NetVlad 的基礎上進行改進的。NextVlad 是2018年 YouTube 8M 比賽中提出來的網絡結構,在保持模型性能的同時,大幅降低了參數的數量。上面是原始的 NetVlad 單元的網絡結構,下面是改進之後 NextVlad 的網絡結構,標紅的部分表示需要訓練的參數量。NextVlad 首先是把輸入 x 的 N 維特徵擴張到 λN 維特徵,得到

阿里 UC 視頻標籤識別技術

,再對

阿里 UC 視頻標籤識別技術

做 reshape,得到 ( M,G,λN/G ) 的 x 波,這樣在我們訓練分類的時候,降到了 λN/G x K 的維度, 然後使用 Softmax 計算

阿里 UC 視頻標籤識別技術

屬於第 K 個聚類的概率,使用 sigmoid 的門函數計算 group 權重,再通過一個連乘得到 i x G 個的聚類維度乘以 K 的向量,然後通過累加得到了一個 λN/G x K 的 y 維向量,這樣在進入到全連接層,全連接層的維度就從 N x K x H 降到了 λN/G x K x H 的維度,這樣做的話就使我們在方框內的特徵 encoding 階段整體的特徵參數是增加的,可能更好的做特徵表達,而在特徵全連接層的特徵量是下降的,達到了整體的參數量有所下降,而模型性能仍然能保持的效果。

  • Squeeze-and-Excite-gating:


阿里 UC 視頻標籤識別技術


提出 NextVlad 的那篇 paper 同時還改進了 Context Gating 結構,通過把 squeeze 階段的輸 入B x F,即 batch size 乘以F維的向量特徵,通過全連接壓縮到 F/r 維,然後再加入一個全連接層,把 F/r 維重新放大到F維,再加上一個 sigmoid 得到一個 gate 權重,通過 x 乘上 gate 的權重得到最終的輸出 Y,這樣一方面減少了參數量,另一方面通過兩層的全連接層,增加了它的非線性。

  • Chaining Moe:


阿里 UC 視頻標籤識別技術


在分類階段,使用 Chaining Moe 替代原始的 Moe,其網絡結構如上圖,每個 Chaining Unit 是把原始輸入拼接上前面 Chaining Unit 的輸出結果,再輸入到 Moe 中。這樣做相當於每次我們都選取了一批專家,每次在專家討論結果之後,再重新選擇一個專家團。一方面進一步提升了非線性表達能力,另一方面可以減少過擬合。

  • Knowledge Distillation with On-the-fly Navie Ensemble:


阿里 UC 視頻標籤識別技術


NextVlad 的作者還提出了使用知識蒸餾的方式來做 On-the-fly 的 Ensemble,Mixture Prediction 相當於一個老師模型,上面的3個 Prediction 相當於3個學生模型,老師模型是通過原始輸入求平均之後,訓練一個門函數得到每一個學生模型的權重,然後再進行線性加和,得到最終老師模型的輸出。老師模型訓練的 loss 是原始的視頻分類的交叉熵損失函數。每個學生模型是在原始的交叉熵損失函數的基礎上加上了老師預測模型的結果,得到的一個 KL 散度 loss 來作為每個學生模型的損失函數。這樣做是為了讓簡單的模型通過學習複雜老師模型的預測結果,使用比較少的參數量也能訓練得到比較好的效果。

  • 最終方案:


阿里 UC 視頻標籤識別技術


我們最終的線上方案使用了知識蒸餾,用了3個 NextVlad 的子模型,每個子模型的結構如上圖:對視頻和音頻的特徵分別使用 NextVlad 進行提取,然後對於文本的特徵使用 CNN 提取,再把提取到的多模態特徵拼接起來輸入到一個全連接層,然後輸入到 SE Context Gating 中,最後輸入到 C-Moe 中訓練分類。

2. 行為標籤

阿里 UC 視頻標籤識別技術


我們可以看到前面的 NextVlad 模型沒有用老視頻的前後幀的順序,一個時空的特徵,很多行為是跟時間發生的先後順序是比較相關的,比如跳起和落下,根據出現的順序,會是兩個完全不同的動作。我們在行為識別上引入了光流特徵(可以理解為把 3D 的運動投影到 2D 的圖片上),圖中的 (a) (b) 是視頻中的連續的兩幀,(c) 是計算出來的光流信息,為了使用光流信息,我們會把它儲存為一個水平的圖片和一個垂直的圖片,分別包含水平和垂直維度的向量,這樣得到的兩張圖片可以用傳統的圖片模型進行訓練。

  • 3D ConvNet:


另外一個方案,使用圖片的時空特徵,通過 3D 卷積(在 2D 卷積的基礎上,feature 又增加了一個維度,除了水平和垂直外又增加一個時空維度,它的窗口除了在水平和垂直上進行滑動,也會在時空上滑動)進行訓練。

阿里 UC 視頻標籤識別技術


上圖為目前比較主流的行為識別模型,有用到 3D 卷積網絡,另外一個比較主流的是把每張圖片對應的光流信息拼接起來,然後輸入到卷積網絡,再合併起來預測動作,我們使用的是 (e) I3D 模型,把每張圖片對應的光流信息依次排列分別輸入到 3D 卷積網絡中,然後把 3D 卷積網絡訓練的特徵拼接在一起預測行為。I3D 模型的主要貢獻為:

  • 提出了 Kinetic 大規模數據集及預訓練模型,可以在視頻數據比較少的情況下,訓練得到一個不錯效果;
  • 通過把 2D ConvNet 擴充成 3D 的 ConvNet,可以在參數初始化的時候用原來在 ImageNet 上預訓練的參數做初始化;
  • 支持 rgb 和 optical flow 分開預測,再合併分數。

圖中還對比了幾種行為識別方法以及最終得到的效果,可以看到 I3D 模型在幾個公開的數據集上都有比較好的表現。

3. 人物標籤

阿里 UC 視頻標籤識別技術


人物標籤比較不同的地方,根據人物標籤不同的粒度,需要採取不同的方法進行識別。人物標籤的識別,可以理解成人臉或者人體的識別問題,我們在現有的模型中,選擇了 InsightFace 模型:

  • 在大規模人臉識別上有較好表現,將 MegaFace 的精度提升到98%;
  • 創新提出 ArcFace 損失函數,在 Softmax 以及之前在人臉識別領域對 loss 做優化的 SphereFace 和 CosFace 基礎上,進一步優化了分類平面,具有更好的幾何解釋性,使類間的距離是更大的,類內距離是更小的。


阿里 UC 視頻標籤識別技術


人物標籤生成的流程:

① 首先會用 mtcnn 檢測視頻幀中是否存在人臉,並且通過 mtcnn 把人臉區域剪裁出來,然後把檢測出來的人臉輸入到 Insightface 訓練的人臉識別模型和 Insightface 訓練的年齡性別模型中分別提取全連接層的向量。

② 對於實體人物標籤我們會對需要識別的具體某一個人使用一批他的人臉圖片得到一批他的人臉向量,通過計算得到這個人平均臉的向量,再把這個向量入庫到 pangu 中。當有一個新的視頻過來的時候,我們對單幀圖片識別人臉並計算得到人臉向量,召回 pangu 中最相似的人臉向量,如果召回的人臉向量相似度滿足閾值,我們認為圖片中出現了對應的人物。

③ 我們對視頻會採取多幀,對多幀分別預測,再通過融合來得到最終這個視頻裡出現的人物。

④ 對於年齡和性別這樣的粗粒度的標籤,我們會把通過 InsightFace 訓練的人臉向量和年齡性別的向量拼接起來,然後把他們輸入到一個分類模型中分類,得到他具體是某一個類型的人物標籤。

▌未來的工作

阿里 UC 視頻標籤識別技術


  • 我們目前還是有很多特徵沒有使用到,比如視頻的一些場景特徵和物體檢測的特徵,包括有些視頻它的核心內容體現在視頻中的 ocr 或語音上,這些是未來我們打算去嘗試的特徵。
  • 利用更多的標籤的關聯關係,優化我們目前的打標結果。

這是我們工作中,參考的一些論文,大家感興趣的話,可以去看一下,今天的分享就到這裡,謝謝大家。

阿里 UC 視頻標籤識別技術


阿里 UC 視頻標籤識別技術


分享嘉賓

阿里 UC 視頻標籤識別技術


雪萌

阿里巴巴 | 算法專家

——END——


分享到:


相關文章: