感知算法论文(二)Pelee: A Real-Time Object Detection System on Mobile Devices(2018)译文
摘要
目前在計算能力和內存資源有限的移動設備上運行卷積神經網絡模型的需求越來越大,這樣一來就刺激了對高效模型的設計和研究。
MobileNet、ShuffleNet和MobileNetV2等高效的網絡結構,然而這些模型高度依賴于深度可分離卷積網絡,在很多深度學習框架中難以實施。
基于此,本文提出了一種有效的結構,名為PeleeNet,使用傳統的卷積網絡。
- 在ImageNet ILSVRC 2012上,PeleeNet達到了很好的效果,且在NVIDIA TX2上比MobileNet 和 MobileNetV2 快1.8倍。
- PeleeNet模型大小是MobileNet的66%
- 本文提出了一個將PeleeNet和SSD結合起來的實時目標檢測系統Pelee,在PASCAL VOC2007上的mAP達到了76.4%,MS COCO上的mAP達到了22.4,在NVIDIA TX2上進行實驗,速度分別為8和125fps。
- COCO上的結果比YOLOv2的精度要好,計算復雜度比其低13.6倍,模型大小低11.3倍。
1. 引言
在內存和計算受限的情況下高性能的運行CNN模型已經引起了人們的興趣
目前也產生了很多新的結構,如MobileNets [1], ShuffleNet [2], NASNet-A [3], MobileNetV2 [4]。
這些結構的缺點: 高度基于深度可分離卷積,限制了實施
目前現有研究的盲點: 缺少有效模型和快速目標檢測系統的結合
本文嘗試將高效的CNN用于圖像分類和目標檢測任務,貢獻點如下:
1)在移動端提出了DenseNet[7]變體結構——PeleeNet
PeleeNet借鑒了DenseNet的級聯模式和主要步驟,被用于解決存儲和計算能力受限的情況。
在斯坦福的Dogs[8]數據集上比DenseNet的準確率高5.05%,比MobileNet[1]高6.53%。
在ImageNet ILSVRC 2012 [9]上效果也很好,Top-1準確率為72.1%,比MobileNet高1.6%,且僅僅是MobileNet模型大小的66%
PeleeNet的主要結構:
-
Two-Way Dense Layer:
靈感源于GoogLeNet[5],使用2路稠密層來獲得不同尺度的感受野,一路使用3x3的卷積核,另一路使用兩個堆疊的3x3卷積來學習大目標物體的視覺模式,結構如Fig.1(右)。
-
Stem Block:
靈感源于Inception-v4[10]和DSOD[11],在第一個稠密層之前設計一個有效的stem block,結構如Fig 2,該結構可以有效的提升特征表達能力且不會增加額外的計算開銷,比其他的方法(增加通道或增加增長率)都要好。
-
瓶頸動態通道數
另外一個有效的設計是,瓶頸層的通道數是根據輸入形態可以動態調整的,而不是DenseNet中使用的固定的數量,是增長率的4倍。DenseNet中,前幾個稠密層的瓶頸通道數比輸入通道數多很多,這也意味著對這些層來說,瓶頸層增加了計算開銷。
為了維持結構的一致性,PeleeNet仍然給所有稠密層添加了瓶頸層,但是數量是依據輸入形式而動態調整的,來保證通道數量不會超過輸入通道數。
本文的網絡可以在減少28.5%的計算開銷的同時,僅對準確率有微小的降低(Fig.3)
-
無壓縮的傳遞層
實驗驗證了DenseNet中提出的壓縮因子會損害特征表達,本文保持transition layers的輸出通道數和輸入通道數相同。
-
Composite Function
為了加速實際過程,本文使用“post-activation”(卷積-BN[12]-Relu)結構來作為composite function而不是DenseNet中使用的pre-activation。post-activation中,在推斷階段(inference stage)所有的BN層可以和卷積層合并,可以促進加速。為了彌補這個改變給準確度帶來的負面影響,本文使用更淺更寬的網絡結構,在最后一個dense block后添加一個1x1的卷積層來獲得更強的特征表達能力。
2)優化SSD的網絡結構來提升速度,并將優化后的SSD與PeleeNet進行結合
本文提出的系統叫Pelee,在PASCAL VOC [14] 2007上達到了76.4%的mAP,在COCO上達到了22.4%的mAP。在準確度、速度和模型小型上都超越了YOLOv2,權衡速度和準確度的要點如下:
- 特征圖選擇:
和傳統SSD的構建過程不同的目標檢測網絡,仔細的選擇了5種不同尺度的特征圖(19x19, 10x10, 5x5, 3x3, 1x1),為了減少計算復雜度,沒有使用38x38的特征圖。
-
殘差預測模塊:
本文使用[16]中提出的設計思想,鼓勵特征沿著特征提取網絡進行傳遞。對于每個用于檢測的特征圖,在預測之前建立一個殘差塊(Residual Block,ResBlock),結構如圖Fig.4。
-
用于預測的小的卷積核:
殘差預測塊使得利用1x1卷積核來預測分類得分和b-box偏移量成為可能,實驗展示出實驗1x1卷積核的模型幾乎和使用3x3的卷積核準確率相當,且1x1的卷積核將計算復雜度降低了21.5%。
3)提供了一種基準測試
針對NVIDIA TX2嵌入式平臺和iPhone 8上不同的高效分類模型和不同的單階段目標檢測方法
2. PeleeNet:An Efficient Feature Extraction Network
2.1 結構
本文提出的PeleeNet結構如Table 1中所示,整個網絡由一個stem block和四階特征提取器構成。
除過最后一個階段的每個階段的最后一層都是步長為2的平均池化,四階段結構是一般大型模型設計的通用結構。
ShuffleNet [2]使用三階段的結構,并在每個階段的開始都壓縮了特征圖大小,盡管這樣可以提升計算速度,但是我們認為前面的階段對視覺任務尤為重要,且過早的減小特征圖大小會損壞特征表達能力,因此我們仍然使用四階段結構,前兩階段的層數是專門控制在一個可接受的范圍內的。
2.2 消融學習
2.2.1 數據集
我們將斯坦福的Dogs數據集進行了預處理來進行消融學習。
Stanford Dogs [8] dataset包含了來自全世界的120種不同的品種。該數據集利用圖像和從ImageNet中的標記來建立的,用于細粒度圖像的分類。
我們認為用于這類任務的數據集足夠復雜,足以評估網絡體系結構的性能。
但是,原始的Stanford Dogs數據集僅包含14580個訓練圖像,每類大概120張圖像,數據集不夠大以至于不能從最初開始訓練模型。
我們沒有使用原始數據集,而是根據Stanford Dogs中使用的ImageNet wnid構建了一個 ILSVRC 2012子集,
訓練集和驗證集都來源于ILSVRC 2012數據集,下文中,“Stanford Dogs”就表示ILSVRC 2012的子集。
- 類別:120
- 訓練集個數:150466
- 驗證集個數:6000
2.2.2 不同設計方法的性能測試
我們建立了一個類似于DenseNet的網絡——DenseNet-41作為基準模型。兩個模型中有兩點不同:
- 第一個卷積層的參數(第一個卷積層有24個通道,而非64個,卷積核大小為3x3而非7x7)
- 每個dense block的層數是根據計算預算來確定的
本節中的實驗都是用PyTorch訓練的,小批量大小為256,迭代120次,訓練集和超參數都是用RestNet在ILSVRC 2012中的參數。
Table 2中展示了不同設計方式對性能的影響。結合了這些設計方式的PeleeNet在Stanford Dogs數據集上的準確率達到了79.25%,比DenseNet-41高4.24%,且計算開銷更小。
2.3 在 ImageNet ILSVRC 2012上的結果
PeleeNet是在PyTorch上以兩個GPU上且批量大小為512的情況下訓練的。
學習率:初始值為0.18,迭代次數為120,cosine降速學習率,與[18,19]中相同
微調:初始學習率為0.005,迭代次數為20次,其他超參數都是和Stanford Dogs數據集相同
-
Cosine Learning Rate Annealing:
學習率以cosine曲線的形式下降,也就是對于第 t(t<=120)t(t<=120)t(t<=120) 次迭代,學習率設置為:
0.5?lr?(cos(π?t/120)+1)0.5 * lr * (cos(\pi * t/120)+1) 0.5?lr?(cos(π?t/120)+1)
表3中展示了PeleeNet以更低的計算開銷獲得了比 MobileNet 和 ShuffleNet 更高的準確率,且模型大小不超過該兩者的66%。PeleeNet的模型大小僅僅是VGG16的1/49。
2.4 實際設備上的速度
計算FLOPS(floating-point operations per second,每秒浮點運算次數)在判定網絡的計算速度中應用的很多。
但是FLOPS不能測試在實際設備上的速度,因為實際中可能有很多因素都會影響實時速度,如緩存、I/O口、硬件設備等。
本節將在iPhone 8 和 NVIDIA TX2嵌入式平臺上對該模型的性能進行測試。
速度的計算方式:對100張圖像,處理10次,對時間求均值
Table 4中可以看出,PeleeNet 在TX2 上的運行速度比 MoibleNet 和 MobileNetV2 都快,盡管MobileNetV2在高準確率的情況下達到了300FLOPS的速度,但是實際的速度還是比MobileNet的569速度慢。
用半精度浮點數(FP16)代替單精度浮點數(FP32)是一種廣泛使用的加速深度學習推理的方法,如圖5所示,PeleeNet在FP16模式下比FP32模式下快1.8倍。
相比之下,利用深度可分離卷積建立的網絡很難從TX2的半精度(FP16)中獲益,MobileNet和MobileNetV2在FP16模式下的運行速度幾乎與在FP32模式下相同。
iPhone 8上,當輸入維數小時,PeleeNet比MobileNet速度慢,當輸入維數較大時,PeleeNet比MobileNet速度快,原因有兩個:
- 第一個原因與CoreML有關,CoreML基于蘋果的Metal API。Metal是一個3D圖形API,最初并不是為CNNs設計的。它只能保存4個通道的數據(最初用于保存RGBA數據)。高級API必須將通道切分為4個,并緩存每個切片的結果。與傳統的卷積方法相比,可分離卷積可以從這種機制中更多的獲益。
- 第二個原因是PeleeNet的結構,PeleeNet是由113個卷積層組成的多分支的窄通道結構,我們的設計被錯誤的FLOPS計數所誤導,涉及到了一些不必要的復雜性。
3. Pelee:實時目標檢測系統
3.1 概述
本節將介紹所構建的目標檢測系統和優化SSD。
優化的主要目標:在對精度沒有太大損失的情況下,提高速度
本文建立的目標檢測系統:
- 使用仔細選擇的5個尺度的特征圖來建立,不同于SSD,
- 對于每個用于檢測的特征圖,都在預測之前添加一個殘差塊(Fig.4)
- 使用較小的卷積核來預測類別和定位框來減小計算開銷
- 使用不同的訓練超參數
上述改變看起來很小,但最終在PASCAL VOC2007上達到了70.9%的mAP,在COCO上達到了22.4的mAP。
在COCO上的效果超越了YOLOv2,且運行時間低13.6倍,模型大小低11.3倍。
用于預測的五個尺度的特征圖大小分別為:19 x 19, 10 x 10, 5 x 5, 3 x 3 和1 x 1
不使用38x38大小的特征圖的原因:確保速度和準確率上的折衷權衡
19x19的特征圖:被合并到兩個不同尺度的默認框中,其他四種大小的特征圖都被結合到一個默認框的尺度中。
SSD和MobileNet合并時:Huang 等人 [6] 也沒有使用38x38的特征圖,但是使用了2x2的特征圖來保證使用6種尺度的特征圖來進行預測。
3.2 在VOC 2017上的結果
本文目標檢測系統是基于SSD源碼在Caffe上訓練的。batch size為32,初始學習率為0.005,之后分別在迭代次數為80k和100k時,減小10%,總迭代次數為120次。
3.2.1 不同設計方法的效果
Table 7展示了不同設計方法獲得的性能。
殘差預測模塊可以很有效的提高準確率,有殘差模塊的模型比沒有殘差模塊的模型準確率高2.2%。
使用1x1大小的卷積核來進行預測的模型和使用3x3大小的卷積核來預測的模型效果基本相同,但1x1的卷積核將計算開銷降低了21.5,%,將模型大小降低了33.9%。
3.2.2 與其他框架的對比
Table 8中可以看出:
- Pelee的準確率比 Tiny YOLOv2的準確率高13.8%
- 比SSD+MobileNet的準確率高2.9%
- 在計算開銷僅僅為YOLOv2-228的14.5%的情況下,準確率也比YOLOv2-228高
- 在使用COCO trainval35k(section 3.3)且在07+12數據集上進行微調的情況下,Pelee達到了76.4%的mAP
3.2.3 實際設備中的速度
本節測試Pelee在實際設備中的速度,通過將在基準設備中進行100次處理的實際平均而獲得,包括預處理的時間但不包括 post-processing時間(也就是解碼b-box和實現NMS的時間)。
通常post-processing是在CPU上進行的,也就表示該步驟可以于其他在移動GPU上執行的模塊異步進行。
盡管殘差模塊可以提高計算開銷,但是Pelee在iPhone和TX2上以FP32模式運行,仍然比SSD+MobileNet快
Table 9中可以看出,Pelee在FP16模式下,比SSD+MobileNet 和SSD+MobileNetV2 都快。
3.3 COCO上的實驗結果
模型在COCO的train+val數據集上訓練(除過5000個minival),在test-dev2015上測試。批量大小為128,前70k次迭代實驗學習率為0.01,中間10k次使用0.001,后面20k次實驗0.0001。
Table 10呈現了test-dev的結果,Pelee不僅比SSD+MobileNet效果好,也比YOLOv2效果好,且Pelee比YOLOv2速度快3.7倍,比YOLOv2模型小11.3倍。
4. 總結
- 可分離深度卷積網絡并非建立有效模型的必須途徑
- 本文利用傳統的卷積形式建立了PeleeNet和Pelee結構,并且在ILSVRC 2012, VOC 2007 和 COCO上取得了引人注目的成績
- 本文通過將有效的結構和移動GPU及特定硬件設備的結合,建立了一種在移動端上可以進行圖像分類和目標檢測的模型。
- Pelee(本文目標檢測系統),可以在iPhone 8上實現23.6FPS的速度,在NVIDIA TX2上實現了125FPS的速度,同時擁有高準確率。
總結
以上是生活随笔為你收集整理的感知算法论文(二)Pelee: A Real-Time Object Detection System on Mobile Devices(2018)译文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 瑞萨电子推出 Wi-Fi 6/6E 四频
- 下一篇: 感知算法论文(三):Feature Se