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