深度學習模型壓縮與加速

 

簡介

將深度學習模型應用於自動駕駛的感知任務上,模型預測結果的準確性和實時性是兩個重要指標。一方面,爲了確保準確可靠的感知結果,咱們會但願選擇多個準確性儘量高的模型並行執行,從而在完成多種感知任務的同時,提供必定的冗餘度,但這不可避免的意味着更高的計算量和資源消耗。另外一方面,爲了確保車輛在各類突發狀況下都能及時響應,咱們會要求感知模塊的執行速度必須與自動駕駛場景的車速相匹配,這就對深度學習模型的實時性提出了很高的要求。另外,在保證高準確性和高實時性的前提下,咱們還但願下降模型對計算平臺的算力、內存帶寬、功耗等方面的要求,從而提升自動駕駛系統總體的效能。爲了應對上述挑戰,咱們須要從各類角度對深度學習模型進行壓縮和加速。實際上,模型壓縮和加速是一個至關龐大且活躍的研究領域,包含衆多的研究方向。本文接下來會簡要介紹目前模型壓縮和加速領域的主要技術方向,並聚焦於模型裁剪算法這一方向進行詳細探討。在討論具體的算法以前,首先讓咱們簡要回顧一下深度學習模型的理論複雜度評價指標,以及影響模型實際運行性能的各類因素。html

1.複雜度分析

深度學習模型的複雜度主要體如今計算量、訪存量和參數量上。算法

  • 計算量:即模型完成一次前向傳播所需的浮點乘加操做數,其單位一般寫做 FLOPs (FLoating-point OPerations)。對卷積神經網絡而言,卷積操做一般是整個網絡中計算量最爲密集的部分,例如 VGG16 [1] 網絡 99% 的計算量都來自於其卷積層。假設卷積層的輸出特徵圖空間尺寸爲 H × W,輸入通道數爲 Cin,卷積核個數(輸出通道數)爲 Cout,每一個卷積核空間尺寸爲 KH × KW,那麼該卷積層的理論計算量爲 H × W × KH × KW × Cin × Cout FLOPs。能夠看到,卷積層的計算量由輸出特徵圖的大小、卷積核的大小以及輸入和輸出通道數所共同決定。對輸入特徵圖進行下采樣,或者使用更小、更少的卷積核均可以明顯下降卷積層的計算量。
  • 訪存量:即模型完成一次前向傳播過程當中發生的內存交換總量,單位是 Byte。訪存量的重要性常常會被人們忽視,實際上,模型在逐層進行前向傳播的過程當中,須要頻繁的讀寫每層的輸入特徵圖、權重矩陣和輸出特徵圖,而讀寫速度取決於計算平臺的內存帶寬。若是咱們在嘗試加速模型的時候,只關注減小模型計算量,而沒有等比例減少其訪存量,那麼依據 Roofline [2] 理論,這將致使模型在實際運行過程當中,發生單位內存交換所對應的計算量降低,模型會滑向愈來愈嚴重的內存受限狀態(即下圖中的紅色區域),從而沒法充分的利用計算平臺的算力,所以最後觀察到的實際加速比與理論計算量的減少並不成正比。

圖1:Roofline Model(圖中左側紅色區域爲帶寬受限,右側綠色區域爲算力受限)安全

  • 參數量:即模型所含權重參數的總量,單位是 Byte,表現爲模型文件的存儲體積大小。全鏈接層一般是整個網絡參數量最爲密集的部分,例如 VGG16 網絡中超過 80% 的參數都來自於最後三個全鏈接層。資源嚴重受限的移動端小型設備會對模型文件的大小較爲敏感。
  • 並行度:若是以 GPU 做爲計算平臺,那麼因爲 GPU 自己所具備的高吞吐特性,模型的並行度會成爲影響模型實際運行效率的一個重要方面。模型的並行度越高,意味着模型越可以充分利用 GPU 的算力,執行效率越高。影響並行度的因素有不少,例如模型的計算強度(計算量與訪存量的比值)、卷積算法的具體實現方式等,Batch Size 也會顯著的影響模型的並行度。

