天天看點

基于Deep Learning 的視訊識别方法概覽

基于deep learning 的視訊識别方法概覽

<b>析策@阿裡聚安全</b>

深度學習在最近十來年特别火,幾乎是帶動ai浪潮的最大貢獻者。網際網路視訊在最近幾年也特别火,短視訊、視訊直播等各種新型ugc模式牢牢抓住了使用者的消費心裡,成為網際網路吸金的又一利器。當這兩個火碰在一起,會産生什麼樣的化學反應呢?

不說具體的技術,先上一張福利圖,該圖展示了機器對一個視訊的認知效果。其總紅色的字表示objects, 藍色的字表示scenes,綠色的字表示activities。

基于Deep Learning 的視訊識别方法概覽

<b>圖1</b>

人工智能在視訊上的應用主要一個課題是視訊了解,努力解決“語義鴻溝”的問題,其中包括了:

    · 視訊結構化分析:即是對視訊進行幀、超幀、鏡頭、場景、故事等分割,進而在多個層次上進行處理和表達。

    · 目标檢測和跟蹤:如車輛跟蹤,多是應用在安防領域。

    · 人物識别:識别出視訊中出現的人物。

    · 動作識别:activity recognition, 識别出視訊中人物的動作。

    · 情感語義分析:即觀衆在觀賞某段視訊時會産生什麼樣的心理體驗。

短視訊、直播視訊中大部分承載的是人物+場景+動作+語音的内容資訊,如圖1所示,如何用有效的特征對其内容進行表達是進行該類視訊了解的關鍵。傳統的手工特征有一大堆,目前效果較好的是idt(improved dense trajectories) ,在這裡就不加讨論了。深度學習對圖像内容的表達能力十分不錯,在視訊的内容表達上也有相應的方法。下面介紹最近幾年主流的幾種技術方法。

一種最直接的方法就是将視訊進行截幀,然後基于圖像粒度(單幀)的進行deep learninig 表達, 如圖2所示,視訊的某一幀通過網絡獲得一個識别結果。圖2為一個典型的cnn網絡,紅色矩形是卷積層,綠色是歸一化層,藍色是池化層 ,黃色是全連接配接層。然而一張圖相對整個視訊是很小的一部分,特别當這幀圖沒有那麼的具有區分度,或是一些和視訊主題無關的圖像,則會讓分類器摸不着頭腦。是以,學習視訊時間域上的表達是提高視訊識别的主要因素。當然,這在運動性強的視訊上才有區分度,在較靜止的視訊上隻能靠圖像的特征了。

基于Deep Learning 的視訊識别方法概覽

<b>圖2</b>

它的總體思路是在cnn架構中尋找時間域上的某個模式來表達局部運動資訊,進而獲得總體識别性能的提升。圖3是網絡結構,它總共有三層,在第一層對10幀 (大概三分之一秒)圖像序列進行mxnx3xt的卷積(其中 mxn是圖像的分辨率,3是圖像的3個顔色通道,t取4,是參與計算的幀數,進而形成在時間軸上4個響應),在第2、3層上進行t=2的時間卷積,那麼在第3層包含了這10幀圖檔的所有的時空資訊。該網絡在不同時間上的同一層網絡參數是共享參數的。

它的總體精度在相對單幀提高了2%左右,特别在運動豐富的視訊,如摔角、爬杆等強運動視訊類型中有較大幅度的提升,這進而也證明了特征中運動資訊對識别是有貢獻的。在實作時,這個網絡架構可以加入多分辨的處理方法,可以提高速度。

基于Deep Learning 的視訊識别方法概覽

<b>圖3</b>

這個其實就是兩個獨立的神經網絡了,最後再把兩個模型的結果平均一下。上面一個就是普通的單幀的cnn,而且文章當中提到了,這個cnn是在imagenet的資料上pre-train,然後在視訊資料上對最後一層進行調參。下面的一個cnn網絡,就是把連續幾幀的光流疊起來作為cnn的輸入。 另外,它利用multi-task learning來克服資料量不足的問題。其實就是cnn的最後一層連到多個softmax的層上,對應不同的資料集,這樣就可以在多個資料集上進行multi-task learning。網絡結構如圖4所示。

基于Deep Learning 的視訊識别方法概覽

<b>圖4</b>

