基礎知識 | 對目標檢測認識及理解


摘要:本文就目標檢測算法的基礎知識進行簡要綜述,方便大家學習查看。

圖片分類任務我們已經熟悉了,就是算法對其中的對象進行分類。而今天我們要了解構建神經網絡的另一個問題,即目標檢測問題。這意味着,我們不僅要用算法判斷圖片中是不是一輛汽車,還要在圖片中標記出它的位置,用邊框或紅色方框把汽車圈起來,這就是目標檢測問題。本文就目標檢測算法的基礎知識進行簡要綜述,方便大家學習查看。

目標檢測基礎知識

網絡的階段之分

  • 雙階段(two-stage):第一級網絡用於候選區域提取;第二級網絡對提取的候選區域進行分類和精確坐標回歸,例如RCNN系列。
  • 單階段(one-stage):掘棄了候選區域提取這一步驟,只用一級網絡就完成了分類和回歸兩個任務,例如YOLO和SSD等。

單階段網絡為何不如雙階段的原因

因為訓練中的正負例不均衡。

  • 負例過多,正例過少,負例產生的損失完全淹沒了正例;
  • 大多數負例十分容易區分,網絡無法學習到有用信息。如果訓練數據中存在大量這樣的樣本,將導致網絡難以收斂。

雙階段網絡如何解決訓練中的不均衡

  • 在RPN網絡中,根據前景置信度選擇最有可能的候選區域,從而避免大量容易區分的負例。
  • 訓練過程中根據交並比進行采樣,將正負樣本比例設為1:3,防止過多負例出現。

常見數據集

Pascal VOC數據集

分為2007和2012兩個版本,其提供的數據集里包含了20類的物體。

PASCALVOC的主要5個任務:

  • ①分類:對於每一個分類,判斷該分類是否在測試照片上存在(共20類);
  • ②檢測:檢測目標對象在待測試圖片中的位置並給出矩形框坐標(boundingbox);
  • ③分割:對於待測照片中的任何一個像素,判斷哪一個分類包含該像素(如果20個分類沒有一個包含該像素,那么該像素屬於背景);
  • ④人體動作識別(在給定矩形框位置的情況下)
  • ⑤LargeScaleRecognition(由ImageNet主辦)

導入圖像對應的.xml文件,在標注文件中的每一幅圖像的每一個目標,對應一個體dict

  • 屬性'boxes'
  • 屬性'gt_classes'
  • 屬性'gt_overlaps'
  • 屬性'flipped'
  • 屬性'seg_areas'

CoCo 數據集

分為2014、2015、2017 三個版本

在annotations文件夾中對數據標注信息進行統一管理。例如,train2014的檢測與分割標注文件為instances_train2014.json

objectinstances(目標實例)、objectkeypoints(目標關鍵點)、imagecaptions(看圖說話)三種類型的標注

常見評價指標

  • True positives(TP):被正確的划分到正例的個數,即實際為正例且被划分為正例的實例數。
  • False positives(FP):被錯誤地划分為正例的個數,即實際為負例但被划分為正例的實例數。
  • False negatives(FN):被錯誤的划分為負例的個數,即實際為正例但被划分為負例的實例數。
  • True negatives(TN):被正確的划分為負例的個數,實際為負例且被划分為負例的實例數。

Precision = TP/(TP+FP) = TP/所有被模型預測為正例的數據

Recall = TP/(TP+FN) = TP/所有真實類別為正例的數據

PR曲線

我們希望檢測的結果P越高越好,R也越高越好,但事實上這兩者在某些情況下是矛盾的。

所以我們需要做的是找到一種精確率與召回率之間的平衡。其中一個方法就是畫出PR曲線,然后用PR曲線下方的面積AUC(AreaunderCurve)去判斷模型的好壞。

IOU指標

IoU是預測框與ground truth的交集和並集的比值。

對於每個類,預測框和ground truth重疊的區域是交集,而橫跨的總區域就是並集。

目標檢測中的PR

VOC中mAP的計算方法

通過PR曲線,我們可以得到對應的AP值:

在2010年以前,PASCALVOC競賽中AP是這么定義的:

  • 首先要對模型預測結果進行排序(即照各個預測值置信度降序排列)。
  • 我們把recall的值從0到1划分為11份:0、1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9、1.0。
  • 在每個recall區間(0-0.1,0.1-0.2,2-0.3,…,0.9-1.0)上我們計算精確率的最大值,然后再計算這些精確率最大值的總和並平均,就是AP值。

從2010年之后,PASCALVOC競賽把這11份recall點換成了PR曲線中的所有recall數據點。

對於某個recall值r,precision值取所有recall>=r中的最大值(這樣保證了p-r曲線是單調遞減的,避免曲線出現搖擺)這種方法叫做all-points-interpolation。這個AP值也就是PR曲線下的面積值。

具體例子:

Coco中mAP的計算方法

采用的是IOU(用於決定是否為TP)在[0.5:0.05:0.95]計算10次AP,然后求均值的方法計算AP。

非極大值抑制

NMS算法一般是為了去掉模型預測后的多余框,其一般設有一個nms_threshold=0.5,

具體的實現思路如下:

  1. 選取這類box中scores最大的哪一個,記為box_best,並保留它
  2. 計算box_best與其余的box的IOU
  3. 如果其IOU>0.5了,那么就舍棄這個box(由於可能這兩個box表示同一目標,所以保
  4. 留分數高的哪一個)
  5. 從最后剩余的boxes中,再找出最大scores的哪一個,如此循環往復

 本文分享自華為雲社區《目標檢測基礎知識》,原文作者:lutianfei 。

點擊關注,第一時間了解華為雲新鮮技術~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM