(一)目標檢測概述


這里簡單記錄和概述學習目標檢測算法的心得,盡可能的詳細一些,但限於寫博客的一些語法和格式不是很好,所以請閱讀者見諒!

概述:1、什么是目標檢測

   2、目標檢測任務描述

     2.1、目標檢測算法分類(接下來我會更新常見的目標檢測算法原理)

      2.2、目標檢測的常見指標

      2.3、目標定位的簡單實現

1、什么是目標檢測

目標檢測定義

識別圖片中有哪些物體以及物體的位置(坐標位置)

什么是物體

即圖像中存在的物體對象,但是能檢測哪些物體會受到人為設定限制。

目標檢測中能檢測出來的物體取決於當前任務(數據集)需要檢測的物體有哪些。假設我們的目標檢測模型定位是檢測動物(牛、羊、豬、狗、貓五種結果),那么模型對任何一張圖片輸出結果不會輸出鴨子、書籍等其它類型結果。

什么是位置

目標檢測的位置信息一般由兩種格式(以圖片左上角為原點(0,0)):

  • 極坐標表示:(xmin, ymin, xmax, ymax)
    • xmin,ymin:x,y坐標的最小值
    • xmin,ymin:x,y坐標的最大值
  • 中心點坐標:(x_center, y_center, w, h)
    • x_center, y_center:目標檢測框的中心點坐標
    • w,h:目標檢測框的寬、高

 假設這個圖像是1000x800,所有這些坐標都是構建在像素層面上:

中心點坐標結果如下:

目標檢測的技術發展歷史

  • 傳統目標檢測方法(候選區域+手工特征提取+分類器)
    • HOG+SVM、DPM
  • region proposal+CNN提取分類的目標檢測框架
    • (R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN)
  • 端到端(End-to-End)的目標檢測框架
    • YOLO、SSD

2、目標檢測任務描述

2.1 目標檢測算法分類

  • 兩步走的目標檢測:先進行區域推薦,而后進行目標分類

    • 代表:R-CNN、SPP-net、Fast R-CNN、Faster R-CNN
  • 端到端的目標檢測:采用一個網絡一步到位

    • 代表:YOLO、SSD

2.2 目標檢測的任務

2.2.1 分類原理

先來回顧下分類的原理,這是一個常見的CNN組成圖,輸入一張圖片,經過其中卷積、激活、池化相關層,最后加入全連接層達到分類概率的效果

 

  • 分類的損失與優化

在訓練的時候需要計算每個樣本的損失,那么CNN做分類的時候使用softmax函數計算結果,損失為交叉熵損失

  • 常見CNN模型

對於目標檢測來說不僅僅是分類這樣簡單的一個圖片輸出一個結果,而且還需要輸出圖片中目標的位置信息,所以從分類到檢測,如下圖標記了過程:

  • 分類

  • 分類+定位(只有一個對象的時候)

  • 目標檢測

2.3 檢測的任務

分類:

  • N個類別
  • 輸入:圖片
  • 輸出:類別標簽
  • 評估指標:Accuracy

定位:

  • N個類別
  • 輸入:圖片
  • 輸出:物體的位置坐標
  • 主要評估指標:IOU

其中我們得出來的(x,y,w,h)有一個專業的名詞,叫做bounding box(bbox).

2.3.1 兩種Bounding box名稱

在目標檢測當中,對bbox主要由兩種類別。

  • Ground-truth bounding box:圖片當中真實標記的框
  • Predicted bounding box:預測的時候標記的框

 

一般在目標檢測當中,我們預測的框有可能很多個,真實框GT也有很多個。

2.4 檢測的評價指標

任務 description 輸入 輸出 評價標准

Detection and

Localization (檢測和定位)

在輸入圖片中找出存在的物

體類別和位置(可能存在多種物體)

圖片(image )

類別標簽(categories)和

位置(bbox(x,y,w,h))

IoU (Intersection over Union)

mAP (Mean Average Precision)

 

  • IoU(交並比)
    • 兩個區域的重疊程度overlap:侯選區域和標定區域的IoU值

2.5 目標定位的簡單實現

在分類的時候我們直接輸出各個類別的概率,如果再加上定位的話,我們可以考慮在網絡的最后輸出加上位置信息。

2.5.1 回歸位置

增加一個全連接層,即為FC1、FC2

  • FC1:作為類別的輸出

  • FC2:作為這個物體位置數值的輸出

假設有10個類別,輸出[p1,p2,p3,...,p10],然后輸出這一個對象的四個位置信息[x,y,w,h]。同理知道要網絡輸出什么,如果衡量整個網絡的損失

  • 對於分類的概率,還是使用交叉熵損失
  • 位置信息具體的數值,可使用MSE均方誤差損失(L2損失)

如下圖所示

 2.5.2 位置數值的處理

對於輸出的位置信息是四個比較大的像素大小值,在回歸的時候不適合。目前統一的做法是,每個位置除以圖片本身像素大小。

假設以中心坐標方式,那么x = x/x_image,y/y_image, w/x_image,h/y_image,也就是這幾個點最后都變成了0~1之間的值(歸一化)。

 


免責聲明!

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



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