3.2 目标点检测-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
| 3.1 目標定位 | 回到目錄 | 3.3 目標檢測 |
目標點檢測 (Landmark Detection)
上節課,我們講了如何利用神經網絡進行對象定位,即通過輸出四個參數值 bx、by、bhb_x、b_y、b_hbx?、by?、bh? 和 bwb_wbw? 給出圖片中對象的邊界框。更概括地說,神經網絡可以通過輸出圖片上特征點的 (x,y)(x,y)(x,y) 坐標來實現對目標特征的識別,我們看幾個例子。
假設你正在構建一個人臉識別應用,出于某種原因,你希望算法可以給出眼角的具體位置。眼角坐標為 (x,yx,yx,y) ,你可以讓神經網絡的最后一層多輸出兩個數字 lxl_xlx? 和 lyl_yly? ,作為眼角的坐標值。如果你想知道兩只眼睛的四個眼角的具體位置,那么從左到右,依次用四個特征點來表示這四個眼角。對神經網絡稍做些修改,輸出第一個特征點( l1x,l1yl_{1x},l_{1y}l1x?,l1y? ),第二個特征點(l2x,l2yl_{2x},l_{2y}l2x?,l2y?),依此類推,這四個臉部特征點的位置就可以通過神經網絡輸出了。
也許除了這四個特征點,你還想得到更多的特征點輸出值,這些(圖中眼眶上的紅色特征點)都是眼睛的特征點,你還可以根據嘴部的關鍵點輸出值來確定嘴的形狀,從而判斷人物是在微笑還是皺眉,也可以提取鼻子周圍的關鍵特征點。為了便于說明,你可以設定特征點的個數,假設臉部有64個特征點,有些點甚至可以幫助你定義臉部輪廓或下頜輪廓。選定特征點個數,并生成包含這些特征點的標簽訓練集,然后利用神經網絡輸出臉部關鍵特征點的位置。
具體做法是,準備一個卷積網絡和一些特征集,將人臉圖片輸入卷積網絡,輸出1或0,1表示有人臉,0表示沒有人臉,然后輸出( l1x,l1yl_{1x},l_{1y}l1x?,l1y? )……直到( l64x,l64yl_{64x},l_{64y}l64x?,l64y? )。這里我用 lll 代表一個特征,這里有129個輸出單元,其中1表示圖片中有人臉,因為有64個特征,64×2=128,所以最終輸出128+1=129個單元,由此實現對圖片的人臉檢測和定位。這只是一個識別臉部表情的基本構造模塊,如果你玩過Snapchat或其它娛樂類應用,你應該對AR(增強現實)過濾器多少有些了解,Snapchat過濾器實現了在臉上畫皇冠和其他一些特殊效果。檢測臉部特征也是計算機圖形效果的一個關鍵構造模塊,比如實現臉部扭曲,頭戴皇冠等等。當然為了構建這樣的網絡,你需要準備一個標簽訓練集,也就是圖片 xxx 和 yyy 標簽的集合,這些點都是人為辛苦標注的。
最后一個例子,如果你對人體姿態檢測感興趣,你還可以定義一些關鍵特征點,如胸部的中點,左肩,左肘,腰等等。然后通過神經網絡標注人物姿態的關鍵特征點,再輸出這些標注過的特征點,就相當于輸出了人物的姿態動作。當然,要實現這個功能,你需要設定這些關鍵特征點,從胸部中心點( l1x,l1yl_{1x},l_{1y}l1x?,l1y? )一直往下,直到( l32x,l32yl_{32x},l_{32y}l32x?,l32y? )。
一旦了解如何用二維坐標系定義人物姿態,操作起來就相當簡單了,批量添加輸出單元,用以輸出要識別的各個特征點( x,yx,yx,y )的坐標值。要明確一點,特征點1的特性在所有圖片中必須保持一致,就好比,特征點1始終是右眼的外眼角,特征點2是右眼的內眼角,特征點3是左眼內眼角,特征點4是左眼外眼角等等。所以標簽在所有圖片中必須保持一致,假如你雇用他人或自己標記了一個足夠大的數據集,那么神經網絡便可以輸出上述所有特征點,你可以利用它們實現其他有趣的效果,比如判斷人物的動作姿態,識別圖片中的人物表情等等。
以上就是特征點檢測的內容,下節課我們將利用這些構造模塊來構建對象檢測算法。
課程板書
| 3.1 目標定位 | 回到目錄 | 3.3 目標檢測 |
總結
以上是生活随笔為你收集整理的3.2 目标点检测-深度学习第四课《卷积神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.1 目标定位-深度学习第四课《卷积神
- 下一篇: 3.4 滑动窗口的卷积实现-深度学习第四