超越YOLOv4-tiny!YOLObile:移動設備上的實時目標檢測

2020-09-29     將門

原標題:超越YOLOv4-tiny!YOLObile:移動設備上的實時目標檢測

From: AI深度學習視線

目標檢測技術的快速發展和廣泛應用引起了對目標檢測器的準確性和速度的關注。但是,當前的最新目標檢測工作存在高延遲或者準確性不足的問

為了解決這一問題,作者及其團隊提出了YOLObile框架,通過壓縮編譯協同設計在移動設備上進行實時目標檢測,在三星S20上速度可達17FPS!比YOLOv4快5倍!同時mAP和FPS均優於YOLOv4-tiny!

一定要看到最後!文末有福利!

一、摘要

目標檢測技術的快速發展和廣泛應用引起了對目標檢測器的準確性和速度的關注。但是,當前的最新目標檢測工作要麼使用大型模型以準確性為導向,但導致高延遲,或者使用輕量級模型以速度為導向,但犧牲準確性。

在這項工作中,研究團隊提出了YOLObile框架,該框架是通過壓縮編譯協同設計在移動設備上進行實時目標檢測的。針對任何內核大小,提出了一種新穎的block-punched剪枝方案。為了提高移動設備上的計算效率,採用了GPU-CPU協作方案以及高級的編譯器輔助優化

實驗結果表明,他們的剪枝方案以49.0 mAP達到YOLOv4壓縮率的 14倍。在其YOLObile框架下,在Samsung Galaxy S20上使用GPU實現了17 FPS推理速度。通過合併其提出的GPU-CPU協作方案,推理速度提高到19.1 FPS,並且比原始YOLOv4高出 5倍

二、本文思路

2.1 DNN Model Pruning

  • 非結構化剪枝

非結構化修剪允許對權值矩陣中任意位置的權值進行修剪,保證了搜索優化修剪結構的更高靈活性,如圖1(a)所示。因此,通常壓縮率高,精度損失小。但是,非結構化的剪枝會導致權值矩陣的不規則稀疏性,在計算過程中需要額外的索引來定位非零權值。這使得底層系統(例如,移動平台上的gpu)提供的硬體並行性得不到充分利用。因此,非結構化修剪不適用於DNN推理加速,甚至可以觀察到速度的下降

  • 結構化剪枝

結構化剪枝對DNN權重的整個通道/過濾器進行剪枝。如圖1 (b)所示,過濾器修剪刪除了權值矩陣的整行,其中通道修剪刪除了權值矩陣中對應通道的連續列。結構化修剪保持了降維權值矩陣的規則形狀。因此,它是硬體友好的,可以利用硬體並行性來加速。然而,由於結構化剪枝的粗粒度特徵,其準確性會受到很大的影響。

  • 基於模式的剪枝

基於模式的剪枝被認為是一種細粒度結構的剪枝方案。由於其適當的結構靈活性和結構規律性,同時保持了精度和硬體性能。基於模式的剪枝包括核模式剪枝和連通性剪枝兩部分。核模式修剪在每個卷積核中刪除固定數量的權值,如圖2所示。

2.2 Motivation

如上所述,最先進的目標檢測工作要麼是精度導向使用大模型大小或速度導向使用輕量級模型但犧牲精度。因此,它們都很難同時滿足實際應用在移動設備上的準確性和延時要求。

因此,我們需要 一種在移動設備上既能實現高精度又能實現低延遲的解決方案。而基於模式的修剪似乎是一個理想的選擇,因為它在執行效率和準確性之間取得了平衡。但它只適用於3×3的CONV層,不利於目標檢測任務的有效性。圖3給出了3×3卷積層與非3×3層的對比。研究團隊選擇了 4種有代表性的目標檢測方法,並比較了它們的權重和計算方法的百分比。例如,在YOLOv4中,一個代表最先進的目標檢測網絡,相當多的權重和計算量(分別為17%和19%)是由非3×3 CONV層貢獻的。

編譯器輔助的DNN推理加速是移動設備上低延遲DNN推理的另一個有吸引力的選擇。實驗證明,藉助編譯器優化,可以實現圖像分類任務的低延遲DNN推理。然而,這樣的加速仍然不足以滿足目標檢測任務所需的低延遲,因為它有大量的權重,需要更複雜的計算。為此,他們提出了兩個關鍵的設計目標:

