虹軟 ArcFace 與 Dlib 人臉識別對比

2021-08-26 02:46:37 字數 1808 閱讀 1043

通過搜尋,目前發現,開源或免費支援離線的方案也有不少。目前初步考慮虹軟 arcface和dlib。通過官方的demo 和 網上的資料,寫了個工程,也可以在這裡看。

這裡說一下要注意的

攝像頭是使用了 opencv 來處理的,這裡可能會涉及到預覽圖和螢幕方向不一致的情況,我主要是通過一下**處理

// 轉換矩陣 這個也是主要使用 opencv 來處理的

private mat rotatemat(mat srcmat)

point center = new point(srcmat.cols()/2,srcmat.rows()/2);

mat dstmat = srcmat;

mat rotimage = imgproc.getrotationmatrix2d(center, _cameradisplayrotation, 1); // 獲取旋轉矩陣 逆時針旋轉。引數說明 center:表示旋轉的中心點;angle:表示旋轉的角度 ;scale:影象縮放因子

imgproc.warpaffine(srcmat, dstmat, rotimage, dstmat.size()); // 實現座標系仿射變換。引數說明 src: 輸入源影象;dst: 輸出影象;m: 仿射變換矩陣;dsize: 輸出影象的尺寸

if(mcameraindex == camera_id_front)

if(rotimage!=null)rotimage.release();

return dstmat;

}

// data 資料 注意資料格式是nv21的,目前虹軟只支援這種格式,可以通過攝像頭引數設定,也可以通過相關工具轉換得到

// width 寬

// height 高

// afd_fsdkengine.cp_paf_nv21 資料格式 目前虹軟只支援這種格式

// facedb 我的人臉特徵庫

listresult_fd = new arraylist<>(); // 用來存放檢測到的人臉資訊列表

afd_fsdkerror error_fd = engine_detection.afd_fsdk_stillimagefacedetection(data, width, height, afd_fsdkengine.cp_paf_nv21, result_fd); // 檢測人臉

afr_fsdkface face = new afr_fsdkface(); // 用來存放提取到的人臉資訊

afr_fsdkmatching score = new afr_fsdkmatching(); //score用於存放人臉對比的相似度值

for(int i=0; i < result_fd.size(); i++)

}}

測試結果

原圖是1280x960,經壓縮處理是320x240,經測試發現虹軟的壓縮和不壓縮,效果是差不多的

dlib測試結果

機型 一次人臉檢測耗時 一次乙個人臉特徵提取耗時 一次人臉特徵比對耗時

堅果 u1 280毫秒左右 6800毫秒左右 0.03毫秒左右

堅果 pro2 93毫秒左右 1060毫秒左右 0.002毫秒左右

虹軟測試結果

機型 一次人臉檢測耗時 一次乙個人臉特徵提取耗時 一次人臉特徵比對耗時

堅果 u1 43毫秒左右 943毫秒左右 0.883毫秒左右

堅果 pro2 20毫秒左右 314毫秒左右 0.308毫秒左右

從該測試可以看出 dlib 和 虹軟 arcface 的優缺點,兩個的效能瓶頸都在人臉特徵提取,dlib尤為突出。相對比dlib,虹軟 arcface更適合於手機端平台。

人臉識別演算法虹軟arcface和Dlib對比

dlib 和虹軟 arcface要做人臉識別前都需要先檢測人臉,要不然後續提取不到人臉特徵人臉特徵比對時,建議將需要識別的 人臉特徵庫預先載入到記憶體,這樣可以加快速度 當然也占用比較大的記憶體 在使用 dlib 做人臉檢測時要注意,人臉方向和 螢幕方向不一致時檢測不到人臉 虹軟 arcface 不...

人臉識別演算法arcface和Dlib對比

通過搜尋,目前發現,開源或免費支援離線的方案也有不少。目前初步考慮虹軟 arcface和dlib。通過官方的demo 和 網上的資料,寫了個工程,也可以在這裡看。這裡說一下要注意的攝像頭是使用了 opencv 來處理的,這裡可能會涉及到預覽圖和螢幕方向不一致的情況,我主要是通過一下 處理 dlib測...

虹軟人臉識別Android Sample Code

afr fsdkinte ce engine new afr fsdkengine 用來存放提取到的人臉資訊,face 1 是註冊的人臉,face 2 是要識別的人臉 afr fsdkface face1 new afr fsdkface afr fsdkface face2 new afr fsd...