2.模型壓縮和加速的主要技術方向

深度學習模型壓縮和加速算法是一個至關龐大且活躍的研究領域,涵蓋軟件和硬件,包括衆多的技術方向,簡要歸納以下:網絡

  • 輕量網絡設計:指從新設計新型網絡結構,而不侷限於僅對現有網絡進行優化加速。輕量網絡設計方向的主要表明論文是 MobileNet v1 / v2 [3, 4] , ShuffleNet v1 / v2 [5, 6] 等,其主要思想是利用 Depthwise Convolution、Pointwise Convolution、Group Convolution 等計算量更小、更分散的卷積操做代替標準卷積。這類模型的計算量一般僅有幾十到幾百 MFLOPs,與傳統的大型網絡例如 VGG / Inception [7] / ResNet [8] 等動輒上 GFLOPs 的計算量相比有明顯優點,同時在比較簡單的任務上與大模型的準確率差距較小。

 

  • 模型裁剪:相比輕量網絡設計,模型裁剪主要關注對現有模型作減法,由大化小。其主要思想是在保持現有模型的準確率基本不變的前提下,設計某種篩選機制(稀疏化),在某個尺度上篩選掉卷積層中重要性較低的權重,從而達到下降計算資源消耗和提升實時性的效果 [12, 13, 14, 15, 16, 17]。模型裁剪算法的核心就在於權重篩選機制的設計以及篩選粒度的選擇上。這也是本文接下來會着重深刻討論的方向。

 

  • 模型蒸餾:相比於模型裁剪的目標是把大模型逐漸變小,同時保持精度損失較小,模型蒸餾的目標是利用大模型(Teacher Network)提供的監督特徵幫助計算量較小的模型(Student Network)達到近似於大模型的精度,從而實現模型加速。模型蒸餾的關鍵在於監督特徵的設計,例如使用 Soft Target 所提供的類間類似性做爲依據 [9],或使用大模型的中間層特徵圖 [10] 或 attention map [11] 做爲暗示,對小網絡進行訓練。

 

  • 矩陣分解:因爲深度學習模型中計算量最密集的部分就是卷積,而卷積能夠通過 im2col 以後用矩陣乘法實現,所以咱們可使用多種矩陣低秩近似方法 [18, 19],將兩個大矩陣的乘法操做拆解爲多個小矩陣之間的一系列乘法操做,下降總體的計算量,加速模型的執行速度。

 

  • 量化與低精度運算:深度學習模型在運行過程時須要進行大量的浮點乘加運算,通常默認數據位寬是 32bit,可是實際上咱們徹底能夠用更低的位寬(例如 16bit / 8bit / 4bit / 2bit 甚至 1bit)來量化模型的權重和特徵圖,完成近似的運算 [21, 22, 23]。這麼作一方面能夠成倍的下降模型運行時的訪存量,一方面在相應硬件指令集的支持下,能夠成倍的提升模型的運算速度。其重點在於如何控制低精度對模型帶來的精度損失。

 

  • 計算圖優化:深度學習模型的層數一般在幾十層到上百層,但實際上層與層之間有不少部分都存在固定的組合關係(例如 Conv-BatchNorm-ReLU 組合),所以咱們能夠對計算圖中的這些固定組合進行優化,分別在水平和垂直方向上將多層融合爲一層執行,從而大量減小層間沒必要要的內存拷貝以及屢次 kernel launch 帶來的開銷,有效提高模型的運行速度。

 

  • 卷積算法優化:卷積運算自己有多種算法實現方式,例如滑動窗、im2col + gemm、FFT、Winograd卷積等方式。這些卷積算法在速度上並無絕對的優劣,由於每種算法的效率都很大程度上取決於卷積運算的尺寸。所以,在優化模型時,咱們應該對模型的各個卷積層有針對性的選用效率最高的卷積算法,從而充分利用不一樣卷積算法的優點。

 

  • 硬件加速:任何模型的運行都須要依託於某種計算平臺來完成,所以咱們能夠直接從計算平臺的硬件設計方面進行加速。目前深度學習模型的主流計算平臺是 GPU,從 Volta 架構開始,GPU 配備了專門用於快速矩陣乘法運算的硬件計算單元 Tensor Core,能夠顯著提高深度學習模型的吞吐量。同時,以低功耗低延遲爲主要特性的 FPGA / ASIC 加速芯片也開始在業界嶄露頭角。

 

除此以外,在更廣義的視角下,使用多任務學習、多傳感器融合、利用多幀之間的相關性等方法經過減小模型數量和數據處理量,也能間接的下降計算資源消耗,提升實時性。整體而言,上面介紹的各類技術路線分別從不一樣的角度提高模型的運行速度、減小模型的資源消耗,可謂條條大路通羅馬。在實際應用中,這些方法相互之間一般並不矛盾,能夠相互彌補,所以咱們一般會疊加使用,使總體達到更好的效果。架構

下面讓咱們聚焦在模型裁剪算法這個研究方向上。ide

3.模型裁剪算法

廣義上的模型裁剪算法,其本質是在各類粒度下尋找更爲稀疏的模型表徵。對於模型的權重,咱們既能夠在神經元的粒度上進行裁剪(Fine Grained Pruning),也能夠在每一個卷積核的通道粒度上進行裁剪(Channel Pruning),甚至能夠直接拿掉那些咱們認爲對於模型表徵沒有太多貢獻的卷積核(Filter Pruning)。按照裁剪的粒度,咱們能夠將裁剪算法劃分爲非結構化裁剪和結構化裁剪這兩大類方式。函數

 

模型的非結構化裁剪是在神經元級別對網絡的權重進行裁剪 [12],算法的具體流程分爲三步,第一步是正常訓練網絡,第二步是人爲設定一個閾值並對全部權值低於該閾值的神經元進行裁剪,第三步是經過微調網絡來恢復損失的精度。這種裁剪方式的靈活性最高,可是會致使權重矩陣稀疏化,須要額外的稀疏矩陣運算庫或者專門設計的硬件支持 [20] 才能真正達到加速效果,在實際應用中存在必定限制。所以下面咱們主要介紹對於實現較爲友好的各類結構化裁剪算法。性能

3.1 Filter 粒度上的裁剪

論文 [13] 提出了一種在 Filter 粒度上簡單高效的模型裁剪算法。該算法的裁剪依據是卷積核的 L1Norm。對於每一個卷積層,咱們會統計每一個卷積核權重矩陣的 L1Norm,並按照 L1Norm 的取值從小到大排序,如圖2所示。而後人爲設定一個保留的比例(例如 80%),將最小的 20% 卷積核移除。做者認爲,對於一樣的輸入特徵圖,一個卷積核相比其餘卷積核是否更重要、是否有必要繼續存在於模型中,很大程度上取決於它的總體權值大小,L1Norm越大的卷積核更有可能產生響應值較大的輸出特徵圖,進而更有可能對網絡最後的輸出結果產生更大貢獻。反過來,若是一個卷積核的全部權值都很是接近於 0,那麼不管給它輸入什麼樣的特徵圖,其輸出也將都是 0,這說明該卷積覈對於整個模型的表徵能力貢獻較小,頗有多是冗餘的,所以能夠直接裁剪去除。算法的具體執行流程與上面介紹的非結構化裁剪相似,逐層執行 Filter Pruning 並搭配進行 Finetune 恢復精度,直到全部層都完成裁剪。學習

 

