輕鬆識別小目標的物體檢測算法揭秘

2021-01-11 CSDN技術社區

 EasyDL是百度大腦的定製化模型訓練和服務平臺,用戶通過EasyDL可以低成本地訓練自己的深度學習模型,從而獲得效果優異的定製化AI服務。自上線以來,EasyDL的用戶規模和使用場景迅速增長,也收到了深度學習業內人士的讚賞和青睞。在眾多模型使用場景中,小目標物體的檢測比較常見,一般的目標檢測算法往往效果不理想;因此,EasyDL團隊針對小目標物體的檢測進行了專項優化,並取得了令人矚目的效果提升。

自AlexNet在2012年ImageNet比賽上展露頭角以來,計算機視覺各個方向和神經網絡的聯繫變得越發緊密,物體檢測也不例外。2014年的RCNN[1]是代表之一,它在傳統的Selective Search基礎上,利用AlexNet來提取特徵進行分類。隨後在2016年,完全依靠神經網絡完成端到端的識別和訓練的FasterRCNN[2]也同樣證明神經網絡在物體檢測任務上的巨大優勢。本文我們會先簡單介紹FasterRCNN的檢測方案,然後針對各種後續改進,尤其是小目標檢測的改進內容,進行分類介紹。

FasterRCNN檢測方案使用CNN網絡來提取特徵圖(feature map),然後在特徵圖的每個單元(cell)上基於錨框(anchor box)去做是否有物體的二分類任務,及物體相對於錨框位移的回歸任務。這個階段被稱作Region Proposal Network(RPN)。一些方法把這裡的二分類任務加上關心的類別直接完成整個檢測任務,如YoloV1[3],被稱為單階段(single stage)的檢測方法。

而FasterRCNN在RPN拿到候選框(Region of Interest, RoI)之後,會把特徵圖上所有候選框位置的區域摳出來,然後利用線性插值把它們調整到相同大小。這個操作被稱為RoI pooling。經過RoI pooling之後,原來特徵圖上的不同候選區都有了相同的大小,我們在後面去接卷積層和全連接層的頭部網絡(head network)就可以預測最終的物體類別和物體位置了。所以FasterRCNN被稱為兩階段(two stage)方法,RoI pooling就是連接這兩個階段的樞紐。

 

 

除了上面所說的主要網絡結構外,FasterRCNN還有一些重要的訓練和預測的細節:在準備訓練數據時,會先將真實的標註框和網絡錨框做匹配,匹配的原則是兩者的IoU要大於閾值(0.5),且IoU大者優先。由於會有大量的錨框匹配不到真實框,所以實際訓練時會對匹配不到真實框的負例錨框做採樣,保證它和匹配到真實框的正例錨框比例均衡。在第一階段和第二階段裡,一般分類的損失函數用交叉熵,框回歸的損失函數用Smooth L1。在RPN預測候選框和第二階段預測檢測框的時候,還會對輸出結果做非極大值抑制(NMS)以減少輸出框數,並過濾大部分的背景框。可以看到在FasterRCNN中包含主體的CNN網絡、錨框和RPN網絡、RoI pooling、分類和回歸損失函數、標註框和錨框匹配採樣、NMS等各個組件。

 

 

2016年,研究人員提出了SSD(Single Shot MultiBox Detector)[4]的單階段檢測模型,使得檢測的速度大大提升,並且精度更高。檢測速度提升來自於它去除了FasterRCNN裡的RoI pooling和第二個階段,因為當時還沒有GPU能實現高效的RoI pooling。精度的提升來自於它採用了不同尺度的多個特徵圖,如下圖所示。不同尺度的特徵圖上每個cell的感受野各有不同,因而更適合用來預測不同尺寸的物體。SSD仍然採用了錨框的方式(文章中稱為 default box),在6個不同尺寸的特徵圖上針對錨框做出預測,並對所有的預測結果做NMS後處理得到最終的預測框。在YoloV2[5]中,也採用了這種多尺度特徵圖的方式。

 

 

