在微信AI背後,技術究竟如何讓一切發生?關注微信AI公衆號,我們將爲你一一道來。今天我們將放送 微信AI技術專題系列“微信掃一掃的技術與藝術”的第二篇 ——《揭祕“掃一掃”識物的移動端物體檢測》。

“掃”是“掃一掃”識物的亮點,帶來更爲便捷的用戶體驗。相比於“拍”的交互方式,“掃”的難點在於如何 自動地選擇包含物體的圖像幀 ,這離不開 高效的移動端物體檢測

“掃一掃”識物是一種面向開放環境的通用物體檢測——複雜多樣的物體形態要求模型具有強的泛化性,移動端的計算瓶頸又要求模型保持高的實時性。

“掃一掃”識物需要一個什麼樣的移動端檢測(Class-wise or Object-ness)呢?Class-wise檢測(即傳統意義上的物體檢測)的優勢在於同時輸出物體的位置和類別,然而開放環境下的物體類別很難準確定義和完整覆蓋。

因此,我們將問題定義爲 Object-ness檢測(即主體檢測):只關注是否爲物體和物體的位置,並不關心物體的具體類別。 Object-ness的物體檢測對多樣化的物體具有更強的普適性,同時大大減輕模型的負擔來保證其實時性。這是“掃一掃”識物相比於相關競品在移動端檢測問題上定義的不同。

近幾年物體檢測算法日新月異,面對琳琅滿目的檢測模型(見圖1), 合適的纔是最好的

圖1:琳琅滿目的檢測器

(圖中標註各個檢測器的優缺點,可放大查看)

1

One-stage

從模型的層次結構上,可分爲兩階段(two-stage)和單階段(one-stage)。

(a) Two-stage檢測器以R-CNN系列(Fast R-CNN [1]、Faster R-CNN [2]、Mask-RCNN [3])爲代表 ,其模型的第一階段輸出粗糙的物體候選框(proposal),第二階段進一步迴歸物體座標和分類物體類別。Two-stage檢測器的優勢在於:RoIPool的候選框尺度歸一化對小物體具有較好的魯棒性;進一步的區域(region)分類對於較多類別的檢測需求更爲友好。

(b) One-stage檢測器以YOLO和SSD系列(YOLO V1-V3 [4-6]、SSD [7]、RetinaNet [8])爲代表 ,其特點是全卷積網絡(FCN)直接輸出物體的座標和類別,爲移動端加速提供了便利。

對於“掃一掃”識物中主體檢測的應用場景,小物體和多類別的需求不如實時性來得強烈,因此我們選擇one-stage的模型結構。

2

Anchor-free

(a) 錨點(anchor)是R-CNN系列和SSD系列檢測方法的特點 :在one-stage檢測器中,通過滑動窗口(slide window)產生各式各樣的anchor作爲候選框;在two-stage檢測器中,RPN從anchor中挑選合適的候選框進行第二階段的分類和迴歸。Anchor爲檢測器提供物體的形狀先驗,可有效地降低檢測任務的複雜度,但經驗性的anchor參數會極大地影響模型的性能。

(b) 無錨點(anchor-free)的檢測器隨着網絡結構(如:FPN [9]、DeformConv [10])和損失函數(如:Focal Loss [8]、IOU Loss [11])的發展逐漸煥發出新的生機。 其中,尺度魯棒的網絡結構增強模型的表達能力,訓練魯棒的損失函數解決樣本的平衡和度量問題。Anchor-free方法以YOLO V1-V2 [4-5]及其衍生(DenseBox [12]、DuBox [13]、FoveaBox [14]、FCOS [15]、ConerNet [16]、CenterNet [17]等)爲代表。他們拋開候選框的形狀先驗,直接分類物體的類別和迴歸物體的座標。

在“掃一掃”識物的應用場景中,複雜多樣的物體形狀對anchor的設計提出了巨大挑戰,因此我們選擇anchor-free的模型結構。

3

Light-head

近一年來,anchor-free的檢測器日新月異。然而,在移動端的應用場景下,大部分one-stage且anchor-free的檢測器仍存在以下不足:

(a)多輸出(Multi-head) :爲了增強模型對多尺度物體的檢測能力,大部分檢測器(如:FoveaBox [14]、DuBox [13]、FCOS [15])普遍採用多頭輸出來提高模型的尺度魯棒性。其中,低層特徵滿足小物體檢測需求,高層特徵應對大物體檢測。然而,多頭輸出的網絡結構對於移動端加速並不友好。

(b)後處理(Post-process) :爲了解決anchor先驗缺失和multi-head結果整合的問題,大部分檢測器都需依賴複雜的後處理,如:非極大值抑制(NMS)和各式各樣的奇技淫巧(trick),但它們普遍不適合並行化加速。

