深度学习和目标检测系列教程 4-300:目标检测入门之目标变量和损失函数
@Author:Runsen
目標定位
圖像分類或圖像識別模型只是檢測圖像中對象的概率。與此相反,對象定位是指識別圖像中對象的位置。對象定位算法將輸出對象相對于圖像的位置坐標。在計算機視覺中,定位圖像中對象的最流行方法是借助邊界框來表示其位置。
可以使用以下參數初始化邊界框:
- bx, by : 邊界框中心的坐標
- bw : 邊界框的寬度 wrt 圖像寬度
- bh : 邊界框的高度 wrt 圖像高度
定義目標變量
多類圖像分類問題的目標變量定義為:
其中,CiC_iCi?是第iii類的概率。 例如,如果有四個類,則目標變量定義
我們可以擴展這種方法來定義目標變量進行目標定位。目標變量定義為
- pcp_cpc? = 對象(即四個類)出現在邊界框中的概率/置信度。
- bx,by,bh,bw = 邊界框坐標。
- cic_ici?= 對象所屬第iii類的概率
例如,四個類別是“卡車”、“汽車”、“自行車”、“行人”,它們的概率表示為c1,c2,c3,c4c1,c2,c3,c4c1,c2,c3,c4
損失函數
讓目標變量y的值表示為y1,y2,…,y9y1,y2,…,y9y1,y2,…,y9
目標定位的損失函數定義為
在實踐中,我們可以在預測類c1、c2、c3、c4c1、c2、c3、c4c1、c2、c3、c4的情況下使用考慮softmax輸出的log函數。而對于邊界框坐標,我們可以使用平方誤差,對于pcp_cpc?(物體的置信度),我們可以使用logistic回歸損失。
由于我們已經定義了目標變量和損失函數,我們現在可以使用神經網絡對目標進行分類和定位。
物體檢測
構建對象檢測的一種方法是首先構建一個分類器,該分類器可以對對象的緊密裁剪圖像進行分類。下圖顯示了此類模型的一個示例,其中模型在經過緊密裁剪的汽車圖像數據集上進行訓練,并且該模型預測圖像是汽車的概率。
現在,我們可以使用這個模型來檢測使用滑動窗口機制的汽車。在滑動窗口機制中,我們使用滑動窗口(類似于卷積網絡中使用的滑動窗口)并在每張幻燈片中裁剪圖像的一部分。裁剪的大小與滑動窗口的大小相同。然后將每個裁剪后的圖像傳遞給一個 ConvNet 模型(類似于上圖 中所示的模型),該模型反過來預測裁剪后的圖像是汽車的概率。
在整個圖像上運行滑動窗口后,調整滑動窗口的大小并再次在圖像上運行。經過多次重復這個過程。由于之前裁剪了大量圖像并通過 ConvNet 傳遞,因此這種方法在計算上既昂貴又耗時,使整個過程非常緩慢。滑動窗口的卷積實現有助于解決這個問題。
滑動窗口的卷積
在使用 convents 實現滑動窗口之前,分析如何將網絡的全連接層轉換為卷積層。
下面 顯示了一個簡單的卷積網絡,具有兩個完全連接的層,每個層的形狀為 (400, )。
借助一維卷積層,可以將全連接層轉換為卷積層。該層的寬度和高度等于 1,過濾器的數量等于全連接層的形狀。
我們可以將全連接層轉換為卷積層的概念應用到模型中,方法是將全連接層替換為一維卷積層。一維卷積層的濾波器數量等于全連接層的形狀。此外,輸出 softmax 層也是形狀為 (1, 1, 4) 的卷積層,其中 4 是要預測的類數。 如下圖 所示。
現在,擴展上述方法來實現滑動窗口的卷積版本。首先,考慮在以下表示中我們已經訓練的 ConvNet(沒有完全連接的層)。
讓我們假設輸入圖像的大小為16 × 16 × 3。如果我們使用滑動窗口方法,那么我們會將該圖像傳遞給上面的 ConvNet 四次,每次滑動窗口都會裁剪一部分大小為14 × 14 × 3的輸入圖像并將其通過卷積網絡。但不是這樣,我們將完整圖像(形狀為16 × 16 × 3)直接輸入到經過訓練的 ConvNet 中(見圖 7)。這導致形狀為2 × 2 × 4的輸出矩陣. 輸出矩陣中的每個單元格表示可能裁剪的結果和裁剪圖像的分類值。
例如,下圖中輸出的左側單元格(綠色單元格)表示第一個滑動窗口的結果。其他單元格表示剩余滑動窗口操作的結果。
滑動窗口的步幅由 Max Pool 層中使用的過濾器數量決定。在上面的示例中,Max Pool 層有兩個過濾器,因此滑動窗口以 2 的步幅移動,從而產生四個可能的輸出。使用這種技術的主要優點是滑動窗口同時運行和計算所有值。因此,這種技術非常快。盡管這種技術的一個弱點是邊界框的位置不是很準確。
YOLO
在使用卷積滑動窗口技術時解決預測準確邊界框問題,效果最好的算法是YOLO 算法。由 Joseph Redmon、Santosh Divvala、Ross Girshick 和 Ali Farhadi 于 2015 年開發。YOLO 很受歡迎,因為它在實時運行的同時實現了高精度。之所以這樣稱呼該算法,是因為它只需要通過網絡進行一次前向傳播即可進行預測。
該算法將圖像劃分為網格,并對每個網格單元運行圖像分類和定位算法。例如,我們有一個大小為256 × 256的輸入圖像。我們在圖像上放置一個3 × 3 的網格。
接下來,我們在每個網格單元上應用圖像分類和定位算法。對于每個網格單元,目標變量定義為
用卷積滑動窗口做一次。由于每個網格單元的目標變量的形狀是1 × 9并且有 9 ( 3 × 3 ) 個網格單元,模型的最終輸出將是:
YOLO 算法的優點是速度非常快,并且可以預測更準確的邊界框。此外,在實踐中為了獲得更準確的預測,我們使用更精細的網格,比如19 × 19,在這種情況下,目標輸出的形狀為19 × 19 × 9。
總結
以上是生活随笔為你收集整理的深度学习和目标检测系列教程 4-300:目标检测入门之目标变量和损失函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 平山县青峰峡景区军队优待证免费吗?
- 下一篇: 武警副指导员办案吗