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