從計算量優化角度來分析,若是咱們對第 i 個卷積層進行 Filter Pruning,保留其中 r% 的卷積核,因爲卷積層的計算量與輸出通道數呈正比,所以該層的計算量將降爲裁剪前的 r%;同時,因爲第 (i+1) 個卷積層的輸入通道數降爲原來的 r%,所以該層的總體計算量也降爲原來的 r%,並且每一個卷積核也都得以精簡相應的輸入通道。簡而言之,對第 i 個卷積層按保留比例 r% 進行裁剪,會致使第 i 層和第 (i+1) 層的計算量都降爲以前的 r%。優化

圖2:對 VGG16 模型每一個卷積層的全部卷積核按照 L1Norm 進行排序後的取值分佈狀況。橫軸爲歸一化後的卷積核索引,縱軸爲歸一化後的卷積核權重的 L1Norm 取值。

 

3.2 Channel 粒度上的裁剪

論文 [14] 提出了一種在 Channel 粒度上的模型裁剪算法。該算法沒有依據卷積核的取值進行裁剪,而是將注意力聚焦在特徵圖的不一樣通道上,其核心思想在於分析輸入特徵圖的各個通道對輸出特徵圖的貢獻大小,並使用 LASSO 迴歸將這一問題轉變爲對輸入通道的選擇問題。做者指出,若是咱們能夠去掉輸入特徵圖的某個或多個通道,而且還可以確保該卷積層的輸出特徵圖基本不變,那麼這就意味着那些去掉的輸入通道自己對於輸出特徵圖的貢獻很小,能夠安全去除而不影響網絡的精度。

圖3:Channel Pruning 示意圖,左側爲輸入特徵圖,中間爲卷積核,右側爲輸出特徵圖,虛線表示裁剪。

 

整個裁剪算法主要分爲兩步,能夠參考圖3所示。

第一步:通道選擇。如上圖所示,假設該卷積層的輸入特徵圖具備 4 個通道,3 個卷積核,每一個輸入通道定義一個權重係數 beta_i。爲了獲取輸入特徵圖與輸出特徵圖的原始對應關係,咱們須要對輸入特徵圖按照卷積核的感覺野進行屢次隨機採樣,得到矩陣 X,並根據權重矩陣 W 得到相應的輸出特徵點集合 Y,構造優化方程,這裏咱們對 beta 進行優化,目標是最小化原輸出特徵點與通過 beta 權重係數獲得的輸出特徵點之間的偏差,添加 L1 正則項,經過調整 lambda 能夠調整 beta 中置零項的個數,lambda 越大,意味着咱們裁剪的輸入通道數越多。

[公式] LaTeX

第二步:最小化重建偏差。在完成 beta 權重係數的選擇後(如上圖所示,輸入特徵圖中的紅色通道被移除,與此同時,全部卷積核的紅色輸入通道也被移除),咱們能夠進一步對卷積核的權重矩陣 W' 進行優化,目的是經過調整 W',讓裁剪後的輸入特徵圖通過卷積後與輸出特徵圖的偏差儘量小。這步操做可以有效的恢復裁剪後模型的精度,減少後期微調訓練的工做量。

[公式] 代碼塊LaTeX

咱們評價模型裁剪算法一般會關注兩個指標,一個是裁剪後模型的準確率損失是多少,一個是裁剪先後模型在相同計算平臺上的實際運行速度提高是多少,前者反映了算法所使用裁剪依據的合理性,後者反映了算法的實際有效性。

針對第一個指標,表1給出了多種模型加速算法針對同一個模型(VGG16)分別將計算量進行 50% 裁剪(2x)、75% 裁剪(4x)、80% 裁剪(5x)狀況下在 ImageNet 數據集上的 Top5 準確率損失數據。能夠看到,Filter Pruning 在裁剪 75% / 80% 計算量的狀況下,致使模型的精度分別降低 7.9% 和 22%,而一樣裁剪比的 Channel Pruning 對模型的精度損失僅有 1% 和 1.7%,裁剪質量提高十分明顯。