綜上,我們選取 CenterNet 作爲“掃一掃”識物的移動端檢測模型(見圖2)。 CenterNet是one-stage的anchor-free檢測方法,single-head的輸出和高斯響應圖的迴歸使其不依賴NMS的後處理。 CenterNet將目標檢測問題變成一個標準的關鍵點估計問題:通過全卷積網絡得到中心點的熱力圖(峯值點即中心點),並預測峯值點對應的物體寬高信息。此外,我們引進了TTFNet [18]中高斯採樣、高斯加權和GIOU Loss [19]等技術實現CenterNet的訓練加速,僅需5小時即可在4塊Tesla P4下完成MS-COCO的訓練,這爲模型調參和優化節省了大量的時間。

圖2:CenterNet: Objects as points

針對移動端的檢測需求,首先我們將CenterNet的骨幹網絡(backbone)從ResNet18更換爲對移動設備更爲友好的ShuffleNetV2 [20]。然而,僅僅依賴backbone帶來的效能提升是有限的,對此我們進行鍼對性的模型優化。

1

大感受野(Large RF)

從ResNet到ShuffleNetV2主要影響了模型的深度和感受野。在以熱力圖迴歸的CenterNet中,模型的感受野顯得異常重要。

如何在保持網絡輕量的前提下提高模型的感受野呢?從AlexNet到VGG,VGG通過將大尺度的卷積核拆解爲多個小尺度的卷積核(1個5x5→2個3x3):在相同感受野下,2個3x3卷積的參數量和計算量均只有1個5x5的18/25。

然而,這在深度(depth-wise)卷積的時代並不適用。在ShuffleNet中,5x5的depth-wise卷積獲得兩倍感受野,僅比3x3的depth-wise卷積增加極少的計算量(如圖3)。因此,我們將ShuffleNetV2中所有的depth-wise卷積均替換爲5x5卷積。因爲缺少ImageNet預訓練的5x5模型,我們取巧地將3x3的ShuffleNetV2預訓練模型進行卷積核的零擴邊(zero padding),得到5x5的大卷積核ShuffleNetV2。

圖3:大感受野的depth-wise卷積

2

輕檢測頭(Light Head)

CenterNet的檢測頭使用類U-Net [21]的上採樣結構,可有效地融合低層細節信息,從而提高對小物體的檢測性能。然而,CenterNet的檢測頭並未針對移動端進行優化,因此我們對其進行ShuffleNet化改造(見圖4紅框)。

圖4:CenterNet檢測頭的結構優化

首先,將檢測頭的所有普通3x3卷積替換爲5x5的depth-wise卷積,並將可形變卷積(DeformConv)也改造爲depth-wise的可形變卷積。

其次,參照ShuffleNet通道壓縮的技巧,將CenterNet中多層特徵的殘差融合(residual)改造爲通道壓縮的連接融合(concat)。通過大感受野(Large RF)和輕檢測頭(Light Head),優化後的模型在MS-COCO數據庫在計算量(FLOPs)、參數量(Parameters)和檢測性能(mAP)均取得優異的結果,見表1。

表1:在MS-COCO下物體檢測的對比

3

金字塔插值(PIM,

Pyramid Interpolation Module)

然而,可形變卷積(DeformConv)對移動端加速並不友好,因此我們需要重新設計DeformConv的替代品。DeformConv可自適應地對多尺度信息進行抽取,在MS-COCO中的小物體檢測起到巨大作用。

“掃一掃”識物對小物體的檢測需求並不是非常強烈,DeformConv更多的是提供多樣化的尺度特徵。對此,我們借鑑圖像分割方法PSPNet [22](見圖5)的金字塔池化(Pyramid Pooling Module,PPM),提出了金字塔插值(Pyramid Interpolation Module,PIM)同時實現多尺度特徵的融合和特徵圖的插值(見圖4藍框)。PIM中主要包括三條分支進行2倍上採樣:空洞解卷積,卷積+上採樣,全局平均池化+全連接。其中,“空洞解卷積”對應大尺度特徵;“卷積+上採樣”對應小尺度特徵;“全局平均池化+全連接”對應全局特徵。在ShuffleNetV2 x0.5的骨幹網絡下,表2對比了各種上採樣方法對檢測性能的影響,可見PIM有效地替代DeformConv在“掃一掃”識物中的作用。

圖5:PSPNet的金字塔池化模塊

表2:不同上採樣方法在“掃一掃”識物中的效果對比

(測試集包含7k張圖片)

通過以上優化,我們最終採用表2中最優結果作爲“掃一掃”識物的移動端檢測模型。該模型採用基於pytorch框架的mmdetection作爲訓練工具。在移動端部署上,我們採用ncnn框架,將pytorch模型轉換爲onnx模型再轉換爲ncnn模型,並在轉換過程中將參數量化到16bit。

