0
| 本文作者: AI科技評論 | 2018-07-14 08:20 |
雷鋒網AI科技評論按,本文為美圖云視覺技術部門哈希項目團隊向AI科技評論提供的獨家稿件,未經許可不得轉載。
「美圖短視頻實時分類挑戰賽 MTSVRC」也于近日正式啟動,本次挑戰賽由中國模式識別與計算機視覺學術會議主辦,由美圖公司承辦,中科院自動化所協辦,詳情可點擊往期內容了解。在雷鋒網旗下學術頻道AI科技評論數據庫產品「AI 影響因子」中,美圖云視覺技術部門憑借 AAAI 2018 oral 論文和舉辦相關賽事表現不俗,本次憑借獨家技術解讀也獲得了相應加分。
美圖是一家擁有海量多媒體數據的公司,如何有效分析理解這些數據內容并從中挖掘出有效信息,對我們提出了重大挑戰。本文以美拍業務為例,介紹我們在海量短視頻數據的內容分析理解和大規模檢索技術方向的探索和實踐。
多媒體數據相似性檢索可以簡單理解為用不同媒體素材將其進行特征表達,然后在相應的特征空間里進行查找和排序。特征表達有兩種方式:一種是通過傳統方法提取的視覺特征,比如關鍵點特征、顏色直方圖等;另一個是基于深度學習提取它的底層基礎特征或高層語義特征(深度特征)。美圖 DeepHash 是基于深度哈希技術的大規模多媒體數據檢索系統。系統依托于海量多媒體數據,分為算法和服務兩大模塊。
我們針對美拍短視頻內容特性,從標簽制定,數據處理到算法網絡設計等層面提出一系列定制化的算法優化策略。
在討論具體技術方案之前,我們先來思考一個問題:如何描述一個視頻?在使用視頻哈希技術之前,我們采用的是用標簽體系來描述視頻。圖 1 所展示的是美拍最常見的標簽體系,音樂、寵物、舞蹈、教程等,用標簽體系描述視頻的缺陷是:標簽主要是對視頻內容進行概括、描述性的詞匯,包含信息量較少,一些細節的信息是無法體現的,標簽是離散型的描述。而人類是如何描述一個視頻呢?以左上角視頻截圖為例,人類看了會說:它是兩個穿著淡藍色衣服的小女孩在彈著吉他唱歌。由此可發現,人類是用視覺特征來描述視頻,所包含的信息豐富、維度多樣,是連續型的描述,顯然這是一種更合理的描述方式。

圖 1
進一步說,用標簽來描述視頻存在以下問題。
1. 信息表達能力弱,無法體現更細粒度的信息。如圖 2 所示的視頻截圖,是一個穿著綠色漢服的女生在公園里跳舞。它的內容標簽是舞蹈,很難通過標簽讀取出其他信息。如果嘗試更復雜的標簽體系,比如加上場景、物體、性別等維度,可以發現很難窮舉出所有的狀況,即使做到標注成本也非常大。

圖 2
2. 很難比較信息之間的相似性,信息難以度量。如圖 3 所示的三個視頻標簽都是「狗」,很難通過標簽去辨別哪兩個視頻更相似,如果用視覺特征很容易就發現左邊的視頻與右上角的視頻更相似。當然我們可以用狗的種類和數量來計算兩幅圖之間的相似性,但是當圖片內容比較復雜,物體較多時,這種方式難以適用。

圖 3
視頻哈希算法使用視覺特征來描述視頻,它具有以下幾個特性:
1. 多樣性。特征包含更多維度的信息,信息量更多,可表達的內容是多樣的;
2. 魯棒性。如果兩個視頻比較相似,它們表達出來的特征也比較相似,提取出來的特征也應該是穩定的;
3. 距離可計算。特征之間是可以計算距離的,用距離描述兩個特征的相似性,距離越小,視頻內容越相似。
基于特征的視頻檢索技術的應用場景廣泛,如視覺相似視頻推薦,特定視頻檢索,視頻審核,視頻去重等等;此外,還可以利用提取的視頻特征進行特征聚類和內容挖掘,挖掘其中的熱點內容和發現新類。
常用特征表達方式有兩種:浮點型特征和二進制特征。
二進制特征在存儲、檢索速度兩方面有顯著優勢:使用二進制存儲,十分高效;計算距離使用漢明距離,檢索速度更快。而浮點型特征距離計算一般使用歐式距離或余弦距離,計算復雜度較高,檢索速度較慢;另外浮點特征還存在極值干擾的問題,會影響距離計算。二進制特征都是 0 和 1,特征較為穩定。基于以上情況,我們業務中采取了基于二進制形式的特征表達方式。

