周立旺, 潘天翔, 楊澤曦, 王 斌
(1. 清華大學軟件學院,北京 100084;2. 圖靈通諾科技有限公司,北京 100020)
在深度學習逐漸普及的今天,目標檢測作為許多深度學習任務的先行任務有著重要的意義。目前主流的深度學習方法主要有:雙階段的目標檢測和單階段的目標檢測。RCNN系列,包括R-CNN[1],Fast R-CNN[2],Faster R-CNN[3]和 Mask R-CNN[4],是雙階段目標檢測方法的代表,這類方法通過一個候選框提取網絡(region proposal network,RPN)提取出圖像中可能存在目標的感興趣區域(region of interest,ROI),然后對這些區域進行分類,判斷是否存在目標以及目標的類別,同時對區域的候選框(bounding box)做更精細的回歸。由于RPN階段會給出成百上千的ROI,而分類及回歸階段要逐一對其進行處理,所以雙階段目標檢測方法相對來說速度較慢;而以YOLO[5],YOLOv2[6](YOLO9000),YOLOv3[7]為代表的單階段方法就偏向于追求檢測速度的極致,這類方法的通常做法是去掉 RPN模塊,不采用提出許多候選框然后逐一分類的做法,而直接對包圍目標的矩形框做回歸,這樣做的速度雖然非常快,但精度同時也會損失很多,因為正負候選框的比例不均勻。
無人冰柜是目前零售產業中人工智能的一項重要應用場景,對于減少人力資源投入、普及智能化終端有著重要意義。在這個場景中,通過在傳統冰柜內添加攝像頭及 GPU服務器等設備,使其可以完成目標檢測、物體識別、目標追蹤等一系列的任務。在實際應用中,所選的深度學習方法首要考慮的是速度上要達到實時性,另外一方面出于成本控制的考慮,GPU的性能及顯存等參數也比學術界常用的設備要差,所以在目標檢測任務上傾向于選擇單階段的檢測模型,如YOLO;同時由于攝像頭獲取的圖像分辨率較高(W×H),直接作為輸入會占用較大顯存,所以在輸入檢測網絡前會先進行下采樣操作到較低的分辨率(w×h)以提高檢測速度。此時一個很重要的挑戰是小物體的目標檢測,因為使用單階段檢測模型以及對輸入的下采樣操作都造成小目標及整體精度很大的下降。
本文提出了一種coarse-to-fine的由粗到精的2階段檢測結構FocusNet,用來解決上述提出的單階段模型小目標檢測精度不高的問題。①粗粒度檢測階段,在原始圖像中檢測出一個最可能包含待檢測目標的區域ROI (w×h);②細粒度檢測階段,以原始圖像中截取第一階段識別出的ROI作為輸入,檢測出每個目標的精細位置。第一階段使用的是淺層的全卷積網絡,而第二階段使用的是單階段檢測的YOLOv2模型,并利用輕量化模型作為骨干網絡加速計算,整體網絡復雜度相對于YOLOv2單階段檢測模型沒有顯著提升。最終在圖靈通諾公司提供的無人冰柜數據集上整體檢測平均準確率提升了3.5%,而小目標檢測平均準確率提升了8.3%。
本文的主要貢獻有2點:①提出了一種雙階段優化的檢測算法,在不增加太多計算復雜度的情況下,顯著提升了無人冰柜數據上的目標檢測精度及小目標檢測精度。②提出了針對小目標檢測的新的損失函數,提高了在目標檢測的通用數據集上的精度。
本文工作主要包含目標檢測及針對小目標檢測的研究。
傳統的目標檢測一般是基于滑窗操作,從滑窗中的區域提取一些經典的人工特征如SIFT和HOG,然后用SVM等分類器對這些區域進行分類,一般的應用場景是行人檢測和一般的目標檢測。DPM[8]是此類算法的經典代表,連續贏得了 2007–2009年的PASCAL VOC[9]檢測冠軍。
目前主流的成熟目標檢測的算法都是基于深度學習的框架,主要可以分為雙階段和單階段檢測2種。雙階段的檢測框架主要基于R-CNN網絡,而后該結構逐步在 SPP-Net[10],Fast R-CNN,Faster R-CNN和Mask R-CNN中得到了完善,基本的思路是利用區域提取網絡 RPN和卷積網絡的組合取代了傳統算法中的滑窗操作及人工特征,實現了端到端的檢測,同時避免了人工特征的局限性,使速度和精度均有很大提高。
單階段的目標檢測方法是去掉候選框的提取部分,在主干網絡中直接回歸目標框。OverFeat[11]算法是最早的端到端檢測模型,首次將分類、檢測和定位3個問題一起解決。目前最經典的單階段檢測方法代表是YOLO系列,由于不需要對每個候選框進行分類及回歸操作,YOLO的速度可以達到45FPS。后續的YOLO9000、YOLOv3逐步引入了經驗框機制(anchor box)和多尺度特征的設計,在維持了高速度的特性上,進一步提升了檢測精度。
SSD[12]也是重要的單階段目標檢測方法,將YOLO的回歸思想與Faster R-CNN的anchor box機制進行了結合,這一點也啟發了后來的YOLOv2。DSSD[13]是SSD的改進網絡,SSD中將多個卷積層輸入到預測中進行回歸和分類,而DSSD將這些特征輸入了反卷積層,用得到的特征圖金字塔進行多尺度的檢測,提升了SSD的小目標檢測能力。
小目標檢測在一般的目標檢測中一直是一個較難的問題,由于小目標本身所占像素少,經過卷積網絡中一些下采樣操作感受野會變得更小而特征更不明顯,造成相比大目標檢測率低的問題。針對小目標檢測的思路主要有3種:①針對數據,在圖像預處理階段通過數據增強、圖像超分辨率等操作增加小目標的比例和尺寸,KISANTAL等[14]工作屬于這種做法,其在數據增強階段通過人工復制小物體并在原圖中隨機粘貼多份增加了小目標的數量;②coarse-to-fine的級聯方法,用后續的網絡回歸粗檢測網絡提出的框以獲得更精準的定位,即Faster R-CNN的候選框提出和精細回歸的做法;③多尺度融合方法,即結合淺層網絡的精細特征和高層網絡的語義特征,典型的代表是FPN[15]。之前的許多目標檢測算法都只用了高層的語義特征做預測,FPN通過上采樣的方式融合了高層與淺層特征,并且在每層獨立進行預測。不過多尺度融合以及雙階段的檢測方法由于計算較多速度較慢,不適用于無人冰柜場景。
現有的針對無人冰柜數據的目標檢測算法大都是基于YOLO,SSD這類單階段檢測模型,同時結合下采樣從而提高模型運算速度。這一模型的主干網絡為包含19個卷積層的全卷積網絡Darknet-19,未引入全連接層(fully connected layer),所以網絡實際運行時速度很快。但在該框架的訓練測試中,原始圖像(W×H)會先縮小到(w×h)的尺寸,然后在主干網絡中經過5個步幅(stride)為2的卷積下采樣32倍。以W=2.5w為例,原始圖像中80像素長度的物體在最終的特征圖中會壓縮到 1個像素內,小于80像素邊長的物體的特征可能會完全丟失,造成精度明顯的損失。并將該模型作為本文的基線標準。
本文算法對上述模型進行改進,提出了一種coarse-to-fine由粗到精的雙階段檢測模型。無人冰柜的數據相比通用檢測數據集有以下的特點:①背景單一,由于是固定場景的固定攝像頭,所以采集到的圖像背景差異不大;②多數圖像大部分區域是背景,目標雖然會分布在圖像的任意位置,但是在大多數圖像中顧客只拿取了一個或少數幾個目標商品,而這些目標商品往往只存在一個小范圍中,如圖1所示。
針對這一特性,本文的思路是在第一個粗粒度檢測階段在原始圖像I(W×H)中檢測出最可能包含目標商品的一個潛在區域IROI(w×h),將這個區域從原圖中截取出來,然后在第二個細粒度檢測階段再用原來尺度(w×h)的檢測網絡對目標的坐標進行精細的回歸預測。本文的核心思想是利用無人冰柜數據的特點,用增加一個快速檢測模塊的方式,換取第二階段相比原來增加了 525%的特征感受野(W=2.5w),從而顯著提高了目標檢測特別是小目標檢測的精度。下面介紹兩階段的檢測網絡和相關算法,如圖2所示。

圖1 無人冰柜圖像樣例

圖2 整體算法流程圖
為了滿足無人冰柜場景快速計算的需求,不在粗粒度檢測網絡的部分增加太多計算復雜度,本文在該階段選擇了輕量化的模型,即選擇了Mobilenetv2[16]的前10個倒置殘差塊作為模型。
Mobilenetv2是谷歌提出的面向移動平臺的輕量化網絡結構,其特點是使用可分解卷積(separable convolution)替代普通卷積降低了計算量,同時借鑒了ResNet[17]中殘差連接的設計提高了精度。
網絡結構見表 1,表中的 bottleneck即代表倒置殘差塊,重復數代表同樣的bottleneck重復相連接的次數。
該階段網絡的輸入為原圖縮放到(w×h)的尺寸的圖像Iresized,輸出為經過 4次卷積中下采樣的特征圖(Wf×Hf),而特征圖通過一個sigmoid激活函數映射到[0,1]內,得到第一階段的輸出熱力圖Hpredict(Wf×Hf),然后通過2.2節中的后處理算法,得到目標商品的潛在區域IROI。該階段的ground truth是利
用目標的標注框生成的[0,1]熱力圖HGT(Wf×Hf),即有目標的區域標注為 1,反之為 0。此外,借鑒CornerNet[18]中reducing penalty的設計,在目標的邊界區域不直接取 0,而以邊界點為中心添加一個二維的高斯分布,得到一個更平滑的熱力圖H′GT。粗粒度檢測網絡使用L2距離作為評價標準,損失函數為