隨著檢測技術的發展,SSD模型也暴露了自己的缺點,雖然它利用多尺度特徵來預測不同尺寸的物體,但是對於小目標的檢測通常不佳。一般來說小目標的檢測結果來自最底層的特徵圖,比如上圖裡的Conv5_3 layer。但是它處於網絡的前幾層,提取的語義特徵並不豐富,可能沒辦法提取到物體的抽象特徵。因而學者們就如何將高層豐富的語義特徵融合進底層特徵圖進行了嘗試。2017年,有研究者提出了DSSD(Deconvolutional Single Shot Detector)[6],網絡結構如下圖。DSSD是在SSD的基礎上,加入了Deconvolution模塊,將高層語義信息豐富的特徵圖放大尺寸,然後和底層位置信息豐富的特徵圖相加,得到更好的特徵用來預測小目標的物體。

 

 

2017年的另一項工作FPN(Feature Pyramid Networks)[7]就更著名了,它的思路跟上面類似。作者啟發於在傳統物體檢測方法中,圖像金字塔是一個非常重要的手段,而且在深度學習方法流行之後多尺度的測試仍然能夠有效地提升檢測效果。而且SSD中多尺度特徵處理已經初步驗證了在CNN特徵層上做多尺度的有效性。FPN總體上分為兩個部分。第一個是自底向上的部分:如在ResNet的網絡裡不同大小的特徵圖會分為不同的stage,每個stage的最後一層特徵被選為相應級別(level)的特徵。第二個部分是自頂向下的過程和側向連接,它採用上採樣的方式將頂層的特徵圖放大到上一個級別特徵圖的大小,然後與之融合。融合後的特徵便擁有了底層特徵的位置信息和頂層特徵的語義信息,能夠更好地完成小目標檢測任務。FPN能夠流行的另一個原因是它應用場景非常廣泛,既能應用在兩階段的FasterRCNN中,也可以用在單階段檢測方法如RetinaNet[8]中,還可以應用在實例分割MaskRCNN[9]中。

 

 

-分割線

FPN雖然帶來了檢測效果上的提升,但也帶來了計算量更多的問題(額外的上採樣和跳層計算)。SNIP中的實驗發現基於更大解析度圖像(RetinaNet中通常訓練尺寸為(1333,800),此處放大至(2000, 1400))訓練的模型可以提高對小目標物體的檢測,但對中大物體的檢測反而會受到負面影響。訓練數據中那些尺寸非常大或非常小的object會影響訓練效果,因此這篇文章限定了不同尺寸的object在訓練過程中的梯度回傳。 

SNIP[10]借鑑了Multi-Scale Training(MST)的思想,multi-scale training/testing最早見於[11],訓練時,預先定義幾個固定的尺度,每個epoch隨機選擇一個尺度進行訓練。測試時,生成幾個不同尺度的feature map,對每個Region Proposal,在不同的feature map上也有不同的尺度,我們選擇最接近某一固定尺寸(即檢測頭部的輸入尺寸)的Region Proposal作為後續的輸入。在[12]中,選擇單一尺度的方式被Maxout(element-wise max,逐元素取最大【cascade rcnn中就是】)取代:隨機選兩個相鄰尺度,經過Pooling後使用Maxout進行合併,如下圖所示。

 

 

常見的是multi-scale training只是從多個尺度中隨機挑選一個尺度去訓練,實際中還是單個尺度的訓練。而multi-scale test則是對單張圖片進行預測後一起進入NMS階段。

在MST方法中,由於訓練數據中尺寸極大或極小的目標會影響實驗結果,因此SNIP的做法就是只對尺寸在指定範圍內的目標回傳損失(該範圍需接近預訓練模型的訓練數據尺寸);也就是說訓練過程實際上只是針對這些目標進行的,這樣就能減少domain-shift帶來的影響。又因為訓練過程採用了類似MST的做法,所以每個目標在訓練時都會有幾個不同的尺寸,那麼總有一個尺寸在指定的尺寸範圍內,因此很難出現漏掉目標的情況。

 

 

為了能對多尺度物體能進行更精準的識別並且能夠降低計算壓力,SNIPER[16]另闢蹊徑,對每個尺度大類下都維護一個重點關注區域(chips)。chips是圖片的某個scale上的一系列固定大小的(比如KxK個像素)的以恆定間隔(比如d個像素)排布的小窗(window),每個window都可能包含一個或幾個objects。

 

 

從原圖也可以看出,原圖中有一大部分的背景區域(沒被postive chip覆蓋的區域)被丟棄了,而且實際上網絡真正輸入的是chip(比原圖解析度小很多),這對於減少計算量來說很重要。這個地方很巧妙,在不同的scale上截取相同大小的chip,而且包含的是不完全相同的目標。這個方式很接近RCNN。對較小的目標起到一種zoom in的作用,而對較大的目標起到一種zoom out的作用。而對於網絡來說,輸入的還是固定大小的chip,這樣的結構更加接近於分類問題網絡的拓撲。由於訓練時使用的是較低解析度的chip,SNIPER能夠擺脫對較高解析度圖像的依賴。所以batch也可以做的很大,比如可以做到每張卡20的batch。

目前主流的目標檢測方法大體分為兩類:single-stage和two-stage。然而還有另一類方法,雖然不是主流,但依然能取得SOTA的性能,這就是anchor-free的方法,代表算法有CornerNet、ExtremeNet、FSAF(CVPR2019)等。Anchor free based method一般採用bottom-up的思路,先生成帶有類別信息和位置信息的feature map。CornerNet[13]顧名思義,預測左上角和右下角來得到最後的bounding boxes。所以最基本的需要兩個feature map表示對應的Corner,文中稱為heatmap。如下圖所示,兩個heatmap分別表示top-left(左上角)和bottom-right(右下角)的corner,作者借鑑Associative Embedding method(NIPS2017)利用了兩個embedding層做grouping操作,將屬於同一個object的corner聚合都一起得到最後的bounding box。

 

 

模型的整體結構如下圖,backbone採用hourglass network以得到高質量的feature map,接兩個分支分別預測top-left Corner 和bottom-right Corner,兩個分支的結構完全一樣。

 

 

CornerNet-Lite[14]是CornerNet兩種變形的組合:一個是CornerNet-Saccade,基於attention機制,從而並不需要對圖片中的每個像素做詳盡的處理。另一個是CornerNet-Squeeze,引入了新的複雜的backbone結構。結合這兩個變形可以應用到兩個重要情景中:在不降低準確率的情況下挺高效率,同時,在實時檢測過程中提高了準確率,CornerNet-Saccade即適合做離線處理,也適用於實時的檢測。

CornerNet-Saccade通過減少處理的像素的個數來提高inference的效率。利用一種類似於人眼掃視的注意力機制,首先經過一個下採樣後的輸入圖片,生成一個attention map,然後再將其進行放大處理,接著進行後續模型的處理。這與之前原始的CornerNet在不同尺寸上使用全卷積是有區別的,CornerNet-Saccade通過選擇一系列高解析度的裁剪圖來提高效率及準確率。

CornerNet-Squeeze通過減少每個像素的處理過程來加速inference,其結合了SqueezeNet及MobileNet的思想,同時,引入了一個新的backbone hourglass,利用了1x1的卷積,bottleneck層及深度分離卷積。

CornerNet珠玉在前,目標檢測問題變成了一個標準的關鍵點估計問題。我們僅僅將圖像傳入全卷積網絡,得到一個熱力圖,熱力圖峰值點即中心點,每個特徵圖的峰值點位置預測了目標的寬高信息。模型訓練採用標準的監督學習,推理僅僅是單個前向傳播網絡,不存在NMS這類後處理。

 

 

CenterNet[15]相比較傳統目標檢測而言(縮放16倍尺度),使用更大解析度的輸出特徵圖(縮放了4倍)因此更有利於小目標檢測。測試時可以使用flip增強,multiscale test增強的方式。其中flip的方式是直接將最後一層的feature map進行融合,MST則是通過nms的方式進行整合。

直觀上,當我們看到一幅圖片時,我們首先關注的是圖像中比較醒目的影像。一般來說,這些醒目的影像往往在圖中所佔的比例比較大,而比例較小的目標往往會被我們忽略。數據集中也存在這種情況,很多圖像中包含的小物體並沒有被標出。另外,小目標所在區域較小,在提取特徵的過程中,其提取到的特徵也會非常少,這些都不利於我們對小目標的檢測。

[17]通過分析COCO數據集,可以發現大部分的小目標都集中在一些少量的圖片中。這就導致在訓練的過程中,模型有一半的時間是學習不到小目標的特性的。另外,對於小目標,平均能夠匹配的anchor數量為1個,平均最大的IoU為0.29,這說明很多情況下,有些小目標是沒有對應anchor的,或者對應的anchor非常少,且即使有對應的anchor,他們的IoU也比較小,平均最大的IoU也才0.29。有如下兩種改進方法:

1)對於數據集中含有小目標圖片較少的情況,使用過度採樣(oversample)的方式,即多次訓練這類樣本。

2)對於第二類問題,則是對於那些包含小物體的圖像,將小物體在圖片中複製多分,在保證不影響其他物體的基礎上,人工增加小物體在圖片中出現的次數,提升被anchor包含的概率。

 

 

目標檢測近兩年的進展放緩,但仍然有很多值得關注、值得深究的地方。結合現實條件來看,目標檢測在實際運用場景中仍有很多優化空間。百度大腦EasyDL也將持續把更多與場景結合的、深入優化預訓練的模型開放給用戶,加速推動AI的產業落地。

 

參考文獻

[1]. Ross Girshick, 2014, Rich feature hierarchies for accurate object detection and semantic segmentation

[2]. Shaoqing Ren, 2016, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

[3]. Joseph Redmon, 2015, You only look once: Unified, real-time object detection

[4]. Wei Liu, 2016, SSD: Single Shot MultiBox Detector

[5]. Joseph Redmon, 2016, YOLO9000: Better, Faster, Stronger Joseph

[6]. Cheng-Yang Fu, 2017, DSSD : Deconvolutional Single Shot Detector

[7]. Tsung-Yi Lin, 2017, Feature Pyramid Networks for Object Detection

[8]. Tsung-Yi Lin, 2018, Focal Loss for Dense Object Detection

[9]. Kaiming He, 2018, Mask R-CNN

[10]. An Analysis of Scale Invariance in Object Detection – SNIP

[11].Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

[12].Object Detection Networks on Convolutional Feature Maps

[13].CornerNet: Detecting Objects as Paired Keypoints

[14].CornerNet-Lite: Efficient Keypoint Based Object Detection

[15].CenterNet :Objects as Points

[16].SNIPER: Efficient Multi-Scale Training

[17].Augmentation for small object detection

原文連結:http://www.tianjing.77o.cn/tjnews/20190909/338917.html?tdsourcetag=s_pcqq_aiomsg

【免責聲明:CSDN本欄目發布信息,目的在於傳播更多信息,豐富網絡文化,稿件僅代表作者個人觀點,與CSDN無關。其原創性以及中文陳述文字和文字內容未經本網證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本網不做任何保證或者承諾,請讀者僅作參考,並請自行核實相關內容。凡註明為其他媒體來源的信息,均為轉載自其他媒體,轉載並不代表本網贊同其觀點,也不代表本網對其真實性負責。您若對該稿件由任何懷疑或質疑,請即與CSDN聯繫,我們將迅速給您回應並做處理。】

