當前開源的人臉檢測模型,識別很多,很多小伙伴也踩過不少坑。相信不少使用過dlib和facenet人臉識別的小伙伴都有這樣的疑惑,為什么論文里高達99.8以上的準確率,自己實際使用下來的準確率卻并不好,甚至用來落實到百人以內的人臉識別,都經常出現誤識別現象,造成這樣的現象最主要的原因來自于訓練人臉識別模型的樣本和國內人臉有差距。因此,這些看似準確率很高的模型,直接拿來做項目使用是不行的,測試兩種模型在使用幾百人的考勤圖片上的表現,準確率上dlib和facenet 都很不理想。
成都創新互聯長期為成百上千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為和龍企業提供專業的網站建設、網站設計,和龍網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。綜合比較,發現使用虹軟的人臉識別接口是目前開源,在國內人臉識別準確度上最好的選擇。
遺憾的是當前虹軟暫時沒有提供python 接口代碼,目前網上也有部分使用python調用虹軟接口的案例,但是類似文章千篇一律,基本都是同一個代碼,反復轉載,也并沒有能一個完整調用虹軟全部功能的python接口,函數名稱也隨意定義并不好記,使用pycharm 開發也沒有類函數成員代碼編寫提示,代碼部分不合理的地方也重復出現… 實在是不能忍受當前已發布 的python api 接口參差不齊的現象,為此,特意用了幾天時間將虹軟當前版本的全部功能寫出一個完整好用的python api接口。
本質上python接口是使用 ctypes 調用 虹軟的動態鏈接庫,需要去虹軟官網 去選擇 C/C++ 版本SDK 來下載依賴文件。為了在代碼使用上 和 虹軟 提供的 C/C++ 版本演示代碼基本一致,此 python 接口 的函數名和虹軟的函數名是一樣的,并且 demo.py 的結構 基本就是 C/C++ 版本演示代碼的 python 翻譯版。
代碼地址:
ArcFace-python
如果代碼對你有幫助,給個star 吧!
frame_byte=bytes(frame.data)
frame_byte_p=cast(framebyte,c_ubyte_p)
但是以上可以改為:
frame.ctypes.data_as(POINTER(c_ubyte))
這樣可以減少 numpy 圖像轉換為字節流這一步的消耗
1.當前接口需要下載虹軟最新的(2.2)C/C++版本 SDK。
2.虹軟的C/C++接口支持很多圖像格式傳入,但是 python 使用opencv 做圖像處理時基本都是 ASVL_PAF_RGB24_B8G8R8 這種格式(就是cv2.imread() 得到的numpy圖像),并且默認使用該接口時 都是使用 這種圖片格式。因此此接口 依賴 opencv,如果沒有可以直接pip安裝。
3.虹軟的配個函數都會返回一盒狀態碼,要做好狀態碼的判斷工作,確保使用正確,如果狀態碼 返回值不是 MOK(值為0),說明函數執行出錯,可以對照 doc文檔中的錯誤碼解釋對照。
4.第一次運行代碼需要聯網,因為會做激活操作,首次運行激活成功后會得到一個ArcFace64.dat文件,當有此文件以后,可以不用執行激活代碼。
5.涉及到傳入圖片的函數操作,要確保送入的圖片寬度為 4 的整數倍,如果不是則要提前做好裁剪,或者做resize操作。
6.當前默認為圖片檢測模式,人臉屬性值中的faceID始終為空,當需要運行視頻人臉檢測的話可以將 初始化引擎 函數中 ASF_DETECT_MODE_IMAGE改為 ASF_DETECT_MODE_VIDEO即代表追蹤模式,這樣可以減少人臉檢測的消耗,并且此時返回的人臉信息中的faceID 將會有值,這在視頻人臉識別中很有用,可以減少人臉重復提取識別。
7.特征值和人臉屬性檢測可能會失敗。虹軟在做特征提取和屬性提取這些功能時會對人臉區域有一個判斷操作,如果人臉模糊,或者提供的人臉坐標位置不對有偏差,會返回81925(人臉特征檢測結果置信度低)錯誤碼。所以一定要對返回狀態碼引起重視。
8.虹軟有兩個描述人臉檢測位置和角度信息的對象
ASF_SingleFaceInfo
(單人臉信息)
ASF_MultiFaceInfo
(多人臉信息),人臉識別流程是先檢測到人臉,再對人臉提取特征值信息,再用特征值信息比較相似度。虹軟人臉檢測時返回
ASF_MultiFaceInfo
對象(哪怕只檢測到了一個人),用于提取人臉特征信息的函數需要 輸入
ASF_SingleFaceInfo
的對象,因此在提取特征信息時,需要根據
ASF_MultiFaceInfo
中的信息 構建
ASF_SingleFaceInfo
對象來提取特征值,除了 提取特征值函數外,虹軟的其他人臉屬性 提取,比如:年齡/性別識別,活體檢測,人臉3D角度 等功能都是要送入
ASF_MultiFaceInfo
對象,但是其中活體檢測又要求單張大圖片中只能檢測一個活體,超出返回未知,而3D角度檢測單張大圖時最多返回4個 人臉的3D角度值,這些地方可能不太好控制,需要注意。
分享題目:虹軟最新版python接口完整版-創新互聯
本文來源:http://vcdvsql.cn/article40/cecoeo.html
成都網站建設公司_創新互聯,為您提供網站建設、網頁設計公司、網站營銷、企業建站、網站收錄、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