表1 粗粒度檢測網絡結構
通過粗粒度檢測網絡得到熱力圖Hpredict后,需要利用其計算出一個在原圖中的裁剪區域 ROI(w×h)。但實際情況中并不是所有目標商品都只分布在一個較小區域,考慮到商品離攝像頭遠近的不同和商品本身的大小差異以及顧客一手抓多個的情況,有相當一部分圖片中ROI (w×h)并未框住所有目標,直接粗暴的對所有圖進行裁剪會反而導致精度的下降,第3節中表3的實驗證明了這一點。所以本文的算法將大和小目標圖片的處理進行了區分:對于大目標圖片而言,直接將原圖縮小到(w×h)的尺寸進行第二階段的細粒度檢測,因為細粒度網絡對大目標的檢測是相對準確的,所以不會造成精度的損失;而對于小目標圖片而言,則在熱力圖中找到一個響應最大的區域并映射到原圖中的對應區域(x,y,w,h),截取該區域作為細粒度檢測的輸入ROI。該區域通過遍歷熱力圖搜索得到

此處wf和hf是原圖中(w×h)縮小2.5倍再下采樣 16 倍得到的(wf×hf)。
大、小目標圖片的劃分是用熱力圖中響應值大小進行分類的。后處理算法的步驟如下:
輸入:熱力圖預測值Hpredict。
輸出:裁剪區域(xcrop,ycrop,wcrop,hcrop)。
步驟1.讀入熱力圖,對全圖響應值求平均值,判斷是否大于閾值;
步驟2.若大于閾值,則判斷為大目標圖片;
步驟3.輸出原圖(0,0,W,H);
步驟4.若小于閾值,則判斷為小目標圖片;
步驟 5.在熱力圖中搜索子區域(xf,yf,wf,hf),使得子區域響應值之和最大;
步驟6.將最大響應值子區域(xf,yf,wf,hf)放大對應到原圖中的區域(x,y,w,h);
步驟 7.輸出(x,y,w,h)。
細粒度檢測網絡使用的是基線模型使用的檢測網絡:輕量化的主干網絡,與YOLOv2的回歸檢測框架。
細粒度檢測網絡的主干部分由一系列bottleneck組成,是全卷積的網絡設計,因此網絡的計算效率很高。而檢測部分使用了YOLOv2除主干網絡 Darknet-19之外的回歸檢測部分。對于YOLOv1直接對目標框的(xp,yp,wp,hp)值做回歸預測造成的定位不準確的問題,YOLOv2引入了Faster R-CNN中的經驗框(anchor box)機制。經驗框機制是在訓練集的標注框中通過聚類找出最具代表性的幾個(YOLOv2中是5個)不同大小的框,使得這幾個經驗框與訓練集中所有的標注框的IOU (intersection over union)足夠大。而YOLOv2預測的目標框大小是相對這 5個經驗框的相對大小,而不是絕對大小;且目標框的位置也是預測的相對偏移值,所以提高了檢測精度,也使得模型訓練更穩定。
細粒度檢測網絡相比基線模型的改變主要在于輸入。基線模型的輸入為原圖(W×H)縮小到(w×h)分辨率再輸入檢測網絡。而細粒度檢測網絡是從原圖(W×H)中截取(w×h)大小的區域作為輸入,相當于細粒度檢測網絡中所有目標的尺度都是基線模型中目標的6.25倍(W=2.5w),從而顯著提高了目標檢測的精度。
這部分的網絡結構見表2。
本文對YOLOv2的檢測框架也進行了改進。主要針對 小目標像素少導致損失函數中所占比重小,造成檢測精度低這一點進行了改進。
在YOLOv2的預測階段,會輸出一張(wr×hr×5)的特征圖,即在每個位置會預測5個目標框對應5個預先計算的anchor boxes,大的anchor box會預測出較大的目標框,而小的anchor box會預測出小的目標框。YOLOv2同時會預測大小為(wr×hr×5)的置信度圖Confpredict,對應之前(wr×hr×5)的預測框分別存在目標的概率,而 ground truth的置信度圖ConfGT由標注框給出:存在目標的位置時,在與目標標注框IOU最大的anchor box處取值為1,其余位置取值為0,所以原始YOLOv2模型中這部分的損失函數為


表2 細粒度檢測網絡結構
在這個損失函數中,5種不同的 anchor boxes對應的權重是相同的,即大、小anchor box對應的大、小目標的權重是相同的。但考慮到大、小目標所占的空間像素的不同,在損失求和時大目標的實際計算權重是遠大于小目標的;另外一方面,同樣大小的位置預測偏差會給小目標帶來更明顯的精度損失,這2點導致了網絡對小目標檢測的精度下降。針對這一點,本文設計了一種針對anchor box的加權損失函數,即在計算損失函數時,賦予小anchor box對應的預測框更大的權重,從而促使檢測網絡對小目標的檢測進一步優化。改進后的置信度損失函數為

在本文的實驗中,= [ 2.00,1.75,1.50,1.25,1.00],分別對應從小到大的anchor boxes。
本文整體的算法在測試階段的步驟如下:
輸入:原始圖像I。
輸出:目標檢測框(xp,yp,wp,hp)。
步驟1.讀入圖像,縮小到(w×h)分辨率,輸入粗粒度檢測網絡,得到熱力圖預測Hpredict;
步驟 2.將熱力圖Hpredict輸入粗粒度檢測后處理算法,得到原圖區域(xcrop,ycrop,wcrop,hcrop);
步驟 3.將(xcrop,ycrop,wcrop,hcrop)縮放到(w×h)分辨率,輸入細粒度檢測網絡,得到目標預測框(xp,yp,wp,hp);
步驟 4.輸出檢測框(xp,yp,wp,hp)。
本文使用的數據集包括:一個無人冰柜數據集以及通用目標檢測數據集 PASCAL VOC[9]和COCO14[19]。在實驗評價中使用了COCO的評價指標,包含 AP0.50∶0.95,AP0.50,AP0.75,APsmall,APmedium,APlarge等指標,全面綜合地評價了模型在不同精準度要求、不同目標大小下的檢測精度。
所有模型均在 IMAGENET[20]上進行預訓練。訓練時,將batch-size設置為24。網絡的學習率初始為0.000 2,在60個epoch后降為0.000 1,在90個epoch后降為0.000 01。測試時,設檢測置信度閾值為0.25。在粗粒度檢測網絡后處理算法中的閾值取 0.1,而加權 anchor box損失函數中的γ■?取值為[2,1.75,1.5,1.25,1]。
為了驗證本文方法的有效性,在圖靈通諾公司從實際部署的無人冰柜數據集上采集并標注的36 090張圖片集上進行了實驗。每張圖片包含一個或多個目標商品,商品種類包含3類體積較大的沙拉和2類體積較小的壽司。并將整個數據集按9∶1隨機分成了訓練集和測試集,訓練集包含32 481張圖片而測試集包含3 609張圖片。
在精準度和速度上詳細對比了本文算法與基線模型以及與雙階段模型Faster R-CNN[3]和最新的單階段模型 YOLOv3[7],FCOS[21]的效果。精準度的對比見表3。
其中,Faster R-CNN與Faster R-CNN+FPN[15]算法的主干網絡使用的是ResNet-50;表中的(Ours)指的是本文算法不使用粗檢測后處理以及加權anchor損失函數時的模型,而(Ours,+p)是指的使用了粗檢測后處理的本文算法,(Ours,+p,w)指的是同時使用粗檢測后處理和加權 anchor損失函數時的模型。從表中可以看出,本文的兩階段檢測算法(Ours,+p)在基線模型的基礎上大幅提高了精準度,COCO的主要指標APsmall提升了2.7%,小目標檢測的指標APsmall更是提升了6.5%,其余各項指標也有不同程度的提升;而在使用了anchor box加權損失函數后,(Ours,+p,w)模型的精度進一步提高了,APsmall提高了8.3%,AP0.5:0.95提高了3.5%,接近了Faster R-CNN網絡的精度,甚至在小目標精度指標上已經超過了Faster R-CNN,且接近了目前方法的精度上界。而相比最新的單檢測框架YOLOv3與FCOS,雖然本文改進后模型與最新方法在檢測精度上存在一點差距,但在后面模型參數量與運行速度的對比上,本文的模型依然具有極大的優勢。當前框架精準度的上界是通過以下方法得到的:首先對原始圖像以(w×h)分辨率進行了人工裁剪,并保證原圖中的所有目標均完全包括在這個裁剪圖中,然后用這個裁剪數據集訓練基線模型。這個實驗需假設在粗粒度檢測階段得到了完全正確的裁剪框,所以是目前算法準確度的上界。而實驗結果顯示經過改進的coarse-to-fine算法可以接近這個上界。另外,表中的不帶粗粒度檢測后處理的模型精度降低非常明顯,只有小目標檢測的精度及召回率有一定提升;而添加后處理算法,提升了小目標檢測精度,由于對大目標圖片不做裁剪操作,所以也保證了大目標的檢測精度不受影響,從而提升了整體的檢測精度。

