1. 程式人生 > >[深度學習]Object detection物體檢測之概述

[深度學習]Object detection物體檢測之概述

一、Object detection物體檢測與其他計算機視覺問題的區別與聯絡
在這裡。有必要解釋一下幾大計算機視覺問題的區別與聯絡。說起物體檢測是,那是計算機視覺之中一個比較熱門的問題。

而它與影象識別classification的區別在於,影象識別classification提供了localization的定位操作物體檢測則是包括了定位和分類的兩個任務。在現實世界中我們更多的能使用到物體檢測的技術,因為拍攝的照片都是帶有很高複雜性的,可能存在多個目標物體。而識別classification任務只能識別比較顯著的一個,物體檢測任務則能識別多個。

從物體檢測更進一步,我們不僅希望在影象中找到物件,而且還要找到每個檢測到的物件每個的畫素掩碼,這個問題稱為實例分割Instance Segmentation

二、 Object detection物體檢測的資料集
1. PASCAL Visual Object Classification (PASCAL VOC) 是一個比較老的資料集,從05年~12年PASCAL VOC資料集一直舉辦計算機視覺的比賽,分為八個不同類別的比賽,包括object detection, classification, segmentation等等。雖然只有二十個分類,它依然是object detection的重要參考資料。

2.自2013年以來,ImageNet釋出了一個帶有邊界框的物件檢測資料集。訓練資料集由大約500 000個僅用於訓練的影象和200個類別組成。這個資料集很少被使用因為需要很高的算力,而且太多的分類對detection任務不利。

3.另一方面, Common Objects in COntext (COCO) 資料集中的公共物件由Microsoft開發。該資料集用於多種挑戰:

字幕生成,物件檢測,關鍵點檢測和物件分割。COCO物件檢測挑戰,包括使用邊界框本地化影象中的物件,並將它們中的每一個分類在80個類別之間。資料集每年都在變化,但通常由超過120,000張用於訓練驗證的影象組成,還有超過40 000張影象用於測試

三、 Object detection物體檢測的效能指標
1. Intersection over Union (IoU) 交併比

簡單點說,這個度量模型選擇的候選框和實際框之間重疊的部分,也就代表了模型選擇的候選框的精度,它是一個介於0~1的數值,通常在實際之中會設定一個閾值,把沒有達到iou閾值的候選框捨去。最常用的閾值是0.5,即如果loU>0.5,則認為是真實的檢測(true detection),否則認為是錯誤的檢測(false detection)。

MAP=所有類別的平均精度求和除以所有類別 
即資料集中所有類的平均精度的平均值。下面是圖解iou和公式。

2.mean Average Precision (mAP)
要知道什麼是mAP,首先要對一些常見的分類指標有個初步的瞭解,比如precision和recall。

在二進位制分類中,平均精度(AP)度量是precision-recall曲線的摘要,而MAP=(所有類別的平均精度求和)除以(所有類別),即資料集中所有類的平均精度的平均值。取平均意味著mAP避免了在某些類別檢測很強,某些類別檢測很弱。更詳細的解釋可以檢視這裡https://towardsdatascience.com/what-is-map-understanding-the-statistic-of-choice-for-comparing-object-detection-models-1ea4f67a9dbd

通常針對固定的IoU計算mAP,但是大量的邊界框可以增加候選框的數量。

COCO挑戰已經制定了一個官方指標,以避免過度生成候選框。它計算變數IoU值的mAP的平均值,以便懲罰具有錯誤分類的大量候選框。

三、Object detection物體檢測的主要演算法
1.傳統的目標檢測演算法
Cascade + HOG/DPM + Haar/SVM以及上述方法的諸多改進、優化等等。

2.深度學習演算法
目前主流的目標檢測演算法主要是基於深度學習模型,其可以分成兩大類:

(1)two-stage檢測演算法
將檢測問題劃分為兩個階段,首先產生候選區域(region proposals),然後對候選區域分類(一般還需要對位置精修),這類演算法的典型代表是基於region proposal的R-CNN系演算法,如R-CNN,Fast R-CNN,Faster R-CNN等;

(2)one-stage檢測演算法
不需要region proposal階段,直接產生物體的類別概率和位置座標值,比較典型的演算法如YOLO和SSD。

目標檢測模型的主要效能指標是檢測準確度和速度,對於準確度,目標檢測要考慮物體的定位準確性,而不單單是分類準確度。一般情況下,two-stage演算法在準確度上有優勢,而one-stage演算法在速度上有優勢。不過,隨著研究的發展,兩類演算法都在兩個方面做改進。Google在2017年開源了TensorFlow Object Detection API,並對主流的Faster R-CNN,R-FCN及SSD三個演算法在MS COCO資料集上的效能做了細緻對比(見Huang et al. 2017),如下圖所示。Facebook的FAIR也開源了基於Caffe2的目標檢測平臺Detectron,其實現了最新的Mask R-CNN,RetinaNet等檢測演算法,並且給出了這些演算法的Baseline Results 。

參考文章:

Review of Deep Learning Algorithms for Object Detection 
Deep Learning for Object Detection: A Comprehensive Review
一文讀懂目標檢測:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD