TVN算法詳解

Tiny Video Networks-論文鏈接

1、需求解讀

  隨着大數據和5G技術的發展,我們的生活已經開始從原始的圖片時代逐漸轉向視頻時代,代表性的一個企業就是今日頭條,它通過小視頻分析和推薦獲得了大衆的歡欣。除此之外,隨着視頻數據的獲取變得更加便捷,學者們逐漸將一些基於圖片的圖像處理算法應用在視頻中,具體包括視頻目標分類、視頻目標檢測、視頻目標跟蹤和視頻語義分割等。大量的研究結果表明,當前最快的視頻處理算法在一個高配的GPU上處理一幀圖像需要的運行時間大於500ms,然而這些視頻算法通常應用在嵌入端的設備,比如視頻監控、行爲識別和機器感知等,這些設備的運算能力是GPU的1/幾十,因而設計出一個針對視頻理解場景的高速網絡稱爲一個迫切的需求。

2、TVN算法貢獻

  • 本文是第一個針對視頻理解場景設計出來的高速視頻網絡,在CPU和GPU上面均獲得了實時的運行速度
  • 嘗試着使用NAS來解決輕量型視頻網絡的搜索問題,最終獲得了一個準確、高速的視頻網絡;
  • 通過調節該模型的可以在獲得state-of-art性能的同時獲得最快的速度。

3、TVN算法簡介

  TVN算法是一個基於NAS自動學習的視頻Backone網絡。該網絡是第一個即準又快的視頻理解算法,整個算法是通過NAS自動搜索獲得,並在4個數據集上面獲得了較好的結果。與其它的視頻模型相比,該模型不僅擁有更少的參數,而且比它們快幾百倍。該模型的出現使得在手機設備和機器人應用上面部署視頻模型成爲了可能。

4、TVN算法詳解

4.1 NAS簡介

  NAS,即Neural Architecture Search(神經網絡架構搜索)。NAS要解決的一個問題就是徹底解放設計網絡的算法工程師,大家可能都知道比較有名的VGG、Inception、ResNet網絡都是研究者們通過大量的探索和觀察之後設計出來的網絡架構,然而設計出一個好的網絡架構需要耗費大量的人力和物力,因此,就有研究者開始思考是否能讓程序自動的搜索出一個不錯的網絡架構,這也就是NAS出現的初衷。其實仔細想一想,對於一個網絡而言,我們需要確定的因素包括:網絡的層數、網絡的輸入分辨率大小、每層網絡的類型、卷積核和步長的大小等參數,但是這些參數是一個有限值,那麼這種重複、無聊、需要經驗的活就可以讓計算機來做,其實計算機存在的一個理由就是可以做一些我們不想做或者我們不能做的事情,那麼計算機就可以通過NAS在很短的時間內找到一個最優的網絡架構來滿足的要求,由於參數較多,組合起來構成的搜索空間會比較大,我們通常需要添加一些約束條件來加速整個網絡構架的搜索過程,常用的約束包括時延、準確率等。
  對於任意一個NAS任務而言,通常是由幾個關鍵的因素所決定的,具體包括:搜索空間、搜索策略和性能評估策略

  • 搜索空間,即Search Space,它解決了NAS在哪個範圍內尋找最優解的問題。搜索空間定義了搜索的範圍,其實就是在哪搜索。通過結合一些過去研究者架構設計方面的經驗,可以通過減小搜索空間和簡化搜索過程來提高搜索的性能。當然,這樣同時也引入了人爲的主觀臆斷,可能會妨礙尋找到超越當前人類知識的新的架構構建塊(building blocks)。
  • 搜索策略,即Search strategy,它解決了NAS通過哪種方法來尋找最優解的問題。搜索策略定義的則怎樣去搜索。一方面,我們希望能快速找到性能良好的架構,另一方面,也應避免過早收斂到次優架構(suboptimal architeture)區域。
  • 性能評估策略,即Performace estimation strategy,它解決了NAS如何判斷自己搜索出來的網絡架構的優劣問題。NAS 的目標是希望能夠自動的在給定的數據集上找到一個高性能的架構。性能評估則是指評估此性能的過程:最簡單的方式是按照通常的方式對一個標準架構訓練和驗證來獲得結果,但遺憾的是這樣的計算成本太高了,並且同時限制了可以搜索的網絡架構的數量。因此,最近的許多研究都集中在探索新的方法來降低這些性能評估的成本。