它的基本思想是用lstm對幀的cnn最後一層的激活在時間軸上進行整合。 這裡,它沒有用cnn全連接配接層後的最後特征進行融合,是因為全連接配接層後的高層特征進行池化已經丢失了空間特征在時間軸上的資訊。相對于方法2,一方面,它可以對cnn特征進行更長時間的融合,不對處理的幀數加以上限,進而能對更長時長的視訊進行表達;另一方面,方法2沒有考慮同一次進網絡的幀的前後順序,而本網絡通過lstm引入的記憶單元,可以有效地表達幀的先後順序。網絡結構如圖5所示。

基于Deep Learning 的視訊識别方法概覽

<b>圖5</b>

圖5中紅色是卷積網絡,灰色是lstm單元,黃色是softmax分類器。lstm把每個連續幀的cnn最後一層卷積特征作為輸入,從左向右推進時間,從下到上通過5層lstm,最上的softmax層會每個時間點給出分類結果。同樣,該網絡在不同時間上的同一層網絡參數是共享參數的。在訓練時,視訊的分類結果在每幀都進行bp(back propagation),而不是每個clip進行bp。在bp時,後來的幀的梯度的權重會增大,因為在越往後,lstm的内部狀态會含有更多的資訊。

在實作時,這個網絡架構可以加入光流特征,可以讓處理過程容忍對幀進行采樣,因為如每秒一幀的采樣已經丢失了幀間所隐含的運動資訊,光流可以作為補償。

3d cnn 應用于一個視訊幀序列圖像集合,并不是簡單地把圖像集合作為多通道來看待輸出多個圖像(這種方式在卷積和池化後就丢失了時間域的資訊,如圖6上), 而是讓卷積核擴充到時域,卷積在空域和時域同時進行,輸出仍然是有機的圖像集合(如圖6下)。

基于Deep Learning 的視訊識别方法概覽
基于Deep Learning 的視訊識别方法概覽

<b>圖6</b>

實作時,将視訊分成多個包含16幀的片段作為網絡的輸入(維數為3 × 16 × 128 × 171)。池化層的卷積核的尺寸是d x k x k, 第一個池化層d=1,是為了保證時間域的資訊不要過早地被融合,接下來的池化層的d=2。有所卷積層的卷積核大小為3x3x3,相對其他尺寸的卷積核,達到了精度最優,計算性能最佳。 網絡結構如圖7所示。這個是學習長度為16幀(采樣後)視訊片段的基礎網絡結構。對于一個完整的視訊,會被分割成互相覆寫8幀的多個16幀的片段,分别提取他們的fc6特征,然後進行一個簡單平均獲得一個4096維的向量作為整個視訊的特征。

基于Deep Learning 的視訊識别方法概覽

<b>圖7</b>

通過可視化最後一個卷積層對一個連續幀序列的特征表達,可以發現,在特征開始着重表達了畫面的資訊,在特征的後面着重表達的是運動資訊,即在運動處有相對顯著的特征。如圖8。

基于Deep Learning 的視訊識别方法概覽

<b>圖8</b>

和單幀圖特征在視訊測試集上進行對比,3d cnn有更強的區分度,如圖9。

基于Deep Learning 的視訊識别方法概覽

<b>圖9</b>

    · ucf-101

一共13320個視訊, 共101個類别。

基于Deep Learning 的視訊識别方法概覽

    · hmdb51

一共7000個視訊片段,共51個類别。

基于Deep Learning 的視訊識别方法概覽

    · activity-net

200類,10,024個訓練視訊,4,926個交叉驗證視訊,5,044 個測試視訊。

基于Deep Learning 的視訊識别方法概覽

    · 1m sport

1.2 million個體育視訊,有487個已标記的類,每類有1000到3000個視訊。

基于Deep Learning 的視訊識别方法概覽

[1] large-scale video classification with convolutional neural networks

[2] two-stream convolutional networks for action recognition in videos

[3] beyond short snippets: deep networks for video classification

[4] learning spatiotemporal features with 3d convolutional networks

阿裡聚安全由阿裡巴巴移動安全部出品,面向企業和開發者提供企業安全解決方案,全面覆寫移動安全、資料風控、内容安全、實人認證等次元,并在業界率先提出“以業務為中心的安全”,賦能生态,與行業共享阿裡巴巴集團多年沉澱的專業安全能力。

繼續閱讀