表3 無人冰柜數據集實驗結果
另外一方面,對比了本文的雙階段模型與基線模型以及 Faster R-CNN網絡的效率,分別從參數量、實際運行速度方面進行了對比,見表4。

表4 幾種方法的預測速度比較
可以看到,在大幅提升了基線模型的準確率的情況下,兩階段的由粗到精框架并沒有顯著提升計算復雜度,參數量只增加了0.6%,而實際運行時間比原來增加了 11%,依然可以保持實時的運行效果。而FocusNet與Faster R-CNN相比,參數量僅為后者的5%,運行速度是后者的4.2倍,而精度在表3中可以看到與Faster R-CNN接近。同時與單階段檢測模型的最新方法 FCOS、YOLOv3相比,FocusNet的參數量僅為FCOS的5%、YOLOv3的19%,而在運行速度上,FocusNet也是少有的在30 ms以內的實時檢測方法。
在公開數據集上,也測試了帶加權的 anchor box的損失函數的效果,其中PASCAL VOC包含22 136張圖的訓練集和 4 952張圖的測試集,COCO14包含82 081張圖的訓練集和40 137張圖的測試集。
結果見表5和表6。從表中可以看出,加權的anchor box損失函數在通用數據集上也能提升基線模型的目標檢測能力。

表5 PASCAL VOC 數據集實驗結果

表6 COCO14數據集實驗結果
無人冰柜是人工智能落地到傳統零售業中的一個重要實用場景,而其中的目標檢測是許多后續工作的先行任務,具有重要的意義。如何設計高效而又準確的識別模型是一個具有實際意義、非常值得研究的課題。
本文在單階段檢測模型YOLOv2的基礎上,針對無人冰柜場景的數據特點,提出了一種可維持高檢測速度,也顯著提升了模型對小目標檢測能力的框架FocusNet;同時也在YOLOv2模型的基礎上,提出了對損失函數的改進方法,并在無人冰柜數據集和通用數據集上均驗證了其有效性。
雖然目前的框架極大地提高了之前模型的準確率,但依然存在一些不足。目前的網絡結構由2部分組成,在網絡的訓練階段,需要先訓練粗粒度檢測網絡,得到粗粒度網絡的輸出后才能再對細粒度網絡進行訓練,沒有形成端到端的一體結構;另外一方面,額外增加的粗粒度網絡雖然計算復雜度不高,但仍會增加網絡的計算量,導致網絡的計算速度下降。如何設計端到端的網絡,進一步加速計算、提高精度,是下一個階段需要探索的目標。