4.2 TVN搜索空間詳解

  • 問題1-如何在TVN網絡中搜索到最好的輸入分辨率(輸入圖片)大小和時間分辨率(幀數)呢?
  • 問題2-如何在空間和時間信息上面執行下采樣?
  • 問題3-將運行時間作爲限制條件,多少個網絡層能夠獲得最優的性能?
  • 問題4-網絡應該設置爲多深和多寬呢?

  針對以上的4個問題,作者給出的解決方案如下所示:
  首先,整個搜索空間由一個包含多個Block的meta-architecture組成,Block的範圍在2到10之間。即整個TVN網絡由很多個不同的Blo-ck塊組成,每個Block可能會重複2到10次;網絡中最終的一個Block塊包含一個全局平均池化層、一個Dropout層、一個用來執行分類放的FC層,具體的結構如下圖所示。對於每一個Block而言,可以在 non-local layers(NL)、spatial-convolution(SC)、temporal-convolution(TC)、context -gating(CG)和squeeze-and-excitation(SE)層中隨機選擇。
在這裏插入圖片描述
  然後,對於NL層而言,我們使用NAS搜索其bottleneck size(即池化之後的大小);對於SG層而言,我們使用NAS搜索其壓縮的比例;卷積層的kelnel_size和strides在1-8的範圍內搜索;濾波器的個數在32-2048的範圍內搜索;卷積層的類型在標準卷積、depthwise卷積、平均池化和最大池化中進行搜索;每一個Block的重複次數在1-8之內搜索;輸入圖片的大小在32x32-320x320的空間內搜索;幀的個數在1-128的範圍內搜索;幀率在1-25fps範圍內搜索
  最後,通過將上面的這些搜索條件進行組合,我們最終會獲得一個很大的搜索空間。每一個Block塊具有2^34種可能的配置,在這麼大的一個搜索空間中尋找到最優的一個網絡架構無疑是一個比較困難的問題,當對網絡的大小和運行時間限制之後,整個問題變得更加困難。

4.3 TVN搜索策略詳解

  整個搜索過程中使用帶有離散交叉操作的旅行選擇進化算法
(tournament selection evolutionary algorithm with discrete mutation operators),整個算法的執行過程如下所示:

  • 首先隨機的生成200個性能較差網絡
  • 接着按照旅行選擇進化算法從目前的200個網絡中隨機選擇出50個,並將性能最高的網絡作爲父網絡
  • 接着通過隨機更改網絡的一部分,即對該網絡執行離散變異操作。所謂的交叉操作即隨機的選擇一些網絡並在提前定義的搜索空間隨機的交換它們
  • 接着將進化後的新網絡添加到整個種羣中並移除種羣中性能最差的網絡
  • 重複執行整個過程100次,每個模型使用1.5個小時訓練10000次迭代
    在這裏插入圖片描述
    在這裏插入圖片描述
      上圖展示了通過NAS最終搜索到的TVN-1、TVN-2、TVN-3和TVN-4網絡的實現細節,有了這些配置之後,我們就可以構造出相應的網絡,然後使用數據集訓練出一個模型,並將模型部署到不同的設備上面。

5、TVN算法實現步驟