此外,爲了進一步減小模型體積和加速,我們將網絡中conv/bn/scale三個連續的線性操作融合爲一個conv層,在不影響效果的同時可減少約5%的參數量,並提速約5%~10%。最終, “掃一掃”識物的移動端檢測模型僅436 KB,在iphone 8的A11 CPU上的單幀檢測時間僅15ms。

目前“掃一掃”移動端檢測只是開端,移動端物體檢測的發展也纔剛剛開始。拋開“掃一掃”識物的場景,CenterNet在通用的物體檢測上仍存在以下問題:如何解決類別增加帶來的檢測頭爆炸性增長?可形變卷積(DeformConv)是否存在更通用的替代品?U-Net式的上採樣結構是否可進一步優化?路漫漫其修遠兮,在我們後續工作中將針對這些問題進行探索。

參考文獻

[1] Girshick, Ross. "Fast R-CNN." international conference on computer vision (2015): 1440-1448.

[2] Ren, Shaoqing, et al. "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks." IEEE Transactions on Pattern Analysis and Machine Intelligence 39.6 (2017): 1137-1149.

[3] He, Kaiming, et al. "Mask R-CNN." international conference on computer vision (2017): 2980-2988.

[4] Redmon, Joseph, et al. "You Only Look Once: Unified, Real-Time Object Detection." computer vision and pattern recognition (2016): 779-788.

[5] Redmon, Joseph, and Ali Farhadi. "YOLO9000: Better, Faster, Stronger." computer vision and pattern recognition (2017): 6517-6525.

[6] Redmon, Joseph, and Ali Farhadi. "YOLOv3: An Incremental Improvement." arXiv: Computer Vision and Pattern Recognition (2018).

[7] Liu, Wei, et al. "SSD: Single Shot MultiBox Detector." european conference on computer vision (2016): 21-37.

[8] Lin, Tsungyi, et al. "Focal Loss for Dense Object Detection." international conference on computer vision (2017): 2999-3007.

[9] Lin, Tsungyi, et al. "Feature Pyramid Networks for Object Detection." computer vision and pattern recognition (2017): 936-944.

[10] Dai, Jifeng, et al. "Deformable Convolutional Networks." international conference on computer vision (2017): 764-773.

[11] Yu, Jiahui, et al. "UnitBox: An Advanced Object Detection Network." acm multimedia (2016): 516-520.

[12] Huang, Lichao, et al. "DenseBox: Unifying Landmark Localization with End to End Object Detection." arXiv: Computer Vision and Pattern Recognition (2015).

[13] Chen, Shuai, et al. "DuBox: No-Prior Box Objection Detection via Residual Dual Scale Detectors." arXiv: Computer Vision and Pattern Recognition (2019).

[14] Kong, Tao, et al. "FoveaBox: Beyond Anchor-based Object Detector." arXiv: Computer Vision and Pattern Recognition (2019).

[15] Tian, Zhi, et al. "FCOS: Fully Convolutional One-Stage Object Detection." international conference on computer vision (2019): 9627-9636.

[16] Law, Hei, and Jia Deng. "CornerNet: Detecting Objects as Paired Keypoints." european conference on computer vision (2019): 765-781.

[17] Zhou, Xingyi, Dequan Wang, and Philipp Krahenbuhl. "Objects as Points." arXiv: Computer Vision and Pattern Recognition (2019).

[18] Liu, Zili, et al. "Training-Time-Friendly Network for Real-Time Object Detection." arXiv: Computer Vision and Pattern Recognition (2019).

[19] Rezatofighi, Hamid, et al. "Generalized Intersection Over Union: A Metric and a Loss for Bounding Box Regression." computer vision and pattern recognition (2019): 658-666.

[20] Ma, Ningning, et al. "ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design." european conference on computer vision (2018): 122-138.

[21] Ronneberger, Olaf, Philipp Fischer, and Thomas Brox. "U-Net: Convolutional Networks for Biomedical Image Segmentation." medical image computing and computer assisted intervention (2015): 234-241.

[22] Zhao, Hengshuang, et al. "Pyramid Scene Parsing Network." computer vision and pattern recognition (2017): 6230-6239.

[23] Li, Zeming, et al. "Light-Head R-CNN: In Defense of Two-Stage Object Detector." arXiv: Computer Vision and Pattern Recognition (2017).

[24] Wang, Jun, Xiang Li, and Charles X. Ling. "Pelee: A Real-Time Object Detection System on Mobile Devices." neural information processing systems (2018): 1967-1976.

微信AI 

不描摹技術的酷炫,不依賴擬人的形態,微信AI是什麼?是悄無聲息卻無處不在,是用技術創造更高效率,是更懂你。

微信AI關注語音識別與合成、自然語言處理、計算機視覺、工業級推薦系統等領域,成果對內應用於微信翻譯、微信視頻號、微信看一看等業務,對外服務王者榮耀、QQ音樂等產品。

相關文章