圖 4
視頻哈希特征的一般提取流程為:卷積神經網絡提取視頻特征,將特征映射成固定長度的浮點型特征,在浮點型特征后面接 sigmoid 層映射到 [0,1] 區間范圍內,通過閾值化量化為二進制形式。
用于提取哈希特征的網絡模型的訓練可以分為有監督和無監督兩種形式。有監督學習基于有標簽的數據進行訓練,加以特定的損失函數提升特征的表達能力。它的特點是特征表達是可控的,可以通過標簽來告訴這個網絡重點學習哪些特征;無監督學習基于無標簽數據進行訓練,通常通過圖像自身變換學習特征表達能力,所以特點就是特征表達不好控制,較難干預網絡應該學習哪種特征。無監督學習目前還處于學術研究階段,業務難以直接應用。因此,我們當前采用的方案也是基于有監督的視頻哈希算法。

圖 5
美拍視頻哈希算法流程主要分為五個模塊:標簽、數據、網絡、訓練和預測。對于每個模塊,我們都基于美拍的數據特點和業務邏輯做出了一些定制化的優化策略。下面分別介紹這五個模塊的相關工作。
美拍有上百類的標簽體系用于內容運營,涵蓋了美拍短視頻常見的內容和類別。但這些現業務標簽并不適合直接拿來做算法的訓練,主要存在以下問題:
1. 數據不均衡
圖 6 是美拍熱門視頻的標簽分布,可以看出各個類別數據量極度不均衡。而在算法訓練的時候如果有一些類別數據量比較小,那么網絡就很難學習到這些類別的特征學習表達能力。

圖 6
2. 視覺不可分
業務標簽體系沒有針對視覺特性進行劃分,造成不同類別的視頻在視覺上不可分。直接拿這種標簽進行訓練就會造成很多誤分,網絡難以學到各個類別之間的特點。

圖 7
3. 維度單一
業務標簽體系是針對最主要語義內容上的劃分,無法體現其它維度的信息。如服飾、場景、性別等維度不能通過這個標簽體系來體現。通過這個標簽體系訓練網絡無法學習到其它維度的特征表達。
針對以上三個問題我們提出了多維度多級標簽體系。「多維度」指可以根據業務需求給標簽體系增加維度;「多級」體現在它是分級的,建立第一層級時要在視覺上是可分的,如刺繡、美妝、手指舞等這些類別在視覺上都和自拍比較相似,就將這些類別在第一層級分為一個類,保證視覺可分性。
但是,多維度多級標簽體系會帶來一些新的問題。首先,海量數據都進行多維度打標,標注成本太高。其次,我們采取的模型網絡結構是級聯的方式,每個第一層級的類別都有相應的第二層級模型進行特征提取,模型數量很多,計算復雜度也會很高。為解決這兩個問題,我們在數據標注和網絡設計兩方面進行了優化。
數據方面我們采用自動標注的方法,降低標注成本。如對一批已經標注了內容標簽的視頻數據,我們需要對它進行服飾維度的打標。那么自動標注的流程是:
1. 標注少量的數據。
2. 用少量數據訓練單獨的分類器,通過調整置信度等方式使分類器的準確率在 99% 以上,即該分類器輸出結果置信度高于某閾值則結果是可信的。
3. 用這個分類器對數據進行自動標注,置信度高的部分保留它們的服飾標簽。置信度低的這部分由于不確信服飾標簽是否準確,所以服飾標簽統一記為 -1。在網絡更新的時候這部分數據只更新內容標簽的損失,不更新服飾標簽損失。
為了使視頻特征可以包含多維度的信息,訓練時采用多標簽聯合訓練的方法,減少多維度的模型復雜度。

圖 8
針對上文提到的二級模型計算復雜度高的問題,我們采用共享特征的方法進行優化。即對視頻網絡提取共享的基礎特征,共享特征先送入一級類目模型進行分類和特征提取,根據一級類目模型分類結果調用相應的二級類目模型進行特征提取。采用 MobileNet 作為基礎網絡,每個視頻提取 5 幀數據,推理兩級模型,在 Titan X 上可以到達 100 個視頻/秒的處理速度。
在網絡訓練的階段采取 Triplet loss 的方式增強特征的表達能力。Triplet loss 會拉近相似視頻之間特征的距離,拉遠不相似視頻間的距離。

圖 9
訓練 Triplet loss 的時候如何有效選取正負樣本對是一個比較關鍵的問題。我們通過提取間隔幀的方式選取正樣本視頻,假設一個視頻提取 10 幀,其中第 1、3、5、7 、9 幀作為目標視頻截幀,第 2、4、6、8、10 幀作為正樣本視頻截幀,而負樣本視頻截幀來自不同類別的其它視頻。這樣做的好處有兩點:1. 正樣本視頻與目標視頻比較相似,容易收斂;2. 無需標注,減少標注成本。
在得到特征哈希碼之后,我們通過類別掩碼的處理方式提高檢索準確率。類別掩碼的作用是隱去低貢獻度的特征位,保留重要的特征位。 
圖 10
如圖 10 所示,我們認為特征不同的位置之間存在分工。而找到重要特征的比特位置所需要的信息保存在網絡最后一層的權重參數里。

