論文名稱:CornerNet-Lite: Efficient Keypoint Based Object Detection
論文鏈接:https://arxiv.org/abs/1904.08900
代碼鏈接:https://github.com/princeton-vl/CornerNet-Lite
簡介
該論文與Cornernet論文作者相同,都是由普林斯頓大學的幾位學者提出。截止2019年4月份,CornerNet-Lite 應該是目標檢測(Object Detection)中速度和精度trade-off的最佳算法。在精度上超越原來的Cornernet(速度是原來的6倍),在實時檢測器領域無論是速度還是精度都超越yolov3(34.4% AP at 34ms for CornerNet-Squeeze compared to 33.0% AP at 39ms for YOLOv3 on COCO)。
CornerNet-Lite是CornerNet的兩種有效變體的組合:CornerNet-Saccade和CornerNet-Squeeze,前者使用注意機制(attention)消除了對圖像的所有像素進行處理的需要,將cornernet單階段檢測器變為兩階段檢測器,attention maps作用類似與fasterrcnn中的rpn但又有所不同,將roi區域crop下來進行第二階段的精細檢測,該網絡與cornernet相比達到精度提升;后者引入新的緊湊骨干架構的CornerNet-Squeeze,主干網絡實為hourglass network、mobilenet、squeezenet結構的變體,在實時檢測器領域達到速度和精度的雙重提升。具體比較可看下圖figure1:
CornerNet-Saccade
人類視覺中的 Saccades(掃視運動)是指用於固定不同圖像區域的一系列快速眼動。在目標檢測算法中,我們廣義地使用該術語來表示在推理期間選擇性地裁剪(crop)和處理圖像區域(順序地或並行地,像素或特征)。
R-CNN系列論文中的saccades機制為single-type and single-object,也就是產生proposal的時候為單類型(前景類)單目標(每個proposal中僅含一個物體或沒有),AutoFocus論文中的saccades機制為multi-type and mixed(產生多種類型的crop區域)
CornerNet-Saccade中的 saccades是single type and multi-object,也就是通過attention map找到合適大小的前景區域,然后crop出來作為下一階段的精檢圖片。CornerNet-Saccade 檢測圖像中可能的目標位置周圍的小區域內的目標。它使用縮小后的完整圖像來預測注意力圖和粗邊界框;兩者都提出可能的對象位置,然后,CornerNet-Saccade通過檢查以高分辨率為中心的區域來檢測目標。它還可以通過控制每個圖像處理的較大目標位置數來提高效率。具體流程如下圖figure2所示,主要分為兩個階段估計目標位置和檢測目標:
估計目標位置(Estimating Object Locations)
CornerNet-Saccade第一階段通過downsized圖片預測attention maps和coarse bounding box,以獲得圖片中物體的位置和粗略尺寸,這種降采樣方式利於減少推理時間和便於上下文信息獲取。
流程細節為首先將原始圖片縮小到兩種尺寸:長邊為255或192像素,192填充0像素到255,然后並行處理。經過hourglass network(本文采用hourglass-54,由3個hourglass module組成),在hourglass-54的上采樣層(具體在哪個hourglass module的上采樣層論文中在3.5 Backbone Network部分有所提及,也就是最后一個module的三個上采樣層,具體有待后期源碼解析)預測3個attention maps(分別接一個3 × 3 Conv-ReLU module和一個1 × 1 Conv-Sigmoid module),分別用於小(小於32)中(32-96之間)大(大於96)物體預測,預測不同大小尺寸便於后面crop的時候控制尺寸(finer尺度預測小物體,coarser尺度預測大物體),訓練時使用α = 2的focal loss,設置gt bbox的中點為positive,bbox其余為負樣本,測試時大於閾值t=0.3的生成物體中心位置。
檢測目標(Detecting Objects)
Crop區域的獲取:
CornerNet-Saccade第二階段為精檢測第一階段在原圖(高分辨率下)crop區域的目標。
從Attention maps獲取到的中心位置(粗略),可以根據物體尺寸選擇放大倍數(小物體放大更多),ss>sm>sl,ss=4,sm=2,sl=1,在每個可能位置(x,y),放大downsized image si倍,i根據物體大小從{s,m,l}中選擇,最后將此時的downsized image映射回原圖,以(x,y)為中心點取255×255大小為crop區域。
從coarse bounding box獲取的位置可以通過邊界框尺寸決定放大尺寸,比如邊界框的長邊在放大后小物體應該達到24,中物體為64,大物體為192。
處理效率提升:1、利用gpu批量生成區域2、原圖保存在gpu中,並在gpu中進行resize和crop
最終檢測框生成以及冗余框消除:
最終的檢測框通過CornerNet-Saccade第二階段的角點檢測機制生成,與cornernet中完全一致(不明確的小伙伴可以查看我另一篇cornernet算法筆記),最后也是通過預測crop區域的corner heatmaps, embeddings and offsets,merge后坐標映射回原圖。
算法最后采用soft-nms消除冗余框,soft-nms無法消除crop區域中與邊界接觸的檢測框,如下圖figure3(這種檢測框框出來的物體是不完整的,並與完整檢測框iou較小,因此需要手工消除),可以在程序中直接刪除該部分框。
其他:
精度和效率權衡:
根據分數排列第一階段獲取到的物體位置,取前Kmax個區域送入第二階段精檢測網絡
抑制冗余目標位置:
當物體接近時,如下圖figure4中的紅點和藍點所代表的人,會生成兩個crop區域(紅框和藍框),作者通過類nms處理此類情況,首先通過分數排序位置,然后取分數最大值crop區域,消除與該區域iou較大的區域。
骨干網絡:
本文提出由3個hourglass module組成的Hourglass-54作為主干網絡,相比cornernet的hourglass-104主干網絡(2個hourglass module)更輕量。下采樣步長為2,在每個下采樣層,跳連接,上采樣層都有一個殘差模塊,每個hourglass module在下采樣部分縮小三倍尺寸同時增加通道數(384,384,512),module中部的512通道也含有一個殘差模塊。
訓練細節:
在4塊1080ti上使用batch size為48進行訓練,超參與cornernet相同,loss function優化策略也是adam。
CornerNet-Squeeze
與專注於subset of the pixels以減少處理量的CornerNet-Saccade相比,而CornerNet-Squeeze 探索了一種減少每像素處理量的替代方法。在CornerNet中,大部分計算資源都花在了Hourglass-104上。Hourglass-104 由殘差塊構成,其由兩個3×3卷積層和跳連接(skip connection)組成。盡管Hourglass-104實現了很強的性能,但在參數數量和推理時間方面卻很耗時。為了降低Hourglass-104的復雜性,本文將來自SqueezeNet和MobileNets 的想法融入到輕量級hourglass架構中。
主要操作是:受SqueezeNet啟發,CornerNet-Squeeze將 residual block 替換為SqueezeNet中的 Fire module,受MobileNet啟發,CornerNet-Squeeze將第二層的3x3標准卷積替換為3x3深度可分離卷積(depth-wise separable convolution)
具體如下表table1所示:(由於時間關系,這里對Fire module和depth-wise separable convolution不做詳述,可自行查找SqueezeNet和MobileNet相關論文,CornerNet-Squeeze網絡架構細節以及參數計算量推算也不展開,博主可能將在后續的源碼解析中進行分析)
訓練細節:
超參設置與cornernet相同,由於參數量減少,可以增大訓練batch size,batch size of 55 on four 1080Ti GPUs (13 images on the master GPU and 14 images per GPU for the rest of the GPUs).
實驗
開源代碼是基於PyToch1.0.0,在COCO數據集上進行測試。測試硬件環境為:1080ti GPU + Intel Core i7-7700k CPU。
One-stage 算法性能比較如上圖figure6,其中log scale博主認為是不同檢測器的速度與精度權衡條件,比如CornerNet-Saccade可以為Kmax(crop區域數)
上表table2對比CornerNet和CornerNet-Saccade訓練效率,可以看出在gpu的內存使用上節省了將近60%。
上表table3表明attention maps對於預測准確性的重要性,可以看出將attention maps用gt替代,ap值得到很大提升。
上表table4為表明主干網絡hourglass-54相比hourglass-104的性能提升,以及它對於attention maps預測的意義。
上表table5是CornerNet-Squeeze與yolov3對比,可以看出無論是python還是效率更高的C版本yolo都弱於CornerNet-Squeeze
上表table6為CornerNet-Squeeze的消融實驗。
上表table7中證明無法將本論文中的兩種網絡機制聯合,原因是CornerNet-Squeeze沒有足夠的能力提供對CornerNet-Saccade貢獻巨大的attention maps的預測。
上表table8表明本文中的兩種網絡架構,CornerNet-Squeeze在精度和速度方面對標YOLOv3完勝,CornerNet-Saccade主要在精度方面對標CornerNet完勝(速度意義不大)。
總結
本論文主要提出兩種CornerNet的改進方法,並在速度和精度方面取得較大意義,分別對標之前的CornerNet和YOLOv3(不熟悉CornerNet的同學無法理解本篇博文,建議查看博主另一篇CornerNet算法筆記),與此同時的另一篇基於CornerNet關鍵點的arXiv論文(2019.04)Centernet(https://arxiv.org/abs/1904.08189)提出Keypoint Triplets思想也對Cornernet進行優化,達到目前單階段目標檢測器最高精度(47.0%)。接下來我將對該論文進行總結。