整個TVN算法的實現步驟如下所示:
步驟1-首先根據上面的條件定義相應的搜索空間
步驟2-然後添加相應的限制條件,包括模型大小和運行時間,並使用進化算法(遺傳算法)來執行NAS操作;
步驟3-在驗證集(從訓練集中劃分出一部分)中驗證NAS搜索出來的網絡的性能,當獲得滿足限制條件的網絡架構時停止整個搜索過程;
步驟4-使用代碼搭建出使用NAS獲得最優的網絡,並設置相應的參數,然後使用梯度下降法來訓練整個網絡,最終獲得一個預訓練的模型;
步驟5-將預訓練好的TVN網絡部署到手機或者機器人設備中執行前向推理,獲得相應的結果。

6、TVN算法性能評估

在這裏插入圖片描述
  上圖展示了TVN網絡和其它的Backbone網絡之間的速度差異。通過觀察,我們可以獲得TVN1網絡在CPU上的運行時間是37ms,在GPU上面的運行時間爲10ms,和ResNet相比,TVN的運行速度提升了100倍左右。該算法的出現可以在很大程度上推進實時視頻理解算法的發展。
在這裏插入圖片描述
  上圖展示了TVN網絡和其它網絡在MiT數據集上面的效果,包括運行時間和準確率。上圖的橫軸表示運行時間,縱軸表示模型的準確率。通過觀察我們可以發現,TVN4幾乎可以獲得和ResNet相同的精度,但是模型大小卻比ResNet小了很多倍;因而TVN網絡在速度和精度之間做了很好的折中,ResNet50的精度其實可以滿足現實中很多視頻場景的需求,當前如果你想要獲得更高的精度,還可以對TVN網絡進行一些改進即可。
在這裏插入圖片描述
  上圖是TVN網絡和其它Backbone的比對結果的另外一種展示形式。
在這裏插入圖片描述
  上圖展示了使用不同時間信息(幀數的大小)的TVN網絡的運行時間和準確率。通過觀察我們可以發現,當幀數等於16時,TVN-2網絡的準確率基本沒有提升,運行的時間卻增加額不少,而當幀數等於4時,不僅能獲得最快的運行速度,而且可以獲得較高的準確率。
在這裏插入圖片描述
  上圖展示了不同大小的輸入分辨率對TVN-1網絡的性能影響。通過觀察我們可以發現:1、增加輸入圖片的分辨率可以在一定程度上提升網絡的準確率,在此同時也會增加網絡的運行時間;2、當使用更寬的網絡時,可以獲得更高的準確率,同時會極大的增加網絡的運行時間;3、當使用更深的網絡時,可以獲得更高的準確率,同時會極大的增加網絡的運行時間。

7、總結

  TVN算法開創了使用NAS搜索輕量級視頻理解網絡的先河(即快又準),並且取得了很好的結果。該算法解決了當前視頻理解任務中的難題,即算法的運行速度都比較慢不能應用到常用的嵌入式設備或者機器人設備中。儘管基於NAS的TVN網絡獲得了較高的性能,但是該網絡中也存在着一些問題,比如使用NAS搜索的過程需要耗費大量的時間和計算資源等。隨着TVN算法的開源,我相信會有越來越多更輕量的視頻理解算法的出現,不僅僅是視頻分類。

參考資料

[1] 原始論文

注意事項

[1] 該博客是本人原創博客,如果您對該博客感興趣,想要轉載該博客,請與我聯繫(qq郵箱:[email protected]),我會在第一時間回覆大家,謝謝大家的關注.
[2] 由於個人能力有限,該博客可能存在很多的問題,希望大家能夠提出改進意見。
[3] 如果您在閱讀本博客時遇到不理解的地方,希望您可以聯繫我,我會及時的回覆您,和您交流想法和意見,謝謝。
[4] 本人業餘時間承接各種本科畢設設計和各種小項目,包括圖像處理(數據挖掘、機器學習、深度學習等)、matlab仿真、python算法及仿真等,有需要的請加QQ:1575262785詳聊,備註“項目”!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章