相關焦點

  • 乾貨| 算法工程師入門第三期——黃李超講物體檢測
    本期地平線深度學習算法工程師黃李超將為大家帶來物體檢測相關內容的分享,全文約8000字,建議閱讀時間20分鐘,歡迎轉發或收藏。它對應計算機視覺裡面幾類基本問題:一個是做圖像識別,即解決是什麼(what),另一個是物體定位,即在哪裡(where)。這裡還需要提一下「圖像語意分割」這個概念,它是一個像素級別的物體識別,即每個像素點都要判斷它的類別。它和檢測的區別是,物體檢測是一個物體級別的,他只需要一個框,去框住物體的位置,而通常分割是比檢測要更難的問題。
  • YOLO,一種簡易快捷的目標檢測算法
    YOLO全稱You Only Look Once,是一個十分容易構造目標檢測算法,出自於CVPR2016關於目標檢測的方向的一篇優秀論文(https://arxiv.org/abs/1506.02640 ),本文會對YOLO的思路進行總結並給出關鍵代碼的分析,在介紹YOLO前,不妨先看看其所在的領域的發展歷程。
  • 人工智慧的識別,原來這麼簡單,隱藏的物體不需要視覺也可以識別
    許多人工智慧很難檢測到偽裝的物體是因為它們的算法依賴於視覺線索無論是對人類還是人工智慧來說,去識別發現偽裝的物體都具有一定難度。但是現在,人工智慧通過訓練,可以從背景中分析出隱藏的物體。這項技術未來可用於許多方面,例如搜索救援工作、檢測農業害蟲、醫學成像或軍事環境。
  • 「少即是多」的目標檢測算法Sparse R-CNN
    近幾年來,目標檢測算法發展迅速,許多新出現的目標檢測範式有著很強的相同之處,如Anchor-Free的方法中不依賴於Anchor的目標檢測範式:CenterNet兼有結構簡單和高的準確率;FCOS創新性目標檢測思路。
  • 怎樣在樹莓派上輕鬆實現深度學習目標檢測?
    翻譯 | 小哥哥  狒狒      校對 | 老趙     整理 | 凡江這個現實世界造成了很多挑戰,比如數據有限、只有微型的計算機硬體(像手機、樹莓派)所造成的無法運行複雜深度學習模型等。這篇文章演示了如何使用樹莓派來進行目標檢測。就像路上行駛的汽車,冰箱裡的橘子,文件上的籤名和太空中的特斯拉。
  • 基於卷積神經網絡的目標檢測算法簡介
    什麼是目標檢測?目標檢測的主要任務是從圖像中定位感興趣的目標,需要準確判斷每個目標的具體類別,並給出每個目標的邊界框。2. 實現目標檢測需要哪些步驟?目標檢測算法的研究難點在哪?主要是兩個方面。第一,特徵提取,即如何提高特徵的表達能力和抗形變能力。第二,特徵分類,即如何提高分類器的準確度和速度。3. 為什麼說使用設計的特徵存在缺點?
  • 基於PVANet卷積神經網絡模型的交通標誌識別算法
    結果表明, 所構建的卷積神經網絡具有優秀的小目標物體檢測能力, 相應的交通標誌檢測算法可以實現較高的準確率。 計算機目標檢測是指計算機根據視頻、圖像信息對目標物體的類別與位置的檢測, 是計算機視覺研究領域的基本內容。隨著硬體和軟體技術的發展, 尤其是基於卷積神經網絡目標檢測算法的普及應用, 計算機目標檢測的準確率及速度都有了很大提高[1]。
  • 做目標檢測,這6篇就夠了:CVPR 2020目標檢測論文盤點
    CVPR 2020 會議上,有哪些目標檢測論文值得關注?目標檢測是計算機視覺中的經典問題之一。憑藉大量可用數據、更快的 GPU 和更好的算法,現在我們可以輕鬆訓練計算機以高精度檢測出圖像中的多個對象。前不久結束的 CVPR 2020 會議在推動目標檢測領域發展方面做出了一些貢獻,本文就為大家推薦其中 6 篇有價值的目標檢測論文。
  • 基於DSP+FPGA的紅外圖像小目標檢測系統設計
    一般說來,由於小目標距離較遠,因而在成像系統中表現為微弱特性,並且沒有形狀和結構特徵或特徵不明顯。同時,由於高於絕對零度的物體均有紅外輻射能力,所以自然界中的幹擾源很多,很難準確地檢測出真正的目標。 本文在數學形態學Top-hat算子對於目標檢測的基礎上,設計了一種基於DSP+FPGA的圖像實時處理系統,使其能夠滿足高速採樣數據流快速存取,快速運算的要求。
  • 曠視科技 CSG 算法負責人姚聰:深度學習時代的文字檢測與識別技術...
    比如拍照包含文字的圖像存在噪聲、模糊、非均勻光照(強反光、陰影)、低解析度、局部遮擋等問題,對算法的檢測和識別也是是非常大的挑戰。 深度學習方法相較於相較於傳統方法而言,會從通用物體語義分割和目標檢測算法中汲取靈感。比如科曠視科技 2015 年有一個工作,稱之為 Holistic Multi-Channel Prediction。
  • 大盤點|性能最強的目標檢測算法
    本文便對mAP最高的目標檢測算法進行了盤點。趁最近目標檢測(Object Detection)方向的論文更新較少,趕緊做個"最強目標檢測算法"大盤點。要知道衡量目標檢測最重要的兩個性能就是 精度和速度,特指mAP 和 FPS。
  • 深度學習與圖像識別 圖像檢測
    傳統的BP算法針對高維的數據也是效果不佳。 CNN等為什麼對圖像領域更加有效,因為其不但關注了全局特徵,更是利用了圖像識別領域非常重要的局部特徵,應該是將局部特徵抽取的算法融入到了神經網絡中。圖像本身的局部數據存在關聯性,而這種局部關聯性的特徵是其他算法無法提取的。
  • 使用PyTorch實現目標檢測與跟蹤
    重磅乾貨,第一時間送達 引言 在昨天的文章中,我們介紹了如何在PyTorch中使用您自己的圖像來訓練圖像分類器,然後使用它來進行圖像識別。本文將展示如何使用預訓練的分類器檢測圖像中的多個對象,並在視頻中跟蹤它們。
  • 目標檢測與行為跟蹤 智能分析三大應用
    1目標檢測技術  傳統視頻監控系統只提供視頻的捕獲、保存、傳輸、顯示畫面等功能,而視頻內容的分析識別等需要人工實現,工作量巨大且容易出錯。智能監控系統是指在特定的監控區域內實時監控場景內的永久或是臨時的物體,通過對視頻傳感器獲取的信息進行智能分析來實現自動的場景理解、預測被觀察目標的行為以及交互性行為。
  • 香港中文大學陳愷:物體檢測算法的近期發展及開源框架介紹 | 大...
    雷鋒網 AI 科技評論按:物體檢測是計算機視覺的基礎任務之一。香港中文大學多媒體實驗室博士生陳愷在 AI 研習社的公開課上,為大家總結了深度學習背景下物體檢測算法的發展,分享 COCO 比賽冠軍團隊所使用的算法,並介紹由港中大多媒體實驗室開源的物體檢測算法框架 mmdetection。
  • 整合全部頂尖目標檢測算法:FAIR開源Detectron
    昨天,Facebook AI 研究院(FAIR)開源了 Detectron,業內最佳水平的目標檢測平臺。,我們比較熟悉的就是 Mask R-CNN,它是在 Faster R-CNN 上的擴展,即在用於邊界框識別的分支上添加了一個並行的分支以預測目標掩碼。
  • 激動~這是我看到的最好的目標檢測RCNN了!
    目標檢測是近年來理論和應用的研究熱點,它是圖像處理和計算機視覺學科的重要分支,也是智能監控系統的核心部分,同時目標檢測也是泛身份識別領域的一個基礎性算法,對後續的人臉識別、步態識別、人群計數、實例分割等任務起著至關重要的作用。
  • Facebook開源物體識別工具Detectron,加速計算機視覺研究
    Detectron系統實現了最先進的物體檢測算法,包括Mask R-CNN。 它是用Python編寫的,支持Caffe2深度學習框架。就在2天前,紐約大學教授Yann LeCun剛剛宣布卸任Facebook人工智慧實驗室(FAIR)主任,並擔任AI首席科學家。
  • 基於RCNN的多層次結構顯著性目標檢測方法
    在現有的基於傳統特徵的自動駕駛中,目標識別是核心任務之一,其包括道路及道路邊沿識別、車道線檢測、車輛識別、車輛類型識別、非機動車識別、行人識別、交通標誌識別、障礙物識別與避讓等等。目標識別系統利用計算機視覺觀測交通環境,從實時視頻信號中自動識別出目標,為實時自動駕駛,如啟動、停止、轉向、加速和減速等操作提供判別依據。
  • 基於尺度-時間網格的視頻中物體檢測算法,解決如何優化和平衡視頻...
    基於尺度-時間網格的視頻中物體檢測算法,解決如何優化和平衡視頻物體檢測中精度和速度的難題 李倩 發表於 2018-06-07 17:48:43 在物體檢測與識別領域,香港中文大學-商湯科技聯合實驗室在CVPR