七牛雲趙之健:多維度融合賦能視頻 AI 的實踐

6 月 30 日下午,趙之健在七牛架構師實踐日第二十九期進行了《多維度融合賦能視頻 AI 的實踐》爲題的實戰分享。

做者簡介:



趙之健,七牛人工智能實驗室資深算法工程師, 七牛視頻算法和算法工程化負責人。擁有近十年從事於計算機視覺和人工智能相關的算法研究的經歷,在圖像相關如人臉識別,圖像分類,工業自動化,視頻分析等領域擁有豐富的研發經驗,研發的產品涉及安防,軍事,移動互聯網,工業 4.0 等多個領域,曾帶隊得到 ACM Muliti-media 大規模視頻分類競賽亞軍。

本文主要分享了七牛人工智能實驗室在視頻 AI 方面的一些工做,分別有兩個關鍵詞:一個是多維度融合,另一個關鍵詞是視頻 AI 。

首先介紹一下七牛 ATLAB,幫助你們瞭解人工智能實驗室。

這個實驗室成立僅兩年的時間,主要的任務是在整個七牛雲的平臺上,爲廣大的客戶提供一些人工智能方面的服務。在 ATLAB 以前,七牛的整個多媒體服務是經過 DORA 這個產品給你們作展示。瞭解過七牛雲整個系統的人應該都知道 DORA 是一個一應俱全的東西。之因此起名叫 DORA 是由於但願它能像哆啦 A 夢同樣,萬能口袋裏有各類東西,給你們帶來無限的可能。整個平臺作得很大,天天的請求量大概在百億級的水平。

它的基礎架構包括三層:首先是底下會依託整個七牛的基礎服務,包括雲存儲和容器計算以及日誌服務;還有上面提供圖片和視頻 API,包括圖片的裁剪、縮放、瘦身之類的同步 API 和視頻轉覽之類的 API,爲你們提供一些音視頻的服務,這是最初 DORA 整個設計的初衷。



ATLAB 整我的工智能實驗室就是基於整個 DORA 以後,在上面繼續布了一套 AI 的引擎,裏面會包括一些鑑黃、物體檢測以及圖片相關的一些 AI 引擎和 AI 的深度學習平臺,這樣就稱它爲 DORA++ 。經過 atlab.ai 這個網址,就能夠看到整個AI 引擎的 DEMO,裏面會有一些相似這樣的展現。

包括咱們作了好久的圖片鑑黃服務、物體場景檢測識別服務、人臉檢測服務,還有最後是一個圖片分割的服務。如今整個 ATLAB 圖片 AI,支持了包括 11000 類的圖片分類、3000 類的檢測、20 類比較精細的鑑黃、400 類的場景以及人臉相關的服務,其中人臉識別在百萬人臉底庫中的首選識別率已經逼近 99%。
算法

下面介紹第一個關鍵詞:視頻


咱們爲何要作視頻?

微信


隨着通訊技術的發展,咱們研究的一些事物的對象是會隨着通訊技術的發展發生改變的。遙想當年仍是直板機諾基亞的時候,2G GPRS 網絡的時候,QQ 可以聊天發短信就足以知足,由於當時的通訊技術不足以支持你發更多的信息。而到了 3G、4G 年代,你們用的更多的是微信,交流更多的是圖片和一些短視頻等,因此咱們 AI 研究的對象,就開始向圖片發展。將來可能會到 5G 時代,數據傳輸速度會從原來的 10M 變成 10G 的水平,好比一些實時的視頻通話,一些直播的應用,確定會成爲咱們將來研究的很重要的對象。所以,隨着通訊技術的發展,視頻總有一天會成爲整我的工智能研究比較重要的對象。

圖片 AI 就是隨着深度學習技術的發展和很是廣大的數據級的推進。視頻跟圖片相比,視頻自己有不少本身的特色,生搬硬套圖片那一套可能並不實用。

首先視頻內容的多樣性,視頻和圖片同樣具備內容的多樣性。並且有些分析的類別多是在視頻裏纔會有的。包羅到整個生活當中的方方面面。全部生活中的內容,均可能成爲咱們視頻處理的對象。

其次就是現有視頻產生的場景的複雜性,現今視頻產生的場景大概分爲:視頻監控、直播,還有一些電視臺的媒體,這三個場景是視頻比較多的狀況。僅僅是在這三大場景裏面,也存在普遍的多樣性。例如在視頻監控的場景下,因爲這些視頻部署的對象不一樣,會致使全部部署的攝像頭,位置高度以及它關心的對象有所不一樣,會致使處理的複雜性。一樣的多樣性也會在直播場景,遇到好比說有主播、演唱會、球賽,包括喬布斯的發佈會之類的各類各樣的場景。這些多是視頻處理起來比較難的一些方面。固然在媒體行業,也會有新聞、綜藝、電視劇、電影這樣不一樣類型的場景。

視頻跟圖片的區別,還有最重要的一點是隻有當你看到視頻的最後一秒,你才知道這個視頻發生了什麼。像球賽這張圖展現的同樣,大多數人可能都會以爲這個球進了,可是他恰恰就都踢在橫樑上。時序性的信息是視頻獨有的,這與圖片徹底不一樣。



最後說到的是視頻數據量的問題。視頻若是簡單一點理解,就能夠當作是一連串圖片的集合。那麼咱們比較了一下,如今市面上常見公開的數據級,前兩個一個是檢測的數據級、一個是分類的數據級。可見,它在一百萬量狀況下的大小,大概是 100 個 G 左右,而視頻僅僅只有十幾萬的數據就能夠達到 T 級的水平,也就是說視頻的數據量相對於圖片來講是爆炸式的,處理的時候也是難點。

以上是第一個關鍵詞的內容。

網絡

下面介紹第二個關鍵詞:多維度融合


咱們怎麼用融合的方式去作視頻?

首先來談談,在作分類的時候,如何使用多維度的特徵這樣一個融合層次,去完成對視頻的分析。去年 6 月份,在剛開始從事視頻研究時,咱們打算從視頻競賽入手開始研究視頻的一些算法。



在當時 ACM( LSVC2017 )舉辦了一個視頻分類的比賽,包含 500 個不一樣的類,幾十萬的視頻。那個視頻標註,就是一個視頻整段的標註,沒有把事件具體發生的片斷標出來,這個難度是比較高的。當時咱們的想法是咱們去試水和了解咱們和世界最早進的水平相差有多少的態度去參加了比賽,主要使用的方法是經過一個特徵融合的方法去完成比賽。

首先咱們用了一些很深的深度學習圖片用的網絡去提了一系列特徵。



而後用了一個時序編碼,用詞袋模型推因出的 NETVLAD 的模型,核心思想是把視頻長度不一樣的特徵段變成等長的特徵,至關於把長度五花八門的特徵都變得同樣長,作了這樣一個編碼的工做。同時還進行了一些簡單的擴充,至關於在以前設定編碼的時候,加入了一些咱們本身設計的結構。



而後設計了一些 fusion 的方法,其中一個比較有特色的是 一個 early fusion Net-VLAD,至關於咱們不是在最終分類的時候纔將咱們特徵的結果作一個融合,而是在特徵層面就把它進行融合,這樣融合的好處是,能夠大量減小最後這一層 FC 的參數量,使整個模型推理更快。



這是最終比賽的結果,能夠看到 map 從最初跑的 0.68,到最後能夠達到咱們提交的 0.87,經過特徵融合的方式能夠極大地提升整個視頻分類的準確度的。這就是咱們最終的成績,稍稍落後阿里拿了第 2 名。

雖然最終的成績還能夠,可是在整個比勝過程中,咱們遇到了很是多的問題。數據量特別大的時候,下載數據就花了一個星期,處理預處理又花了一個星期,整個時間很是耗時。整個視頻訓練,要讓它可以變得更快,咱們就必需要整成一套流式的訓練平臺,至關於從視頻端輸進去你們就開始訓練,而後經過多維度的工具鏈的融合,使整個訓練速度加速,這樣纔可能訓練出更好的模型。

下面介紹一下七牛雲整個的深度學習平臺。



上面一套最開始傳統模型發佈的流程,它就包括整個數據級的整理、下載、標註,再作一些預處理,手工搭平臺,再訓練最終交付出去。咱們的深度學習平臺,就是將上面過程當中能夠自動化的事情,所有用自動化的手段實現,這樣致使整個的訓練過程,能夠減小大概 80% 的人力和 50% 的時間。這是比賽時候就想作的事情,整個融合的工具鏈的入口是咱們開發的 VOTT 標註的平臺,在這個平臺上能夠很方便地標註各類視頻片斷的信息和一些視頻類別的標籤,而後經過這個進度條拖、拽等,能夠很方便地找到你想標註的內容。



而後就是整套大規模的流式訓練平臺。整個平臺咱們拆成了四個部分:第一個部分是一些視頻解碼,存儲解碼等;第二個部分是一些特徵提取的功能;第三個部分是模型訓練;第四個部分是模型的融合。整個把它拆分紅了四個徹底獨立的部分,它們之間互不相干,數據進來以後就能夠進行源源不斷的流式訓練。

整個存儲和編碼解碼用的是 ALLUXIO 和 NVIDIA  提供的 NVVL 工具。這個工具的好處是:它能夠調用 GPU 上的解碼器,將視頻解碼的信息直接存儲在 GPU 上,省去了從  CPU 到 GPU 的拷貝過程,從而加快了整個訓練的過程。

特徵提取集羣,是將原始的視頻轉化成咱們要的例如單幀圖像,多幀圖像和光流之類的訓練用的素材,而後拿來訓練。同時咱們發現圖像對視頻的表述,是比較侷限的。有些時候還須要聲音、文本這樣的信息,這些額外信息的加入也能夠提升咱們訓練的效果,因此一併把它們放在集羣裏。



此次最新的 CVPR 的比賽中,咱們只花了七天七模型就完成了整個比賽,結果也不算太好,就拿了個第三名。七天七模型主要包括 TSN I3D non-local 等視頻專用的模型,就再也不是以前圖片相關的網絡,咱們的技術報告連接在圖片上,能夠經過這個就詳細地瞭解模型的一些狀況和技術報告。

有了這個快速訓練模型的能力以後,咱們在視頻分析能夠去哪裏落地。因而就會跟不少客戶討論,大家對視頻有什麼需求和要求,他們提到有一個視頻通用結構化的需求。這個需求是指,有時候須要對視頻裏面的內容進行一些搜索,搜索裏面一些敏感的人、敏感的事、或者是一些特定的物體。但確定不能每次搜索的時候,就把整個視頻所有拉回來跑一遍,畢竟這個成本是不能承受的。那麼就須要把一個視頻轉成一個通用的結構化的能夠搜索的一些東西去作這麼一件事。



不一樣的客戶,對於視頻結構化的需求有不一樣的理解。好比一些媒體的客戶,內容很合適他們的硬性要求,他對於裏面出現的一些好比涉黃的內容,是比較敏感的,他須要這樣一個東西;還有一些敏感人物是不能出現的,這是特別硬性的要求;另外還有一個要求,就是但願視頻能夠分門別類的分在提早預先設定好的類別下面。

以前這些事情都是人作的,好比《奔跑吧兄弟》就但願分在綜藝的類別下,這是用戶的需求。若是在安防的監控場景下,需求就多是但願可以在杭州市所有的攝像頭裏面找到某一輛紅顏色的車。這就須要作一個快速的搜索,同時把無關的信息所有壓縮掉,沒必要存這麼多視頻,只要存下解構化的信息就能夠,能不能從這些解構化的信息裏面作一些預測,這是用戶的需求。因此整個的需求,會分紅不少種類型。

怎麼樣描述一個視頻?比方說《葉問》這個電影,能夠從幾個方面找到它。

首先,搜索功夫片或者甄子丹這我的,均可能會搜到他。另外還有一個是一句很是有名的臺詞 「 我要打十個 」,可能也會搜索到。你搜索一個視頻,可能從視頻總體去搜索到它,或者從關鍵人物能夠描述它,或者經過一些動做或者事件也能夠找到它。這三個層級都是視頻結構化須要作的事情,因此提出這樣一個多層級的視頻結構化架構。裏面會有整段視頻的結構化,還有一些關鍵人物的結構化和事件行爲的結構化。

只有多維的技術相融合,才能完成多維度視頻結構化這件事情。首先視頻總體結構化就須要視頻整理分類的能力;視頻人物結構化,就須要有人,有檢測跟蹤的能力;事件檢測化,就須要檢測裏面的事件和鏡頭分割的能力,有了這樣的能力之後,才能完成整個多維的結構化的事情。架構

產品在這裏不一一列舉,直接跳到咱們作的一些視頻結構化的 DEMO。



第一個是視頻中人臉結構化的 DEMO。這是給電視臺作的,需求是把裏面的人所有結構化,方便後續搜索。通過整理下來的功能,第一是要實現人臉的檢測和上傳,把人臉的信息存下來;第二是要識別裏面一些敏感人物,包括一些政治人物;第三是要把普通的人物,即不敏感的人歸到一塊兒,只要作這三個功能。



最終結果是這樣的,這是在這個視頻裏面找到的人;這些綠色區域,就是這我的出如今視頻當中的時間。若是當你須要很方便地去看這我的在視頻中出現的片斷,只須要把這個鼠標點到跟它相關的內容上面,就會自動地播放跟這我的相關的事件和工做。這是整個視頻人臉結構化的項目。



第二個是咱們作了一個點球事件識別的 DEMO。能夠看到這個曲線就表示的是這個事件,這個視頻上點球的機率是多少。當出現點球的時候,這個事情會超過這個紅線,是一個預測值,超過這個紅線的時候就會知道點球事件發生了。咱們訓練模型通過測試以後,整場球賽能夠把點球都找出來,誤檢不多,整個的效果還能夠。

可是你們看到這個點球 DEMO 會以爲,點球 DEMO 有點 low,由於只能告訴你這個時候發生的點球,惟一能作的是把整個賽季的視頻跑遍,而後作成一個點球合集,而後一直看。爲何會致使這個東西好像沒什麼用呢?

通過分析咱們發現,一場很好的球賽,它不只僅包括球場上的一些事件,還要包括整個教練員的排兵佈陣,包括一些明星球員的超神的發揮和一些球隊與球隊之間的歷史和恩怨等。整個事件加在一塊兒,纔會是一場比較精彩的球賽。而只有足球事件是能夠用視頻結構化的方法獲得,而剩下的這些東西,則須要一些知識圖譜和天然語言處理的東西,咱們必需要把多維的信息融合起來,才能獲得一個完整的東西。



因此咱們就從新設計了一個點球的架構,將爬蟲爬到的關於足球的知識,通過數據清洗跟合併以後,建成了球星人臉庫和知識圖譜。當處理視頻的時候,不只檢測球場上的事件,還對球場上的人進行識別,經過與球星人臉庫和知識圖譜的相互調用,就會獲得一些歷史的數據。以後就將歷史數據跟球場事件作一個綜合的展現。這樣就至關於有多維度的信息了。咱們第二個版本能夠達到的效果是:當梅西踢點球的時候,就能夠在左上角顯示出來他是誰、他是哪一個國家的、他以前踢進了多少球、這樣整個演示的內容就顯得豐滿一些。

經過咱們一年多來的一些實踐,咱們認爲單獨的內容可能沒有很好地解決實際當中視頻的需求,咱們須要結合各類各樣多維度的包括知識、技術、能力、產品之類的內容,去把它打一個包,才能總體地解決一些視頻上的問題。因此在咱們將來的產品架構裏面,會帶上學習引擎,同時也會帶上咱們各類識別引擎,還有咱們本身視頻的一些引擎,通過協力才能成爲一個比較好的視頻產品。

咱們一直堅信視頻確定是將來的大勢所趨,總有一天全部的智能分析都要走上視頻的道路,但願七牛雲在這方面作的產品,能夠給你們一個更好的視頻的 AI 的體驗。


推薦閱讀
博士們居然玩起了塗鴉:基於手繪草圖的圖像檢索技術研究

深度學習技術的實踐與分享 |七牛雲架構師實踐日第 28 期工具

相關文章
相關標籤/搜索