3 2 特徵點檢測

2022-05-28 06:15:10 字數 1001 閱讀 6444

假設你正在構建乙個人臉識別應用,出於某種原因,你希望演算法可以給出眼角的具體位置。

眼角座標為(x,y) ,你可以讓神經網路的最後一層多輸出兩個數字$$,$$,作為眼角的座標值。如果你想知道兩隻眼睛的四個眼角的具體位置,那麼從左到右,依次用四個特徵點來表示這四個眼角。對神經網路稍做些修改,輸出第乙個特徵點$(},})$,

第二個特徵點$(},})$,依此類推,這四個臉部特徵點的位置就可以通過神經網路輸出了。

也許除了這四個特徵點,你還想得到更多的特徵點輸出值。你還可以根據嘴部的關鍵點輸出值來確定嘴的形狀,從而判斷人物是在微笑還是皺眉,也可以提取鼻子周圍的關鍵特徵點。為了便於說明,你可以設定特徵點的個數,假設臉部有 64 個特徵點,有些點甚至可以幫助你定義臉部輪廓或下頜輪廓。選定特徵點個數,並生成包含這些特徵點的標籤訓練集,然後利用神經網路輸出臉部關鍵特徵點的位置。

具體做法是,準備乙個卷積網路和一些特徵集,將人臉輸入卷積網路,輸出 1 或 0,1 表示有人臉, 0 表示沒有人臉,然後輸出$(},})$……直到$(},})$這裡有 129 個輸出單元,其中 1 表示中有人臉,因為有 64 個特徵, 64×2=128,所以最終輸出 128+1=129 個單元,由此實現對的人臉檢測和定位。

如果你對人體姿態檢測感興趣,你還可以定義一些關鍵特徵點,如胸部的中點,左肩, 左肘,腰等等。然後通過神經網路標註人物姿態的關鍵特徵點,再輸出這些標註過的特徵點,就相當於輸出了人物的姿態動作。

一旦了解如何用二維座標系定義人物姿態,操作起來就相當簡單了,批量新增輸出單元,用以輸出要識別的各個特徵點的(x, y)座標值。要明確一點,特徵點的特性在所有中必須保持一致,就好比,特徵點 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...