2019 年的目標檢測指南
目標檢測在影片監控、自動駕駛汽車、目標/人跟蹤等領域得到了廣泛的應用。在本文中,我們將瞭解目標檢測的基礎知識,並回顧一些最常用的演算法和一些全新的方法。
原標題 | A 2019 Guide to Object Detection
作 者 | Derrick Mwiti
翻 譯 | 林肯二百一十三(西安交通大學)、陳華Mark(武漢大學)、BBuf(西南科技大學)
編 輯 | Pita
目標檢測是一種為了檢測汽車、建築物和人類等目標物件的計算機視覺技術,這些物件通常可以透過圖片或影片來識別。
目標檢測在影片監控、自動駕駛汽車、目標/人跟蹤等領域得到了廣泛的應用。在本文中,我們將瞭解目標檢測的基礎知識,並回顧一些最常用的演算法和一些全新的方法。
目標檢測的工作原理
目標檢測會定點陣圖像中的物件,並在該物件周圍繪製一個包圍框。這過程通常分為兩步:目標分類並確定型別,然後在該物件周圍繪製一個框。我們之前已經討論過影像分類,現在讓我們來回顧一些用於目標檢測的常見模型架構:
-
R-CNN
-
Fast R-CNN
-
Faster R-CNN
-
Mask R-CNN
-
SSD(單點多框檢測器)
-
YOLO (You Only Look Once)
-
將目標視作一個點
-
用於目標檢測的資料增強策略
R-CNN 模型
該技術 結合 了兩種主要方法:將大容量卷積神經網路應用於自底向上的區域方案中,對目標進行定位和分割;有監督的預訓練。
檢視論文: 特徵層次結構豐富,可以精確的進行目標檢測和語義分割 ()
這是透過 domain-specific fine-tuning 來獲得高效能提升。由於將區域(Regional)劃分的 建議 與卷積神經網路相 結合 ,這篇論文的作者將該演算法命名為 R-CNN (具有 CNN 特徵的區域)。
論文連結:
該模型先基於圖片提取出大約2000個自底向上的候選區域。然後使用一個大型CNN模型計算每個候選區域的特徵向量。最後利用線性支援向量機 (SVMs)對每個區域進行分類。該模型在PASCAL VOC 2010( http ://host.robots.ox.ac.uk/pascal/VOC/voc2010/index.html)上的平均精度達到53.7%。
該模型的目標檢測系統實現由三個模組組成。第一個模組負責生成分類獨立的候選區域,這些區域是檢測可用的候選資料集。第二個模組是一個大型卷積神經網路CNN模型,負責從每個區域提取固定長度的特徵向量。第三個模組是多類別SVM分類器 。
論文連結:
該模型使用selective search方法來生成候選區域集。根據顏色、紋理、形狀和大小選擇 搜尋 相似的區域。在特徵提取方面,該模型採用4096維特徵向量,並將Caffe CNN實現應用於每個區域提案。將227×227 RGB影像透過5個卷積層和2個完全連通層進行正向傳播,計算特徵。本文所詮釋的模型與之前PASCAL VOC 2012的結果相比,取得了 30 %相關的效果改進。
R-CNN的一些缺點:
-
訓練是一個多階段的流程。對卷積神經網路進行目標 建議 最佳化,將svm與ConvNet特徵進行擬合,最後學習邊界框迴歸器。
-
模型訓練在空間佔用和時間消耗上代價都很高昂,因為VGG16這樣的深度網路佔用了大量的空間。
-
物件檢測比較慢,因為它對每個物件 建議 執行一個ConvNet轉發。
Fast R-CNN
下文提出了一種基於區域卷積網路的快速目標檢測方法(Fast R-CNN)。
檢視論文: 快速R-CNN ()
它是用Caffe透過Python和c++( .com /rbgirshick/fast-rcnn)實現的。該模型在PASCAL VOC 2012上的平均精度為66%,而R-CNN的平均精度為62%。
論文連結:
與R-CNN相比,Fast R-CNN具有:更高的平均精度值,單階段訓練特性,可更新所有網路層訓練的特性,並且它也不需要磁碟儲存來進行特徵快取。
在其架構中,一個 Fast R-CNN接收的影像既作為輸入也作為一組目標 建議 集。模型對影像進行卷積和最大池化處理,生成卷積特徵圖,透過針對每個區域 建議 的興趣池層區域從每個特徵圖中提取出固定層的特徵向量。
接下來,將特徵向量提供給完全連線的層,這些將分支成兩個輸出層,其中一個為多個物件類生成softmax機率估計,而另一個為每個物件類生成四個實值數字,而這4個數字就代表了每個物件包圍框的位置。
Faster R-CNN
檢視論文: 更快的 R-CNN:利用區域 建議 網路實現實時目標檢測 ()
本文提出了一種訓練機制,該機制可交替進行區域 建議 任務的微調和目標檢測的微調。
source:
Faster R-CNN模型由兩個模組組成:負責區域候選框生成的的深度卷積網路和使用產生的候選框的R-CNN檢測器。區域 建議 網路以影像為輸入,產生一系列矩形目標候選框。每個矩形目標框都有屬於某個類別的分數。
source:
Mask R-CNN
檢視論文: Mask R-CNN ()
本文提出的模型是上述Faster R-CNN體系結構的擴充套件,它還可以對人體姿勢進行估計。
圖源:
在這個模型中,目標透過標註的目標框和一個標註相同類別的畫素集合的語義分割標籤來對目標進行分類和定位。這個模型在Faster R-CNN的基礎上對每個感興趣區域新增了對分割掩膜的預測。Mask R-CNN產生兩個輸出:一個分類標籤和一個目標框。
SSD: 單點多框檢測器
這篇論文 ()提出了使用單個深度神經網路來對影像中的目標進行檢測的模型。該網路使用了應用於特徵對映的小卷積核為每個目標出現的區域進行打分。
來源:
這種方法使用一個前饋式卷積神經網路,產生了一個邊界框的集合以及對每個邊界框所屬類別進行打分。增加了卷積特徵層以允許網路能在多個尺度上進行特徵檢測。在這個網路模型中,每個特徵圖都和一組目標候選框相關聯。下面的影像展示了SSD512的模型在動物,交通工具和傢俱資料上進行目標檢測的表現。
來源:
YOLO (You Only Look Once)
You only look once,顧名思義,你只看一遍。這篇文章提出了一種使用單個神經網路一次執行即可預測物體邊框與類別機率的方法,是單階段目標檢測模型的代表之一(與Faster R-CNN為代表的兩階段目標檢測方法的區別)。
論文地址: You Only Look Once: Unified, Real-Time Object Detection()
YOLO 模型可以跑到每秒鐘45幀的實時速度。YOLO 把影像目標檢測視作迴歸問題,這使得它處理影像的流水線相當簡單,這也是它速度很快的主要原因。
YOLO 可以在不超過25秒延遲下實時處理影片流。在訓練過程中,YOLO看到的是整張影像,因此在目標檢測時可以考慮上下文資訊。
在YOLO中,每個物體邊框是使用整個影像的特徵預測出來的。每一個邊框的預測值有5個:x、y、w、h和置信度(confidence)。(x, y)代表邊框中心相對於每個網格的位置偏移,w和h代表物體相對於整張圖片的相對寬度和高度。
YOLO模型是使用卷積神經網路實現並在PASCAL VOC目標檢測資料集上進行訓練的。網路的卷積層用來提取特徵,之後的全連線層用於預測邊框座標和物體屬於各個類別的機率。
YOLO網路的架構設計受到了用於影像分類的GoogLeNet( 30 22)的啟發。網路又24個卷積層和兩個全連線層。YOLO模型的主要問題是它對每個網格僅能夠預測一個類別的物體,而且對較小的目標(比如鳥)的檢測效果較差。
譯者注 1: 很多朋友對YOLO“劃分網格”的操作不是很理解。請看上圖最右的一個方塊,這就是YOLO模型輸出的原始結果——一個shape為7×7× 30 的特徵圖。7×7是原始的416×416尺寸的影像透過經過一系列的卷積、下采樣和padding後得到的尺寸。換句話說,這7×7個網格各自對應著原圖中的某一個區域。卷積層的通道數為 30 意味著每一個網格被預測出了 30 個數值,這三十個數值分別是這個網格內預測的兩個候選框的(x, y, w, h, confidence)以及網格內物體可能屬於的20個類(PASCAL VOC資料集包含20個類別的物體)。讀者可能會疑惑:為什麼預測了兩個候選框卻只預測了一次類別機率呢?這也就是我們上文提到的YOLO的缺點了:它對每個網格,確實只能預測一個類別的物體。
YOLO在PASCAL VOC資料集上達到了63.4%的mAP,並且作者在原文中還提出了更小的版本——Fast YOLO。Fast YOLO在當時PASCAL資料集上最快的通用目標檢測器,而且達到了52.7%的mAP指標。
譯者注 2: 截至2019年7月,YOLO的作者還提出了兩個後續升級版本:YOLO9000(又稱YOLOv2)和YOLOv3。YOLO9000將網路主幹改為更快速的全卷積網路DarkNet-19,並引入了Faster R-CNN的anchor機制使得檢測效果更佳。YOLOv3改進了損失函式計算方式、引入了特徵金字塔並提出了高效的主幹網路DarkNet-53。目前YOLOv3已成為目標檢測最常用的演算法之一。
論文地址:YOLO9000: Better, Faster, Stronger()
YOLOv3: An Incremental Improvement( .com /media/files/papers/YOLOv3.pdf)
CenterNet:將目標視作點
論文地址: Objects as Points ()
這篇論文提出了一種將物體視作一個點的建模方式。它使用關鍵點估計來檢測物體的中心點,並對物體的其他屬性進行迴歸。這些屬性包括:3D位置,人體姿勢,朝向,尺寸等等。也就是說——使用CenterNet,物體的各種屬性也作為網路的輸出被一併迴歸出來。CenterNet成為了一種更快、更準確的基於邊框迴歸的目標檢測器。
譯者注 3: 有另一篇目標檢測論文與該論文幾乎同時釋出:CenterNet: Keypoint Triplets for Object Detection,其簡稱也是CenterNet。但本文提到的CenterNet都是指Objects as Points這篇工作。
那麼這些屬性究竟是如何迴歸得到的呢?在CenterNet模型中,原始影像被輸入網路並得到一個熱圖(置信圖),這個熱圖表示了可能存在物體中心的位置(熱值的峰極有可能是出現物體中心點的位置)。除了這個熱圖以外,CenterNet模型的輸出還有一些其他的通道,從各個通道取出置信圖的峰值處的值,即可得到網路對這個物體各種屬性值的預測。
CenterNet在COCO將目標檢測資料集上達到了45.1%的AP和1.4 fps的速度。下表為CenterNet與其他目標檢測器的效果對比。
用於目標檢測的資料增強策略
資料增強,即透過操作原始影像(如旋轉、縮放等)來獲得新的影像資料的過程。透過資料增強,往往可以達到更好的訓練效果。
論文地址: Learning Data Augmentation Strategies for Object Detection ()
這篇論文沒有提出新的模型結構,而是提出了一些可以遷移到其他目標檢測資料集上的影像變換策略,這些策略經常被用在目標檢測網路的訓練中。
在該論文的模型中,訓練時的增強策略包含N種操作。作者在模型中使用的增強方法包括改變顏色通道值、幾何變換或僅改變標註的物體邊框中的畫素。
透過在COCO資料集上的實驗,作者發現使用最佳化的資料增強策略可以在mAP指標(mean average precision)上得到2.3%的提升,使得單模型可以達到50.7%的mAP。
結論
透過閱讀本文,你應該已經對最近最常見的一般場景目標檢測方法有所瞭解了。
本文提到的一些論文中也包括他們的程式碼實現。各位不妨自己測試一下看看效果如何。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2653609/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 做目標檢測,這一篇就夠了!2019最全目標檢測指南
- 目標檢測
- 增加檢測類別?這是一份目標檢測的基礎指南
- 九、目標檢測
- 目標檢測---教你利用yolov5訓練自己的目標檢測模型YOLO模型
- 目標檢測面面觀
- 目標檢測之SSD
- 目標檢測綜述
- 28-目標檢測
- 目標檢測:二維碼檢測方案
- SSD 目標檢測 Keras 版Keras
- 目標檢測發展方向
- 目標檢測之YOLO系列YOLO
- 【目標檢測】R-CNNCNN
- 你要的2019最全目標檢測都在這裡啦!
- 深度學習之目標檢測與目標識別深度學習
- 大盤點 | 2019年4篇目標檢測演算法最佳綜述演算法
- 目標檢測相關論文
- 【目標檢測】Bounding Box Regression
- 深度學習之目標檢測深度學習
- 目標檢測:Segmentation is All You Need ?Segmentation
- 目標檢測資料集分析
- 2018目標檢測
- 目標檢測(Object Detection)總覽Object
- 目標檢測之RetinaNetNaN
- Object Detection(目標檢測神文)Object
- 不帶Anchors和NMS的目標檢測
- 0-目標檢測模型的基礎模型
- 目標檢測模型的評價標準-AP與mAP模型
- [AI開發]目標檢測之素材標註AI
- 目標檢測演算法學習演算法
- 目標檢測(一):LeNet-5
- 訓練一個目標檢測模型模型
- 運動目標檢測與跟蹤
- 目標檢測中的注意力機制
- 2019年學習目標
- CVPR 2019 | 天秤座R-CNN:全面平衡的目標檢測器CNN
- 目標檢測資料集,全部有標註