第四部分 目標檢測 1 筆記

2021-08-20 04:38:19 字數 2610 閱讀 3899

3.1 目標定位

object localization

目標定位即判斷目標在影像中是否存在,以及將目標在影像中的位置標記出來。

目標檢測示意

檢測影象中是否包括:行人、汽車、電單車和背景,並將汽車的位置標記出來。網路的輸出結果應為:四種物件的softmax輸出以及汽車邊界框的引數化顯示。

上圖中,假定影象左上角為座標為(0,0),右下角座標為(1,1),邊界框的引數化表示為:(bx,by,bh,bw) = (0.5,0.7,0.3,0.4),其中,0.5、0.7表示邊界框中心點的座標,0.3、0.4表示邊界框的高和寬分別為原影象高和寬的3/10以及4/10。

定義目標定位監督學習標籤y

標籤y的定義如下:

其中pc表示是否含有物件,此時假設影象中僅包含一種物件,除背景外,若影象中含有物件則pc = 1 ,否則pc = 0。bx,by,bh,bw為邊界框引數,c1,c2,c3表示物件資料1-3類中的哪乙個。當pc = 0時,y的其他引數將變的無意義。標籤y定義好之後,網路的損失函式可以用平方誤差來表示:

細節:y1 = 1時計算8個元素的差值平方和,y1 = 0時,僅y1對應的差值平方,實際情況時pc應用邏輯回歸,bx,by,bh,bw應用平方差,c1,c2,c3應用對數損失函式。

3.2 特徵點檢測

目標定位:網路輸出邊界框引數bx,by,bh,bw。

人臉檢測:網路按順序輸出人臉特徵點的座標(標籤中的特徵點需要保持一致性)。

人體姿態檢測:網路按順序輸出人物姿態關鍵點的座標。

3.3 目標檢測

object detection

基於滑動視窗的目標檢測

1、訓練好乙個能夠進行物體分類的神經網路。

2、針對測試,選擇特定大小的視窗,該視窗在測試上進行滑動,每滑動一次就將視窗的影象輸入到訓練好的神經網路中用來判斷有沒有汽車。

3、重複操作2,知道將視窗滑過影象的每個角落。

3、選擇另乙個特定大小視窗,重複2、3操作。

這樣隨著選擇不同大小的視窗,不同的滑動步長,總能將汽車從影象中檢測出來。

滑動視窗目標檢測演算法也有很明顯的缺點,即計算成本,因為在中剪下出太多小方塊,卷積網路要乙個個地處理。如果選用的步幅很大,顯然會減少輸入卷積網路的視窗個數,但是粗糙間隔尺寸可能會影響效能。反之,如果採用小粒度或小步幅,傳遞給卷積網路的小視窗會特別多,這意味著超高的計算成本。

在神經網路興起之前,通常採用更簡單的分類器進行物件檢測,比如通過採用手工處理工程特徵的簡單的線性分類器來執行物件檢測。因為每個分類器的計算成本都很低,它只是乙個線性函式,所以滑動視窗目標檢測演算法表現良好。然而,卷積網路執行單個分類人物的成本卻高得多,像這樣滑動視窗太慢。除非採用超細粒度或極小步幅,否則無法準確定位中的物件。現在已有更好的解決方案。

3.4 卷積的滑動視窗實現

convolutional implementation of sliding windows

啟發:利用1x1卷積,將全連線層改造為卷積層,即將卷積神經網路改造為全卷積神經網路,這樣輸入網路影象的尺寸將不會受到限制。

利用全卷積神經網路可以改善卷積的重複計算問題。

該卷積操作的原理是不需要把輸入影象分割成四個子集,分別執行前向傳播,而是把它們作為一張輸入給卷積網路進行計算,其中的公共區域可以共享很多計算,就像這裡我們看到的這個4個14x14的方塊一樣。

對28×28×3的應用滑動視窗操作,如果以同樣的方式執行前向傳播,最後得到8×8×4的結果。跟上例一樣,以14×14區域滑動視窗,首先在這個區域應用滑動視窗,其結果對應輸出層的左上角部分。接著以大小為2的步幅不斷地向右移動視窗,直到第8個單元格,得到輸出層的第一行。然後向下方移動,最終輸出這個8×8×4的結果。因為最大池化引數為2,相當於以大小為2的步幅在原始上應用神經網路。

卷積層上應用滑動視窗演算法的內容,它提高了整個演算法的效率。缺點:邊界框的位置可能不夠準確。

第四部分 目標檢測 3 筆記

為了使乙個格仔檢測多個物件,需要引入anchor boxes概念。上圖中第六個格仔,輸出向量y為八維度,只能檢測出乙個物件,而實際上此格仔中有兩個邊界框的中點落入。anchor boxes的思路是,預先定義好多個不同形狀的anchor boxes,上圖中定義了兩個。由於有兩個anchor boxes...

JavaScript筆記(第四部分)

命 名 空 間 管理變數,防止汙染全域性,適用於模組開發 之 前 的 解 決 辦 方 已經不用 命名空間 var org xuming department2 lisi 了解即可 用 法 org.department1.jicheng.name 簡化 var jc org.department1.j...

第四部分 方法3

對employee.calculatepay方法的呼叫是問題的原因。我們需要的是晚繫結。晚繫結 latebinging 意味著編譯器到執行時才選擇要執行的方法。為了迫使編譯器呼叫向上型別轉換得到的物件的方法的正確版本。我們使用了兩個關鍵字 virtual 和override.必須在基類方法中使用vi...