人臉識別face recognition

2022-03-30 09:07:28 字數 2995 閱讀 1537

人臉識別face recognition

0 簡介

人臉識別大致分為如下三個部分:

人臉檢測 face detection

人臉對齊 face alignment

人臉識別 face recognition,包括:

face verification:兩張相似程度。

face identification: 在庫中檢索與當前相似度最高的。

1 人臉檢測

face detection通常認為是在中找到人臉的過程,這個過程常用的辦法有用opencv呼叫』haarcascade_frontalface_default.xml』或者其他xml檔案構建分類器物件,通過detectmultiscale函式返回人臉框座標,在影象中框出人臉。也可以通過深度學習的方法定位人臉。

1.1 opencv-haarcascade檢測

1.2 faster-rcnn 檢測人臉

github : face-py-faster-rcnn

參考編譯過程中如果出現問題,參考faster rcnn +cudnn v5方法2,caffe + cudnn v5:

用最新caffe原始碼(的以下檔案替換掉faster rcnn 的對應檔案

include/caffe/layers/cudnn_relu_layer.hpp,

src/caffe/layers/cudnn_relu_layer.cpp,

src/caffe/layers/cudnn_relu_layer.cu

include/caffe/layers/cudnn_sigmoid_layer.hpp, src/caffe/layers/cudnn_sigmoid_layer.cpp, src/caffe/layers/cudnn_sigmoid_layer.cu

include/caffe/layers/cudnn_tanh_layer.hpp, src/caffe/layers/cudnn_tanh_layer.cpp,

src/caffe/layers/cudnn_tanh_layer.cu

用caffe原始碼中的這個檔案替換掉faster rcnn 對應檔案

include/caffe/util/cudnn.hpp

將 faster rcnn 中的 src/caffe/layers/cudnn_conv_layer.cu 檔案中的所有v3版本的函式名稱替換為v5版本

cudnnconvolutionbackwarddata_v3 函式名替換為 cudnnconvolutionbackwarddata

cudnnconvolutionbackwardfilter_v3函式名替換為 cudnnconvolutionbackwardfilter

在根目錄下執行python ./tools/run_face_detection_on_fddb.py,可返回座標

1.3 ssd-face 檢測人臉

github: ssd-face

1.4 mtcnn 檢測人臉

facenet正是利用mtcnn檢測人臉和inception-resnet-v1來識別。

- github: facenet

需要配合識別3.4節一起使用,自己修改後可以利用opencv讀入攝像頭直接識別人臉。

2 人臉對齊

face alignment指在標定人臉位置後對人臉上的特徵進一步定位,可以對人臉檢測的側臉進行校正,旋轉,3d變換等,也可以對特徵點進行特定的表情變化。常用的有5點和68點特徵。如dcnn,tcdcn,mtcnn等方法。

2.1 dcnn

3 人臉識別

人臉識別是由cnn提取人臉的特徵,將兩張待測輸入至訓練好的cnn,提取全連線層的特徵。模型一般是由預訓練的分類模型演變,如1000個人,每個人50張訓練的cnn模型。

3.1 face verification

兩張待測在訓練好的模型上提取全連線層特徵,如vgg的fc7層的4096維特徵,進行cosin距離計算。利用vgg-facecaffemodel,如果角度光照相同,可以達到0.93左右的準確率,戴眼鏡的影響很大。經過測試vgg-face在0.71至0.73表現最好。

3.2 face identification

將庫的每張(小規模100人至大規模上百萬)在訓練好的模型上提取全連線特徵,將待測同樣提取特徵,對所有特徵進行相似度計算,排序後得到相似度最大的。vgg-face,gtx970排序乙個特徵約10−5s

。在大規模資料集的排序可使用lsh等方法。

3.3 vgg-face 實現

3.4 facenet的inception-resnet-v1實現

github: facenet

可以利用triplet loss 或 softmax loss + center loss 訓練,最終的結果呈現為128維特徵。可以自行修改為opencv讀入攝像頭直接識別版本。其lfw驗證率為99.2%。

4 整合實現

測試中,casia經過opencv的haarcascade cropface後,丟進vgg-face,30類top1約 96%,top5 97.3%。

vggface的lfw在98%以上。

對vgg-face的finetune效果很差,正在嘗試resnet50

利用opencv的haarcascade + vgg-face識別速度很快,但檢測精度不高

利用face-faster-rcnn檢測+vgg-face識別速度較慢,約5.5fps,但是測量也可以檢測。

利用facenet,即mtcnn+inception-resnet-v1組合的人臉識別系統,在lfw上可以達到99.2%的準確率。在970下測試跑,可以達到10幀以上。

tips

可以利用import image,imagefont,imagedraw以及drwa.text在輸出**新增中文。

可以新增註冊功能。

可以新增距離轉換百分比功能。

可以預存特徵值。

可新增判斷人臉庫可以根據是直接儲存在乙個大資料夾下,還是儲存在對應人姓名的資料夾下,通過程式的flag(0,1)來判斷如何輸出以及檢測特徵。

可新增連續幀判斷。

人臉識別 人臉庫

1.mit 影象集 美國,麻省理工學院 包括 16 人,每個人有不同光照 不同尺寸 不同角度的 27 張 2.feret 影象集 美 方 此影象集包含大量的人臉影象,並且每幅圖中均只有乙個人臉。該集中,同乙個人的 有不同表情,光照,姿態和年齡的變化。3.umist 影象集 英國,曼切斯特大學 20 ...

人臉識別之人臉檢測

人臉識別分為人臉檢測 人臉預處理 蒐集和學習人臉以及人臉識別四個部分,此部分將人臉檢測。本文基於opencv進行的。在opencv中常用的人臉檢測器有基於lbp的特徵檢測 基於haar的特徵檢測,兩者的區別 前者比後者快好幾倍且不需要許可協議,但很多haar檢測器需要許可協議。基於haar的臉部檢測...

人臉識別API 人臉比對

api協議說明 路徑 輸入引數 字段型別 描述seq可選 string 會話序號 非必填 imga string 資料 base64編碼 原始建議小於3m,格式限定為jpg bmp png三種格式 imgb string 資料 base64編碼 原始建議小於3m,格式限定為jpg bmp png三種...