利用神經網路進行物件定位,即通過輸出四個引數值bx、by、bh和bw給出中物件的邊界框
概括地說,神經網路可以通過輸出上特徵點的(x,y)座標來實現對目標特徵的識別
假設正在構建乙個人臉識別應用,出於某種原因,希望演算法可以給出眼角的具體位置
眼角座標為(x,y),可以讓神經網路的最後一層多輸出兩個數字 l
llx和 l
lly,作為眼角的座標值
如果想知道兩隻眼睛的四個眼角的具體位置,那麼從左到右,依次用四個特徵點來表示這四個眼角
對神經網路稍做些修改,輸出第乙個特徵點(l
ll1x,l
ll1y),第二個特徵點(l
ll2x,l
ll2y)
依此類推,這四個臉部特徵點的位置就可以通過神經網路輸出了
也許除了這四個特徵點,還想得到更多的特徵點輸出值
還可以根據嘴部的關鍵點輸出值來確定嘴的形狀,從而判斷人物是在微笑還是皺眉
也可以提取鼻子周圍的關鍵特徵點
為了便於說明,可以設定特徵點的個數
假設臉部有64個特徵點,有些點甚至可以幫助定義臉部輪廓或下頜輪廓
選定特徵點個數,並生成包含這些特徵點的標籤訓練集
然後利用神經網路輸出臉部關鍵特徵點的位置
具體做法是,準備乙個卷積網路和一些特徵集
將人臉輸入卷積網路
輸出1或0,1表示有人臉,0表示沒有人臉,然後輸出(l
ll1x,l
ll1y)……直到(l
ll64x,l
ll64y)
這裡用l
ll代表乙個特徵,有129個輸出單元
其中1表示中有人臉,因為有64個特徵,64×2=128
這只是乙個識別臉部表情的基本構造模組
如果玩過snapchat或其它娛樂類應用
應該對ar(增強現實)過濾器多少有些了解,snapchat過濾器實現了在臉上畫皇冠和其他一些特殊效果
檢測臉部特徵也是計算機圖形效果的乙個關鍵構造模組,比如實現臉部扭曲,頭戴皇冠等等
當然為了構建這樣的網路,需要準備乙個標籤訓練集
也就是x和標籤y的集合,這些點都是人為辛苦標註的
如果對人體姿態檢測感興趣,還可以定義一些關鍵特徵點
如胸部的中點,左肩,左肘,腰等等
然後通過神經網路標註人物姿態的關鍵特徵點
再輸出這些標註過的特徵點,就相當於輸出了人物的姿態動作
當然,要實現這個功能,需要設定這些關鍵特徵點
從胸部中心點(l
ll1x,l
ll1y)一直往下,直到(l
ll32x,l
ll32y)
一旦了解如何用二維座標系定義人物姿態,操作起來就相當簡單了
批量新增輸出單元,用以輸出要識別的各個特徵點的(x,y)座標值
要明確一點,特徵點1的特性在所有中必須保持一致
就好比,特徵點1始終是右眼的外眼角,特徵點2是右眼的內眼角,特徵點3是左眼內眼角,特徵點4是左眼外眼角等等
所以標籤在所有中必須保持一致
假如標記了乙個足夠大的資料集,那麼神經網路便可以輸出上述所有特徵點
可以利用它們實現其他有趣的效果,比如判斷人物的動作姿態,識別中的人物表情等等
參考:
人臉特徵點檢測
參考 face alignment by explicit shape regression。演算法的實現原始碼在裡的explicitshaperegression.cpp裡面。下面貼上乙個檢測結果 人臉特徵點有不少應用,比如可以對齊人臉,或者做人臉變形。在人臉資料庫裡挑選了一些人臉,對齊它們,求出...
ORB特徵點檢測
這篇文章我們將介紹一種新的具有區域性不變性的特徵 orb特徵,從它的名字中可以看出它是對fast特徵點與breif特徵描述子的一種結合與改進,這個演算法是由ethan rublee,vincent rabaud,kurt konolige以及gary r.bradski在2011年一篇名為 orb ...
GFTT特徵點檢測
角點檢測,避免出現聚簇現象 shi tomasi的角點檢測演算法,名稱goodfeaturetotrack,opencv的feature2d介面整合了這種演算法,名稱為gfttdetector,介面如下 ptrcreate int maxcorners 1000,double qualityleve...