圖4:不一樣裁剪算法在一樣減小 VGG16 模型 2倍、4倍、5倍計算量的條件下,在 ImageNet 數據集上 Top5 Accuracy 的降低狀況,數值越小越好。

 

針對第二個指標,表2給出了Channel Pruning與其餘基於矩陣低秩近似算法在相同裁剪比的實際加速效果對比。能夠看到,一樣是裁剪掉 75% 的計算量,通過各類矩陣低秩近似算法變換後的模型因爲並行度降低,幾乎沒有加速效果,甚至有些運行速度比以前更慢;相比之下,採用結構化裁剪的 Channel Pruning 算法可以達到 2.5 倍的加速,同時精度損失只有 1%。

圖5:不一樣裁剪算法在一樣減小 VGG16 模型 4 倍計算量的條件下,在 Titan X 上實測的準確率損失和每張圖片預測耗時狀況,數值越小越好。

 

在兩種粒度上進行裁剪的異同點

  • 若是咱們從裁剪的實際操做上來看,Filter Pruning 與 Channel Pruning 是徹底等效的。Filter Pruning 的操做是:移除第 i 層的部分卷積核,同時移除第 i+1 層全部卷積核的相應通道。Channel Pruning 的操做是:移除第 i + 1 層全部卷積核的某些通道,同時移除第 i 層的產生這些通道的卷積核。兩種方式僅僅順序不一樣,但最終表現出來的裁剪操做是相同的。
  • 可是若是咱們從裁剪的依據上來看,二者是徹底不一樣的。Filter Pruning 僅關注權重的取值,不須要數據驅動。而 Channel Pruning 會首先逐層灌入數據,得到輸入和輸出特徵圖,而後綜合考慮輸入特徵圖通過權重矩陣後對輸出特徵圖的貢獻,再將其中部分通道裁剪。後者的數據驅動方式使其能夠得到更好的裁剪質量。

3.3 邊訓練邊學習裁剪

上面介紹的 Channel Pruning 方法主要適用於已經完成訓練的模型,那麼咱們是否可以在模型的最初訓練階段就爲 Channel Pruning 作好準備呢?答案是確定的。論文 [15, 16] 提出對模型每一個卷積層的各個輸入通道分配權重係數 gamma,而後將這些權重係數做爲 L1 正則項加入損失函數,從而實如今模型訓練階段同時對常規模型權重和各通道權重進行優化,如圖6所示。這種裁剪機制的好處在於,當完成模型訓練後,咱們不只獲得了可用的模型,還同時獲得了模型各層權重在通道尺度上的重要性分佈,所以咱們就能夠經過設置閾值來快速完成全部卷積層的通道裁剪操做,最後 Finetune 恢復精度。

圖6:對卷積層的每一個通道設置縮放係數,在訓練過程當中對各個通道進行稀疏約束。

[公式]

在具體實現上,卷積層各個通道重要性係數的學習,並非經過在每一個卷積層以後添加 Scaling layer 來進行的,由於卷積與縮放操做都屬於線性變換,連在一塊兒總體依然是一個線性變換,若是僅對Scaling層進行L1正則,可能會致使卷積層權重出現負補償,並不能有效的對卷積層的各個通道進行稀疏約束。所以論文中使用的方法是,在每一個卷積層以後添加 BN 層,而後對 BN 層的 Scaling Factor gamma 施加 L1 正則。咱們知道 Batch Norm 會首先對輸入特徵圖的每一個通道按照當前batch的均值和方差進行歸一化,再經過縮放與平移輸出。爲了強制使 BN 的 gamma 取值儘量稀疏,咱們能夠在 Loss 中添加 gamma 的 L1 Norm 做爲懲罰項,修改 BN 層的反向傳播過程,其餘部分正常訓練便可。實際上,不少網絡中(例如 ResNet)已經默認將卷積與BN搭配使用,所以對於這些網絡而言,甚至網絡結構都不須要改變,就能夠直接使用這種裁剪算法邊訓練、邊學習通道裁剪係數,十分方便。

