深度學習筆記(33) 特徵點檢測

2021-09-26 01:45:50 字數 1791 閱讀 5039

利用神經網路進行物件定位,即通過輸出四個引數值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...