•目標1:我們需要一個剪枝方案,可以:

(i) 同時實現高精度和利用底層硬體並行性

(ii) 廣泛應用於不同類型的層。

•目標2:我們需要一種 更高效的計算方法來進一步加快目標檢測任務的DNN推理速度。

三、具體實現

3.1 Block-Punched Pruning

為了實現第3節中的第一個目標,研究團隊提出了一種新的剪枝方案——block-punched剪枝,它在保持高精度的同時實現了高硬體並行性。除了3×3 CONV層外,還可以映射到其他類型的DNN層,如1×1 CONV層和FC層。尤其適用於資源有限的移動設備上的高效DNN推理。如圖4所示,將某一層的整個DNN權值劃分為若干等大小的塊,每個塊包含來自m個連續濾波器的n個連續信道的權值。在每個塊中,他們 在所有過濾器的相同位置上修剪一組權值,同時在所有通道的相同位置上修剪權值。換句話說,被修剪的權重將穿透一個塊內所有過濾器和通道的相同位置。請注意,每個塊中經過修剪的權重的數量是靈活的,並且可以在不同的塊之間有所不同。

從精度的角度來看,受基於模式的剪枝的啟發,研究人員在block-punched剪枝中採用了一種細粒度的結構化剪枝策略,以增加結構的靈活性,減少精度的損失。從硬體性能的角度來看,與粗粒度結構修剪相比,他們的塊打孔修剪方案通過利用適當的塊大小和編譯器級代碼生成的幫助,能夠實現高硬體並行性。原因是通常DNN層中的權重數非常大。即使將權重劃分為塊,每個塊所需的計算量仍然足以飽和硬體計算資源,並實現高度並行,特別是在資源有限的移動設備上。

此外,他們的修剪方案可以從內存和計算兩個角度更好地利用硬體並行性。首先,在卷積計算中,所有的濾波器在每一層共享相同的輸入。由於在每個塊中的所有過濾器中刪除了相同的位置,因此這些過濾器將跳過讀取相同的輸入數據,從而減輕處理這些過濾器的線程之間的內存壓力。其次,限制在一個塊內刪除相同位置的通道,保證了所有這些通道共享相同的計算模式(索引),從而消除了處理每個塊內通道的線程之間的計算髮散。

在他們的block-punched剪枝,塊大小影響精度和硬體加速。一方面,更小的塊大小提供了更高的結構靈活性,因為它的粒度更細,通常可以獲得更高的精度,但代價是降低速度。另一方面,更大的塊大小可以更好地利用硬體並行性來實現更高的加速度,但也可能造成更嚴重的精度損失。

為了確定適當的塊大小,研究團隊 首先通過考慮設備的計算資源來確定每個塊中包含的通道數。例如,他們為每個塊使用與智慧型手機上移動CPU/GPU中的向量寄存器長度相同的通道數來實現高並行性。如果每個塊中包含的信道數小於向量寄存器的長度,則向量寄存器和向量計算單元都將得不到充分利用。相反的,增加信道的數量並不會提高性能,反而會導致更嚴重的精度下降。因此,每個塊中包含的濾波器的數量應該相應地確定,考慮到精度和硬體加速之間的權衡。

通過推理速度可以推導出硬體加速度,不需要對DNN模型進行再訓練就可以得到硬體加速度,與模型精度相比更容易推導。因此,設定合理的最小推理速度要求作為需要滿足的設計目標。在塊大小滿足推理速度目標的情況下,他們選擇在每個塊中保留最小的濾波器數量,以減少精度損失

3.2 Reweighted Regularization Pruning Algorithm

在以前的權重修剪算法中,使用諸如組套索正則化或乘數交替方向方法(ADMM)被主要採用。但是,這會導致潛在的精度損失或需要手動壓縮速率調整。

因此,們採用重新加權的方法。基本思想是系統地動態調整處罰。更具體地說,重加權方法減少了對較大量級的權重的懲罰(可能是更關鍵的權重),並增加了對較小量級的權重的懲罰。

設W i∈R_M×N×K_h×K_w表示CNN的第i個CONV層的4-D權重張量,其中M是濾波器的數量;N是輸入通道數;K_w和K_h是第i層的寬度和高度核心。一般的加權加權修剪問題表示為:

在分塊修剪中,每個W i分為K個塊,因此,正則項為:

修剪過程始於預訓練的DNN模型。通過使用重新加權的正則化修剪算法進行另一個訓練過程,可以獲得具有他們的block-punched約束的修剪模型。

3.3 Mobile Acceleration with a Mobile GPU-CPU Collaborative Scheme

在他們的框架中,研究團隊結合了GPU-CPU協同計算方案來優化DNNs中的兩種分支結構,即

(1) 具有CONV層的分支結構

(2) 具有非CONV操作的分支結構。

這兩種分支結構的示例如圖5 (a)和(b)所示。他們根據部署前的速度進行脫機設備選擇。

我們知道,GPU適合高並行性計算,比如卷積計算,在速度上明顯優於CPU。因此,對於具有CONV層的分支結構,如YOLOv4中的Cross Stage Partial (CSP)塊,如圖5(a),選擇GPU來計算最耗時的分支,剩下的問題是確定其他分支是使用CPU並發計算還是仍然使用GPU順序計算。

在圖5(a)中,將分支1和分支2的GPU計算時間命名為t_g1、t_g2,CPU計算時間命名為t_c1、t_c2,數據複製時間命名為他們在GPU中執行最耗時的分支1,然後對分支2進行決策。當使用CPU進行並行計算時,也可以需要添加數據複製時間。期望的GPU-CPU並行計算時間T_par取決於分支1和分支2的最大時間開銷:

僅gpu串行計算時間T_ser為兩個支路計算時間T_g1 + T_g2的總和:

以YOLOv4中最終輸出的三個YOLO頭結構為例,如圖5(b)所示,在每個分支中對最後一個CONV層的輸出進行轉置和重新排列後,我們仍然需要進行多次非CONV操作才能得到最終的輸出。研究團隊測量每個分支中非conv操作的GPU和CPU總執行時間,分別表示為t_g0, t_g1, t g2和t_c0, t_c1, t_c2。T_total表示所有三個分支的總計算時間。

對於這三個分支,現在有8種可能的設備選擇組合。例如,如果前兩個分支使用CPU,第三個分支使用GPU,總的計算時間將是

請注意,最終輸出遲早必須移至CPU,因此不將數據複製時間計入總計算時間。結果,研究人員選擇總計算時間最少的組合作為所需的計算方案。綜上所述,他們提出的GPU-CPU協作方案可以有效提高硬體利用率並提高DNN推理速度。

3.4 Compiler-assisted Acceleration

YOLObile依靠幾種先進的編譯器輔助優化,這些優化由研究團隊新設計的塊打孔修剪啟用,以進一步提高推理性能。由於篇幅所限,在這裡簡要總結一下。

首先,YOLObile通過利用修剪信息來緊湊地存儲模型權重,與眾所周知的「壓縮稀疏行」格式相比,修剪信息可以進一步壓縮索引數組。

其次,YOLObile對塊進行重新排序以提高內存和計算規則性,並消除不必要的內存訪問。

此外,YOLObile採用高度並行的自動調整模型來查找最佳執行配置參數。

YOLObile為每一層生成CPU和GPU代碼,並在實際推理過程中根據他們的GPU-CPU協作方案調用正確的代碼。

四、代碼實操

4.1 Ablation Study

4.2 Evaluation of YOLObile framework

明天就要放假了!

難得一遇的八天長假,你們都安排好了嗎?

沒安排也沒關係,我「門」幫你安排!

10月2日起至10月8日,

我們將以「每日海報的形式

國慶在家也要好好學鴨!

福利來啦!

【活動方式】

10月2日-10月8日期間,轉發任意當天海報至朋友圈並集贊 30個發送截圖到【將門創投】公眾號後台。我們將抽取5幸運的同學,每人送出將門獨家定製 ·冬季溫暖禮包 一份!

【獎品詳情】

雙肩書包*1 單肩布袋*1 衛衣*1(每份禮包都包含這三件單品哦~)

感謝將門小哥哥小姐姐傾情出鏡!

【開獎日期】

北京時間10月12日(周一)

中獎名單將公布在當天推送文末~

文章來源: https://twgreatdaily.com/zh-hk/jRnp3HQBd8y1i3sJ_wK9.html






ECCV 2020

2020-09-29



ECCV 2020

2020-09-24



精選文章

2020-09-15

ECCV 2020

2020-09-14










ECCV 2020

2020-08-04