3.4 基於強化學習的自動化裁剪

上面介紹的裁剪算法,不論裁剪粒度是通道仍是卷積核,不論裁剪依據是來自於權重仍是特徵圖,都有一個共性,就是須要基於經驗選擇各層的裁剪閾值比例和迭代輪數,整個模型裁剪過程當中不可避免的須要大量人工干預。這帶來兩個方面的問題,一個是效率,一個是質量。一方面咱們但願模型裁剪的過程可以像模型訓練同樣全自動高效完成,另外一方面,基於人工經驗的裁剪方案每每在實際中很難達到最優解,咱們但願可以讓模型裁剪算法生成更高質量的方案。所以,論文 [17] 提出了一種基於強化學習的自動化模型裁剪算法 AMC。該方法不只能夠自動化執行,並且與使用相同裁剪算法的人工裁剪方案相比,這種方法最後生成的總體模型裁剪方案的精度損失更低。

圖7:Overview of AutoML for Model Compression (AMC) Engine.

 

該算法採用基於 DDPG 的 Agent,對模型的各個卷積層進行逐層裁剪。對於每一層,Agent 首先會得到描述該層以及相鄰層計算特性的狀態空間向量(包括卷積的尺寸、計算量等信息),Actor 根據該狀態和本身的策略網絡生成相應的裁剪比(即行爲),而後調用裁剪算法完成相應的裁剪操做。當整個網絡都完成一次裁剪後,就能夠計算出裁剪先後引入的精度損失,而後經過預約義的獎勵函數將獎勵值返回給 Agent, Critic 會根據狀態和獎勵更新本身的價值網絡,通過屢次迭代不斷更新策略網絡和價值網絡,完成 Exploration-Exploitation 的過程,得到最後的裁剪模型,而後對這個模型進行 Finetune,得到最終的模型。論文提出了獎勵函數的兩種設計方案,一種是經過限定搜索空間,搜索在指定裁剪範圍內精度損失最小的模型裁剪方案。另外一種則是將模型計算量、參數量、預測耗時等指標直接引入到獎勵函數,在保持精度不變的前提下,搜索讓這些指標儘量小的裁剪方案。針對 VGG16 的裁剪實驗結果顯示,在一樣精簡 80% 計算量的狀況下,採用 AMC 裁剪方法不只能夠自動完成,並且最終模型的精度損失比其餘人工裁剪方案的精度損失更低,在 ImageNet 上的 Top1 準確率降低僅有 1.4%。

圖8:AMC 與其餘裁剪算法在計算量減小量和準確率損失上的對比。

 

4. 小結

本文回顧了模型加速領域中模型裁剪方向上的幾種比較成功的裁剪算法。經過上面的介紹,咱們能夠看到,模型裁剪算法的核心思想是在各類粒度下尋找更爲稀疏的模型表徵,去除模型的冗餘部分。須要注意的是,模型中的「冗餘部分」始終是一個相對的概念,它與模型自己的結構以及模型所處理的任務難度有密切關係。模型體積越大、層數越深、所面對的任務越簡單,也就意味着模型的相對冗餘度越高,可使用更大比例進行裁剪而不明顯影響精度。但同時咱們也須要認識到,從目前的模型裁剪算法來看,在保持精度損失較小的前提下,全部裁剪算法都存在必定的裁剪上限,一旦超過上限,再進一步裁剪都會不可避免的損傷模型的精度,即使 finetune 也沒法恢復。所以,如何可以更爲精準的對模型進行裁剪而不損失精度,而且同時保證明際運行的加速比,是模型裁剪方向的將來研究重點,讓咱們拭目以待。

5. 參考文獻

1. Karen Simonyan and Andrew Zisserman. "Very deep convolutional networks for large-scale image recognition". The International Conference on Learning Representations (ICLR). 2015.

2. Samuel Williams, Andrew Waterman, and David Patterson. "Roofline: An insightful visual performance model for multicore architectures". Communications of The ACM, Vol.52. 2009.

3. Andrew G. Howard, et al. "MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications". arXiv preprint arXiv:1704.04861. 2017.

4. Mark Sandler, et al. "MobileNetV2: Inverted Residuals and Linear Bottlenecks". arXiv preprint arXiv:1801.04381. 2018.

5. Xiangyu Zhang, et al. "ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices". IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2018.

6. Ningning Ma, et al. "ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design". European Conference on Computer Vision (ECCV). 2018.

7. S. Ioffe and C. Szegedy. "Batch normalization: Accelerating deep network training by reducing internal covariate shift". arXiv preprint arXiv:1502.03167. 2015.

8. Kaiming He, et al. "Deep residual learning for image recognition". IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2016.

9. Geoffrey Hinton, Oriol Vinyals, and Jeff Dean. "Distilling the Knowledge in a Neural Network". Conference and Workshop on Neural Information Processing Systems (NIPS) Workshop. 2014.

10. Adriana Romero, et al. "FitNets: Hints for thin deep nets". The International Conference on Learning Representations (ICLR). 2015.

11. Sergey Zagoruyko, Nikos Komodakis. "Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer". The International Conference on Learning Representations (ICLR). 2017.

12. Han Song, et al. "Learning both weights and connections for efficient neural network". Advances in Neural Information Processing Systems (NIPS). 2015.

13. Hao Li, et al. "Pruning filters for efficient convnets". The International Conference on Learning Representations (ICLR). 2017.

14. He Yihui, Zhang Xiangyu, and Sun Jian. "Channel pruning for accelerating very deep neural networks". Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017.

15. Zhuang Liu, et al. "Learning efficient convolutional networks through network slimming". IEEE International Conference on Computer Vision (ICCV). 2017.

16. Jianbo Ye, et al. "Rethinking the Smaller-Norm-Less-Informative Assumption in Channel Pruning of Convolution Layers". The International Conference on Learning Representations (ICLR). 2018.

17. He Yihui, et al. "AMC: AutoML for Model Compression and Acceleration on Mobile Devices". European Conference on Computer Vision (ECCV). 2018.

18. Max Jaderberg, Andrea Vedaldi and Andrew Zisserman. "Speeding up convolutional neural networks with low rank expansions". arXiv preprint arXiv:1405.3866. 2014.

19. Zhang Xiangyu, et al. "Accelerating very deep convolutional networks for classification and detection". IEEE transactions on pattern analysis and machine intelligence, 38(10):1943–1955. 2016.

20. Han Song, et al. "EIE: Efficient Inference Engine on Compressed Deep Neural Network". arXiv preprint arXiv:1602.01528. 2016.

21. Matthieu Courbariaux, Yoshua Bengio, and Jean-Pierre David. "BinaryConnect: Training Deep Neural Networks with binary weights during propagations". arXiv preprint arXiv:1511.00363. 2015.

22. Mohammad Rastegari, et al. "XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks". European Conference on Computer Vision (ECCV). 2016.

23. Itay Hubara, et al. "Quantized Neural Networks: Training Neural Networks with Low Precision Weights and Activations". arXiv preprint arXiv:1609.07061. 2016.

24. 模型加速概述與模型裁剪算法技術解析(美團無人配送算法團隊)

25. https://www.zhihu.com/search?type=content&q=%E6%A8%A1%E5%9E%8B%E5%8E%8B%E7%BC%A9

26. 《解析卷積神經網絡》關於第四章卷積神經網絡的壓縮

27. 深度學習模型壓縮與加速綜述

28. 當前深度神經網絡模型壓縮和加速都有哪些方法?

相關文章
相關標籤/搜索