圖 11
圖 11 展示了類別掩碼的提取方法,中間部分是網絡的分類層權重參數。它的形狀等于類別個數乘以特征長度,權重的每一列都代表著相應的類別。當我們把視頻輸入到網絡里得到它的類別后就可以找出相對應的類別權重,對這列權重值取絕對值,從大到小進行排序,我們發現這些絕對值比較大的權重位置就是哈希特征中比較重要的位置。
關于類別掩碼的細節描述可參考論文《Deep Hashing with Category Mask for Fast Video Retrieval》
論文地址:https://arxiv.org/pdf/1712.08315.pdf

圖 12
圖 12 展示了網絡的整體流程。采用多標簽聯合訓練的方式,加上 Triplet loss 提升表達能力,網絡結構采用級聯模型以及共享特征的方法。最后采用類別掩碼提高檢索精度。

圖 13
圖 13 展示了該模型的準確率和檢索效果圖。其中檢索效果圖里左上角的視頻為目標視頻,其后為檢索結果。
前面提到 DeepHash 系統包含兩大模塊:算法和服務。前面以美拍視頻為例,介紹了我們視頻哈希特征提取算法。接下來我們介紹 DeepHash 系統的服務部分。
DeepHash 服務分為離線任務和在線任務。離線任務負責生成海量視頻數據的哈希碼,作為目標特征庫。具體內容包括模型訓練和特征生成兩個模塊。UGC 短視頻數據具有較強的時效性,不同時間段的視頻主題內容不同,所以業務上需要使用最新數據定期訓練并更新模型。在得到新的網絡模型之后,需要批量處理歷史視頻生成新的哈希碼,并更新到目標特征庫中。
在線任務負責實時處理檢索請求,并將相似結果返回給調用方。當一個檢索請求過來,查詢模塊會先去海量目標特征庫中查詢當前請求的視頻哈希是否存在,如果存在,則使用當前哈希碼,與目標特征庫的哈希碼計算距離,返回 top 相似結果;如果不存在,那么服務會調用預測模型,提取該視頻的哈希碼,使用該哈希碼到目標庫里檢索,同時將預測得到的哈希碼加入目標特征庫。
DeepHash 服務從最初的單庫熱門池視頻支持到最新版本能支撐全量視頻檢索,經歷了三個階段的版本迭代和優化。

圖 14
V1.0 最初版本運行在單節點上,只對于特征庫進行分片、并行查找的優化,該版本支持百萬以內的基礎特征庫檢索。
V2.0 版本支持更多形態的媒體數據的檢索,在這個版本我們接入了音頻特征提取算法。同時支持視頻和音頻兩種形式的相似檢索。為了支持多種類型的媒體特征,V2.0 進行了索引統一,對于基礎特征庫進行分組分片 (分組:分類,先定位到類別,再進行數據分片查詢),同時提高檢索穩定性。視頻截幀采用異步調用方式減少 IO 阻塞。
V3.0 是目前正在開發的版本,運行在容器化集群上,同時進行了檢索集群化的優化,目標是支持億級的海量特征基礎庫的實時檢索。

圖 15
圖 15 是檢索集群的業務邏輯分層結構。其中,代理層負責請求分發,高并發時可無狀態擴容;業務層對數據進行預處理包裝、調用數據層的檢索服務,并把結果封裝成用戶可讀的形式;數據層運行檢索算法,分片加載特征庫數據,進行并行檢索,保證檢索的時效性、穩定性。
接下來我們展示 DeepHash 系統的檢索性能。存儲性能上,使用一個 128 位的哈希碼表示一個視頻,存儲 1 億條視頻,需要的存儲空間只有不到 1.5 GB。檢索速度上,運行 8 個實例,對 100 萬的基礎特征庫進行全量視頻檢索,需要 0.35 S;使用 50 個實例,對 3 億的基礎特征庫進行全量視頻檢索,只需要 3 秒。

圖 16:DeepHash 實時搜索引擎解決方案
DeepHash 是一個通用型多媒體檢索系統,除了已經支持的視頻和音頻相似性檢索,接下來會接入更多類型的媒體數據,如增加對圖像和文本等數據的檢索支持。
目前 DeepHash 系統正在服務于推薦業務中的相似視頻檢索和運營業務中的視頻去重。接下來也會接入審核業務。

圖 17
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。