對這篇論文感興趣的小伙伴可以訂閱筆者《目標檢測》專欄,關注筆者對該文獻的閱讀和理解。
前兩篇解讀鏈接:
目標檢測20年(一)-CSDN博客
目標檢測20年(二)-CSDN博客
目錄
四、 檢測器的加速發展
4.1 特征映射共享計算
4.2 級聯檢測
4.3 網絡修剪和量化
4.4 輕量化網絡設計
4.4.1 分解卷積
4.4.2 組卷積
4.4.3 深度可分離卷積
? 4.4.4 瓶頸設計
4.4.5 NAS檢測
4.5 數值加速
4.5.1 積分圖像加速
4.5.2 頻域加速
4.5.3 矢量量化
四、 檢測器的加速發展
讓檢測器變得更快一直是一項具有挑戰性的工作。加速技術可以分為“檢測流水線”加速、“檢測骨干(backbone)”加速和“數值計算”加速三個層次,如下圖所示:
加速技術從下至上形成金字塔結構:數值計算包括積分圖像、快速傅里葉變換(Fast Fourier Transform)、矢量量化和約階近似。檢測引擎/骨干的加速包括網絡修剪和量化以及輕量化網絡設計。最后,流水線加速包括特征映射共享計算和級聯檢測。
下面對這些技術分別進行介紹:
4.1 特征映射共享計算
檢測器不同計算階段中,特征提取占據計算量的主導地位。減少特征計算冗余最常用的方法就是只計算一次整幅圖像的特征映射,該方法已實現數十倍甚至百倍的加速。
4.2 級聯檢測
級聯檢測是一種常用技術,采用從“粗”到“精”的檢測理念,使用簡單計算過濾簡單的背景窗口,用復雜窗口處理困難窗口。該方法適用于大場景小物體檢測任務,如人臉、行人的檢測。
4.3 網絡修剪和量化
“網絡修剪”和“網絡量化”是兩種加速CNN模型的方法。前者修剪網絡結構或權值,后者減少代碼長度。最初網絡修剪采用迭代訓練和修剪,每個訓練階段后只去除一小組不重要的權值并重復該操作。目前的工作集中于網絡二值化,通過激活或權重量化為二進制(0/1)壓縮網絡,將浮點運算轉為邏輯運算。
標準的卷積如下圖所示:
4.4 輕量化網絡設計
除了有“少通道多層”的方法外,近年來也提出了許多其他方法。
4.4.1 分解卷積
這是輕量級CNN最直接的方法。一般有兩組分解方法:第一組是將大的卷積濾波器分解成一組小的,如下圖所示:
我們可以將一個7×7的濾波器分解成三個3×3的濾波器,并且它們享受相同的感受野,后者的效率卻更高。第二組則是對通道維度的卷積進行因式分解,如下圖所示:
4.4.2 組卷積
?組卷積就是將特征通道分成不同組,在每個組上進行卷積,從而減少卷積層中參數數量。如下圖所示:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 理論上,其他條件相同情況下,將特征均勻分成m組,計算量將減少1/m。
4.4.3 深度可分離卷積
深度可分離卷積可以看作是組卷積的一種特殊情況(即組的個數和通道數相同)。使用多個1×1濾波器進行維度轉換以得到具有所需通道數量的輸出。通過深度可分離卷積,計算量可以從O()減少到
。該思想可以應用于目標檢測和細粒度分類。如下圖所示:
? 4.4.4 瓶頸設計
與前幾層相比,神經網絡瓶頸層包含節點較少。瓶頸的設計通常被用來設計輕量級網絡。可以對輸入層網絡進行壓縮,減少檢測開始的計算量。也可以壓縮特征圖,加快后續檢測。? ?? ? ? ? ? ? ? ? ? ? ?
4.4.5 NAS檢測
基于深度學習的檢測器越來越復雜,也嚴重依賴手工構建的網絡架構和訓練參數。神經結構搜索(Nerual Architecture Search,NAS)主要關注確定候選網絡適當空間,改進快速準確搜索策略,以低成本驗證搜索結果。在設計檢測模型時,NAS可以減少人為干預網絡骨干網和錨盒設計需求。
4.5 數值加速
數值加速旨在加速目標檢測器底層實現過程。
4.5.1 積分圖像加速
積分圖像是圖像處理的一種方法,其有助于快速圖像子區域的和。本質就是信號處理中卷積的積分-微分可分性。
其中dg(x)/dx是稀疏信號,之后卷積部分就能通過方程右邊部分進行加速。
積分圖像也可以用于加速更多的目標檢測常見特征,如顏色直方圖、梯度直方圖。很典型的是通過計算積分HOG映射加速HOG,如下圖所示:
積分HOG地圖用于行人檢測,并在不損失精度條件下加速數十倍。
4.5.2 頻域加速
卷積是一種重要的運算,由于線性檢測器檢測可以看作是特征映射和檢測器權重之間的窗口內積,通過卷積實現。傅里葉變換是一種加速卷積的方法。在適當條件下,兩個信號I*W的卷積傅里葉變換F是他們傅里葉空間中的點積:
F是傅里葉變換,F-1是傅里葉反變換。上述公式可以通過快速傅里葉變換和快速傅里葉反變換實現加速。
4.5.3 矢量量化
VQ(vector quantization)是信號處理的常用量化方法。通過一組小的原型向量近似一組大數據分布。可以用于數據壓縮和加速目標檢測內積運算。
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?