1. 特徵點
利用神經網絡進行對象定位,即通過輸出四個參數值bx、by、bh和bw給出圖片中對象的邊界框
概括地說,神經網絡可以通過輸出圖片上特徵點的(x,y)座標來實現對目標特徵的識別
假設正在構建一個人臉識別應用,出於某種原因,希望算法可以給出眼角的具體位置
眼角座標爲(x,y),可以讓神經網絡的最後一層多輸出兩個數字 x和 y,作爲眼角的座標值
如果想知道兩隻眼睛的四個眼角的具體位置,那麼從左到右,依次用四個特徵點來表示這四個眼角
對神經網絡稍做些修改,輸出第一個特徵點(1x,1y),第二個特徵點(2x,2y)
依此類推,這四個臉部特徵點的位置就可以通過神經網絡輸出了
2. 設定特徵點
也許除了這四個特徵點,還想得到更多的特徵點輸出值
還可以根據嘴部的關鍵點輸出值來確定嘴的形狀,從而判斷人物是在微笑還是皺眉
也可以提取鼻子周圍的關鍵特徵點
爲了便於說明,可以設定特徵點的個數
假設臉部有64個特徵點,有些點甚至可以幫助定義臉部輪廓或下頜輪廓
選定特徵點個數,並生成包含這些特徵點的標籤訓練集
然後利用神經網絡輸出臉部關鍵特徵點的位置
具體做法是,準備一個卷積網絡和一些特徵集
將人臉圖片輸入卷積網絡
輸出1或0,1表示有人臉,0表示沒有人臉,然後輸出(1x,1y)……直到(64x,64y)
這裏用代表一個特徵,有129個輸出單元
其中1表示圖片中有人臉,因爲有64個特徵,64×2=128
這只是一個識別臉部表情的基本構造模塊
如果玩過Snapchat或其它娛樂類應用
應該對AR(增強現實)過濾器多少有些瞭解,Snapchat過濾器實現了在臉上畫皇冠和其他一些特殊效果
檢測臉部特徵也是計算機圖形效果的一個關鍵構造模塊,比如實現臉部扭曲,頭戴皇冠等等
當然爲了構建這樣的網絡,需要準備一個標籤訓練集
也就是圖片x和標籤y的集合,這些點都是人爲辛苦標註的
3. 關鍵特徵點
如果對人體姿態檢測感興趣,還可以定義一些關鍵特徵點
如胸部的中點,左肩,左肘,腰等等
然後通過神經網絡標註人物姿態的關鍵特徵點
再輸出這些標註過的特徵點,就相當於輸出了人物的姿態動作
當然,要實現這個功能,需要設定這些關鍵特徵點
從胸部中心點(1x,1y)一直往下,直到(32x,32y)
一旦瞭解如何用二維座標系定義人物姿態,操作起來就相當簡單了
批量添加輸出單元,用以輸出要識別的各個特徵點的(x,y)座標值
要明確一點,特徵點1的特性在所有圖片中必須保持一致
就好比,特徵點1始終是右眼的外眼角,特徵點2是右眼的內眼角,特徵點3是左眼內眼角,特徵點4是左眼外眼角等等
所以標籤在所有圖片中必須保持一致
假如標記了一個足夠大的數據集,那麼神經網絡便可以輸出上述所有特徵點
可以利用它們實現其他有趣的效果,比如判斷人物的動作姿態,識別圖片中的人物表情等等
參考:
相關推薦:
深度學習筆記(32) 目標定位
深度學習筆記(31) 遷移與增強
深度學習筆記(30) Inception網絡
深度學習筆記(29) 1×1 卷積
深度學習筆記(28) 殘差網絡
謝謝!