3.1 目标定位-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
| 2.12 總結(jié) | 回到目錄 | 3.2 特征點(diǎn)檢測(cè) |
目標(biāo)定位 (Object Localization)
大家好,歡迎回來,這一周我們學(xué)習(xí)的主要內(nèi)容是對(duì)象檢測(cè),它是計(jì)算機(jī)視覺領(lǐng)域中一個(gè)新興的應(yīng)用方向,相比前兩年,它的性能越來越好。在構(gòu)建對(duì)象檢測(cè)之前,我們先了解一下對(duì)象定位,首先我們看看它的定義。
圖片分類任務(wù)我們已經(jīng)熟悉了,就是算法遍歷圖片,判斷其中的對(duì)象是不是汽車,這就是圖片分類。這節(jié)課我們要學(xué)習(xí)構(gòu)建神經(jīng)網(wǎng)絡(luò)的另一個(gè)問題,即定位分類問題。這意味著,我們不僅要用算法判斷圖片中是不是一輛汽車,還要在圖片中標(biāo)記出它的位置,用邊框或紅色方框把汽車圈起來,這就是定位分類問題。其中“定位”的意思是判斷汽車在圖片中的具體位置。這周后面幾天,我們?cè)僦v講當(dāng)圖片中有多個(gè)對(duì)象時(shí),應(yīng)該如何檢測(cè)它們,并確定出位置。比如,你正在做一個(gè)自動(dòng)駕駛程序,程序不但要檢測(cè)其它車輛,還要檢測(cè)其它對(duì)象,如行人、摩托車等等,稍后我們?cè)僭敿?xì)講。
本周我們要研究的分類定位問題,通常只有一個(gè)較大的對(duì)象位于圖片中間位置,我們要對(duì)它進(jìn)行識(shí)別和定位。而在對(duì)象檢測(cè)問題中,圖片可以含有多個(gè)對(duì)象,甚至單張圖片中會(huì)有多個(gè)不同分類的對(duì)象。因此,圖片分類的思路可以幫助學(xué)習(xí)分類定位,而對(duì)象定位的思路又有助于學(xué)習(xí)對(duì)象檢測(cè),我們先從分類和定位開始講起。
圖片分類問題你已經(jīng)并不陌生了,例如,輸入一張圖片到多層卷積神經(jīng)網(wǎng)絡(luò)。這就是卷積神經(jīng)網(wǎng)絡(luò),它會(huì)輸出一個(gè)特征向量,并反饋給softmax單元來預(yù)測(cè)圖片類型。
如果你正在構(gòu)建汽車自動(dòng)駕駛系統(tǒng),那么對(duì)象可能包括以下幾類:行人、汽車、摩托車和背景,這意味著圖片中不含有前三種對(duì)象,也就是說圖片中沒有行人、汽車和摩托車,輸出結(jié)果會(huì)是背景對(duì)象,這四個(gè)分類就是softmax函數(shù)可能輸出的結(jié)果。
這就是標(biāo)準(zhǔn)的分類過程,如果你還想定位圖片中汽車的位置,該怎么做呢?我們可以讓神經(jīng)網(wǎng)絡(luò)多輸出幾個(gè)單元,輸出一個(gè)邊界框。具體說就是讓神經(jīng)網(wǎng)絡(luò)再多輸出4個(gè)數(shù)字,標(biāo)記為 bx,by,bhb_x,b_y,b_hbx?,by?,bh? 和 bwb_wbw? ,這四個(gè)數(shù)字是被檢測(cè)對(duì)象的邊界框的參數(shù)化表示。
我們先來約定本周課程將使用的符號(hào)表示,圖片左上角的坐標(biāo)為(0,0),右下角標(biāo)記為(1,1)。要確定邊界框的具體位置,需要指定紅色方框的中心點(diǎn),這個(gè)點(diǎn)表示為(bx,byb_x,b_ybx?,by?),邊界框的高度為 bhb_hbh? ,寬度為 bwb_wbw? 。因此訓(xùn)練集不僅包含神經(jīng)網(wǎng)絡(luò)要預(yù)測(cè)的對(duì)象分類標(biāo)簽,還要包含表示邊界框的這四個(gè)數(shù)字,接著采用監(jiān)督學(xué)習(xí)算法,輸出一個(gè)分類標(biāo)簽,還有四個(gè)參數(shù)值,從而給出檢測(cè)對(duì)象的邊框位置。此例中, bxb_xbx? 的理想值是0.5,因?yàn)樗硎酒囄挥趫D片水平方向的中間位置;byb_yby? 大約是0.7,表示汽車位于距離圖片底部 310\frac3{10}103? 的位置; bhb_hbh? 約為0.3,因?yàn)榧t色方框的高度是圖片高度的0.3倍; bwb_wbw? 約為0.4,紅色方框的寬度是圖片寬度的0.4倍。
下面我再具體講講如何為監(jiān)督學(xué)習(xí)任務(wù)定義目標(biāo)標(biāo)簽 yyy 。
請(qǐng)注意,這有四個(gè)分類,神經(jīng)網(wǎng)絡(luò)輸出的是這四個(gè)數(shù)字和一個(gè)分類標(biāo)簽,或分類標(biāo)簽出現(xiàn)的概率。目標(biāo)標(biāo)簽 yyy 的定義如下:y=[pcbxbybhbwc1c2c3]y=\left[\begin{matrix} p_c\\b_x\\b_y\\b_h\\b_w\\c_1\\c_2\\c_3 \end{matrix}\right]y=?????????????pc?bx?by?bh?bw?c1?c2?c3???????????????
它是一個(gè)向量,第一個(gè)組件 pcp_cpc? 表示是否含有對(duì)象,如果對(duì)象屬于前三類(行人、汽車、摩托車),則 pc=1p_c=1pc?=1 ,如果是背景,則圖片中沒有要檢測(cè)的對(duì)象,則 pc=0p_c=0pc?=0 。我們可以這樣理解 pcp_cpc? ,它表示被檢測(cè)對(duì)象屬于某一分類的概率,背景分類除外。
如果檢測(cè)到對(duì)象,就輸出被檢測(cè)對(duì)象的邊界框參數(shù) bx、by、bhb_x、b_y、b_hbx?、by?、bh? 和 bwb_wbw? 。最后,如果存在某個(gè)對(duì)象,那么 pc=1p_c=1pc?=1 ,同時(shí)輸出 c1、c2c_1、c_2c1?、c2? 和 c3c_3c3? ,表示該對(duì)象屬于1-3類中的哪一類,是行人,汽車還是摩托車。鑒于我們所要處理的問題,我們假設(shè)圖片中只含有一個(gè)對(duì)象,所以針對(duì)這個(gè)分類定位問題,圖片最多只會(huì)出現(xiàn)其中一個(gè)對(duì)象。
我們?cè)倏磶讉€(gè)樣本,假如這是一張訓(xùn)練集圖片,標(biāo)記為 xxx ,即上圖的汽車圖片。而在 yyy 當(dāng)中,第一個(gè)元素 pc=1p_c=1pc?=1 ,因?yàn)閳D中有一輛車, bx、by、bhb_x、b_y、b_hbx?、by?、bh? 和 bwb_wbw? 會(huì)指明邊界框的位置,所以標(biāo)簽訓(xùn)練集需要標(biāo)簽的邊界框。圖片中是一輛車,所以結(jié)果屬于分類2,因?yàn)槎ㄎ荒繕?biāo)不是行人或摩托車,而是汽車,所以 c1=0,c2=1,c3=0,c1、c2c_1=0,c_2=1,c_3=0,c_1、c_2c1?=0,c2?=1,c3?=0,c1?、c2? 和 c3c_3c3? 中最多只有一個(gè)等于1。
這是圖片中只有一個(gè)檢測(cè)對(duì)象的情況,如果圖片中沒有檢測(cè)對(duì)象呢?如果訓(xùn)練樣本是這樣一張圖片呢?
這種情況下, pc=0,yp_c=0,ypc?=0,y 的其它參數(shù)將變得毫無意義,這里我全部寫成問號(hào),表示“毫無意義”的參數(shù),因?yàn)閳D片中不存在檢測(cè)對(duì)象,所以不用考慮網(wǎng)絡(luò)輸出中邊界框的大小,也不用考慮圖片中的對(duì)象是屬于 c1、c2c_1、c_2c1?、c2? 和 c3c_3c3? 中的哪一類。針對(duì)給定的被標(biāo)記的訓(xùn)練樣本,不論圖片中是否含有定位對(duì)象,構(gòu)建輸入圖片 xxx 和分類標(biāo)簽 yyy 的具體過程都是如此。這些數(shù)據(jù)最終定義了訓(xùn)練集。
最后,我們介紹一下神經(jīng)網(wǎng)絡(luò)的損失函數(shù),其參數(shù)為類別 yyy 和網(wǎng)絡(luò)輸出 y^\hat{y}y^? ,如果采用平方誤差策略,則 L(y^,y)=(y^1?y1)2+(y^2?y2)2+?+(y^8?y8)2L(\hat{y},y)=(\hat{y}_1-y_1)^2+(\hat{y}_2-y_2)^2+\cdots+(\hat{y}_8-y_8)^2L(y^?,y)=(y^?1??y1?)2+(y^?2??y2?)2+?+(y^?8??y8?)2 ,損失值等于每個(gè)元素相應(yīng)差值的平方和。
如果圖片中存在定位對(duì)象,那么 y1=1y_1=1y1?=1 ,所以 y1=pcy_1=p_cy1?=pc? ,同樣地,如果圖片中存在定位對(duì)象, pc=1p_c=1pc?=1 ,損失值就是不同元素的平方和。
另一種情況是, y1=0y_1=0y1?=0 ,也就是 pc=0p_c=0pc?=0 ,損失值是 (y^1?y1)2(\hat{y}_1-y_1)^2(y^?1??y1?)2 ,因?yàn)閷?duì)于這種情況,我們不用考慮其它元素,只需要關(guān)注神經(jīng)網(wǎng)絡(luò)輸出 pcp_cpc? 的準(zhǔn)確度。
回顧一下,當(dāng) y1=1y_1=1y1?=1 時(shí),也就是這種情況(編號(hào)1),平方誤差策略可以減少這8個(gè)元素預(yù)測(cè)值和實(shí)際輸出結(jié)果之間差值的平方。如果 y1=0y_1=0y1?=0 , yyy 矩陣中的后7個(gè)元素都不用考慮(編號(hào)2),只需要考慮神經(jīng)網(wǎng)絡(luò)評(píng)估 y1y_1y1? (即 pcp_cpc? )的準(zhǔn)確度。
為了讓大家了解對(duì)象定位的細(xì)節(jié),這里我用平方誤差簡(jiǎn)化了描述過程。實(shí)際應(yīng)用中,你可以不對(duì) c1、c2、c3c_1、c_2、c_3c1?、c2?、c3? 和softmax激活函數(shù)應(yīng)用對(duì)數(shù)損失函數(shù),并輸出其中一個(gè)元素值,通常做法是對(duì)邊界框坐標(biāo)應(yīng)用平方差或類似方法,對(duì) pcp_cpc? 應(yīng)用邏輯回歸函數(shù),甚至采用平方預(yù)測(cè)誤差也是可以的。
以上就是利用神經(jīng)網(wǎng)絡(luò)解決對(duì)象分類和定位問題的詳細(xì)過程,結(jié)果證明,利用神經(jīng)網(wǎng)絡(luò)輸出批量實(shí)數(shù)來識(shí)別圖片中的對(duì)象是個(gè)非常有用的算法。下節(jié)課,我想和大家分享另一種思路,就是把神經(jīng)網(wǎng)絡(luò)輸出的實(shí)數(shù)集作為一個(gè)回歸任務(wù),這個(gè)思想也被應(yīng)用于計(jì)算機(jī)視覺的其它領(lǐng)域,也是非常有效的,所以下節(jié)課見。
課程板書
| 2.12 總結(jié) | 回到目錄 | 3.2 特征點(diǎn)檢測(cè) |
總結(jié)
以上是生活随笔為你收集整理的3.1 目标定位-深度学习第四课《卷积神经网络》-Stanford吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.12 总结-深度学习第四课《卷积神经
- 下一篇: 3.2 目标点检测-深度学习第四课《卷积