卷積神經網絡(三)目標檢測


1、目標定位:(以定位汽車為例)

將圖像分類:行人、汽車、摩托車、純背景圖,使用softmax函數輸出結果. 輸出的結果不僅僅是分類,還有四個標記:bx、by、bh、bw. 這四個數據為被檢測對象的邊界框的參數.

左上角坐標(0,0),右下角坐標(1,1).

輸出結果的表示形式:

 

 

2、特征點檢測:

(1)以人臉特征提取為例:

對於人臉的多個特征點,比如4個眼角、鼻子周圍關鍵點等,假設選取64個特征點,設置為 (l1x,l1y)、(l2x,l2y)、....、(l64x,l64y).

准備一個卷積網絡,將人臉圖片輸入卷積網絡,輸入0/1判斷是否含有人臉,然后再輸出128個特征參數,最終輸出129個參數.

 

 

(2)以姿態檢測為例:

定義一些關鍵特征點,如胸部的中點、左右肩、左右肘等,來識別人物的姿態動作.

 

3、目標檢測:(以汽車識別為例)

(1)問題描述:

由於訓練集都是整張照片為汽車,且待識別照片可能含有多輛汽車,因此需要對待識別的照片應用滑動窗口,使得汽車所占圖片區域較大.

使用滑動窗口,並逐漸擴大窗口的大小:

 但使用滑動窗口的缺陷是:窗口截取的圖片數量太多,計算成本太高.

 

(2)卷積的滑動窗口實現:為了解決上述計算成本的問題.

① 將全連接層轉換成卷積層:假設訓練集是14*14*3.

② 應用至測試集:

若測試集是16*16*3.

結果集的四個小塊,每一小塊都可以看成是一個窗口得出的結果.

若測試集是28*28*3.

 

(3)邊界框預測:

 可能出現所有邊界框都無法完整框處汽車的情況,如下圖. 

使用YOLO算法:

① 將圖像分為若干格,比如3*3;

② 結合目標定位算法,找到對象的中心點,對象分配給中心點所在格子,找出汽車所在的邊界,每一格輸出的結果:y = [pc, bx, by, bh, bw, c1, c2, c3]T.(其中bh,bw可以超過邊界)

③ 輸出的結果:3*3*8(3*3是格子划分,8是每一個格子的結果都是8維).

 

(4)交並比(IoU):

用於判斷對象檢測算法運作是否良好,計算方法為:

(下圖紅色為正確的邊界框,紫色為識別的邊界框)

 IoU = size of Intersection / size of  Union

"correct" if IoU ≥ 0.5 (或者其它閾值)

 

(5)Non-max suppression(非極大值抑制):

解決的問題:在對象檢測時,可能會對同一個對象檢測多次,非極大值抑制可以確保算法對同一個對象檢測一次.

當使用19*19的划分方式時,可能有多個格子包含了同一輛車,可能的識別結果如下圖:

首先分析概率pc最大的邊界框,即最可靠的檢測,即下圖黃色框,對於與其有較高交並比的邊界框就會被抑制.

 

(6)Anchor boxes:

解決的問題:在同一個格子中識別多個對象.

當同一個格子中出現了多個對象的中點,如下圖,第同一個格子中出現了人和車的中點:

選擇Anchor box:一般通過手動設置5-10個anchor box形狀,覆蓋所需要檢測的對象形狀.

每一個對象都被指定到一個格子和一個與對象形狀IoU最高的anchor box.

輸出的結果格式:

 

(7) YOLO算法:

在以下用例中,使用了2個Anchor box:

 其中第1格的y:;其中第8格的y:

 分別對不同對象使用極大值抑制,挑選出pc較大的邊界框.

 

4、R-CNN(Regions with convolutional network 帶區域的卷積網絡):

當采用滑動窗口時,由於圖片中有些區域是空的,窗口中並沒有行人、汽車、摩托車等所需識別的對象,如下圖:

RPN只選用少數的窗口上運行卷積網絡分類器,采用的方法是圖像分割方法,分割結果如下圖. 對不同的色塊運行分類器.

 

改進:

Fast R-CNN:圖像分割后,再使用滑動窗口和卷積進行分類.

Faster R-CNN: 使用卷積神經網絡獲得候選塊.

 (但這些方法通常比YOLO算法慢)


免責聲明!

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



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