很久沒有嘗試新的虹軟識別版本了厨相,主要是3.0以后幅聘,免費版本就再未更新凡纳,加上工作太忙,導致后面的版本沒有及時嘗鮮帝蒿。好在這幾天,因為一些機緣巧合巷怜, 發(fā)現了虹軟發(fā)布了特殊的服務器版本葛超,號稱可以輕松支持上萬的人臉對比了,還不需要自己在構造多線程來實現延塑。懷著好奇之心绣张,我申請了一個測試版本,測試下是否對普通的版本有較大提升关带。畢竟服務器版本的單價就上萬侥涵,夠買100個普通版本了。
老規(guī)矩宋雏,開發(fā)前先看文檔芜飘。PDF打開走起,先粗略看了一遍磨总,原來的接口基本都有保留嗦明,部分數據結構有一些變化。但是蚪燕,服務器版本增加了幾個“增娶牌,刪奔浅,查,改”的新接口诗良,而且是內置在引擎的內存空間里面汹桦,好家伙,虹軟這次是要把飯幫大家嚼碎了喂嘴里鉴裹。也算是幫各位開發(fā)減小開發(fā)難度和成本了舞骆。廢話不多說,我們來部署嘗試下壹罚。
1葛作,環(huán)境準備
這次虹軟發(fā)布的是Linux版本(so的鏈接庫),筆者基于C#語言(Net8版本)進行封裝,由于SDK激活驗證機制對docker部署不算友好(多次部署容易造成激活碼報廢)猖凛,所以本次選擇直接部署在Linux系統(以 Ubantu 24.04.01 LTS版本作為部署環(huán)境)赂蠢。
1.1 SDK依賴環(huán)境檢查:
根據虹軟PDF的提示,SDK本身需要保證以下3個依賴條件:
檢測命令: gcc --version
1.2 NET8 運行環(huán)境安裝:
由于Linux系統沒有自帶Net8環(huán)境辨泳,我們需要自行檢測安裝虱岂。安裝命令如下:
apt install dotnet-host-8.0
1.3 so環(huán)境部署:
1.4 Demo代碼的編輯试溯,發(fā)布蔑滓,部署與測試:
1.4.1 編輯:
為了相關測試,筆者基于Net8的WebApi程序進行了封裝(源代碼鏈接:Ares/ArcsoftFaceLinuxServer1.0
)遇绞。感興趣的看官下載后键袱,需要根據自己的賬號填寫WebApi項目下Program.cs文件下的appID,appKey以及activeKey等相關信息即可開始編輯摹闽。
1.4.2 發(fā)布:
完成代碼編輯后,選擇“發(fā)布”蹄咖,由于是直接部署到Linux環(huán)境shang,我們需要如下配置:
1.4.3 部署:
上傳部署文件夾里面的所有文件到Linux系統的項目文件夾付鹿,輸入啟動命令:dotnet WebApi.dll 程序部署運行成功澜汤。
打開Swagger測試界面(默認:Swagger UI)此刻,虹軟Linux Server1.0版本的demo算部署成功了舵匾。
1.4.4測試:
部署完成后,大家自然要跑出"Helleo World"才算放心俊抵,ok安排。我們自己準備2張照片纽匙,調用“CompareTwoFaces”接口务蝠,即可完成校驗。
2.Demo程序模塊講解:
3.服務器常見使用流程演示:
由于本次嘗試的是Linux Server1.0版本券敌,自然考慮到服務器上最常見應用無非是注冊人臉信息,查找人臉柳洋,更新人臉數據以及刪除人臉待诅。于是筆者在Demo里構造了上述四部,進行分析講解與Demo演示熊镣,供看官們參考卑雁。
3.1”注冊人臉信息“接口:人臉識別的第一步,Demo接口采用單人注冊模式绪囱。
3.1.1.SDK接口支持批量注冊序厉,傳入ASF_FaceFeatureInfo 數組,但是務必保持數組中每個searchId是唯一的key值毕箍。(建議自己在程序中運維一個Dictionary<int,string>檢測新值,以及對照出tag道盏。)
3.1.2. tag值一般就是人名或者人員編碼而柑,建議采集時單人模式,避免混亂荷逞。
3.1.3. 無法直接覆蓋searchId一樣的數據媒咳。
3.2“查找人臉”接口:人臉識別的主要應用,對比現場采集的圖片與注冊人臉庫的信息种远,返回相似度最大的結果涩澡。此查詢接口是服務器版本的重點,完全內置了1:N循環(huán)功能坠敷,只需要傳入帶比較的特征信息妙同,就可以很高效的得出內置特征數組中相似度最大的那個人臉特征以及對應的相似度射富。要注意的是:
3.2.1.使用前必須先調用ASFRegisterFaceFeature接口注冊對比庫數據。
3.2.2.與ASFRegisterFaceFeature使用的引擎保持一致粥帚。
4.后記
初版嘗試了虹軟Linux Server1.0版本后速警,我發(fā)現虹軟在算法準確性叹誉,易用性等方面又有了較大提升,尤其在服務器的應用場景下闷旧,不需要再自己構造復雜的數據結構與引擎池长豁,極大方便了使用者。
當然忙灼,任何產品都有上升空間匠襟,內置1:N的模式雖然好,但是數據持久化畢竟是服務器應用不可回避的話題该园。目前的SDK沒有方便內置注冊數據批量導出的接口酸舍,這無疑會給使用者的數據持久化造成不小風險,希望虹軟再下一次的更新中適當考慮這點里初。