目標測試是深度學習中的一種測試模型,目標測試模型可以識別一張圖片的多個物體,並可以定位出不同物體(給出邊界框)。
基本介紹
- 中文名:目標測試
- 套用領域:深度學習
- 套用場景:無人駕駛和安防系統
內容簡介,主要算法,性能指標,
內容簡介
圖像分類,檢測及分割是計算機視覺領域的三大任務。圖像分類模型是將圖像劃分為單個類別,通常對應於圖像中最突出的物體。但是現實世界的很多圖片通常包含不只一個物體,此時如果使用圖像分類模型為圖像分配一個單一標籤其實是非常粗糙的,並不準確。對於這樣的情況,就需要目標檢測模型,目標檢測模型可以識別一張圖片的多個物體,並可以定位出不同物體(給出邊界框)。目標檢測在很多場景有用,如無人駕駛和安防系統。
主要算法
主流的目標檢測算法主要是基於深度學習模型,其可以分成兩大類:(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數據集上的性能做了細緻對比。近期,Facebook的FAIR也開源了基於Caffe2的目標檢測平台Detectron,其實現了最新的Mask R-CNN,RetinaNet等檢測算法,並且給出了這些算法的Baseline Results 。不得不說,準確度(accuracy)和速度(speed)是一對矛盾體,如何更好地平衡它們一直是目標檢測算法研究的一個重要方向。
性能指標
目標檢測問題同時是一個回歸和分類問題。首先,為了評估定位精度,需要計算IoU(Intersection over Union,介於0到1之間),其表示預測框與真實框(ground-truth box)之間的重疊程度。IoU越高,預測框的位置越準確。因而,在評估預測框時,通常會設定一個IoU閾值(如0.5),只有當預測框與真實框的IoU值大於這個閾值時,該預測框才被認定為真陽性(True Positive, TP),反之就是假陽性(False Positive,FP)。
對於二分類,AP(Average Precision)是一個重要的指標,這是信息檢索中的一個概念,基於precision-recall曲線計算出來。對於目標檢測,首先要單獨計算各個類別的AP值,這是評估檢測效果的重要指標。取各個類別的AP的平均值,就得到一個綜合指標mAP(Mean Average Precision),mAP指標可以避免某些類別比較極端化而弱化其它類別的性能這個問題。
對於目標檢測,mAP一般在某個固定的IoU上計算,但是不同的IoU值會改變TP和FP的比例,從而造成mAP的差異。COCO數據集提供了官方的評估指標,它的AP是計算一系列IoU下AP的平均值,這樣可以消除IoU導致的AP波動。其實對於PASCAL VOC數據集也是這樣,Facebook的Detectron上的有比較清晰的實現。
除了檢測準確度,目標檢測算法的另外一個重要性能指標是速度,只有速度快,才能實現實時檢測,這對一些套用場景極其重要。評估速度的常用指標是每秒幀率(Frame Per Second,FPS),即每秒內可以處理的圖片數量。當然要對比FPS,你需要在同一硬體上進行。另外也可以使用處理一張圖片所需時間來評估檢測速度,時間越短,速度越快。