虹軟開發(fā)心得--Linux Server1.0版本的初嘗試

很久沒有嘗試新的虹軟識別版本了厨相,主要是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個依賴條件:

1.1.1 庫依賴GLIBC 2.17及以上:檢測命令: dpkg -l | grep libc6
image.png
1.1.2 庫依賴GLIBCXX 3.4.21及以上檢測命令: strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
image.png
1.1.3 編譯器GCC 4.8.2及以上

檢測命令: gcc --version
image.png

1.2 NET8 運行環(huán)境安裝:
由于Linux系統沒有自帶Net8環(huán)境辨泳,我們需要自行檢測安裝虱岂。安裝命令如下:
apt install dotnet-host-8.0

安裝完成后,我們進行下環(huán)境檢測:dotnet --info
image.png

1.3 so環(huán)境部署:

為了讓程序能找到虹軟SDK的鏈接文件菠红,我們將2個so上傳部署到:/usr/lib/路徑第岖,避免調用時無法找到。
image.png

1.4 Demo代碼的編輯试溯,發(fā)布蔑滓,部署與測試:
1.4.1 編輯:
為了相關測試,筆者基于Net8的WebApi程序進行了封裝(源代碼鏈接:Ares/ArcsoftFaceLinuxServer1.0
)遇绞。感興趣的看官下載后键袱,需要根據自己的賬號填寫WebApi項目下Program.cs文件下的appID,appKey以及activeKey等相關信息即可開始編輯摹闽。

image.png

1.4.2 發(fā)布:
完成代碼編輯后,選擇“發(fā)布”蹄咖,由于是直接部署到Linux環(huán)境shang,我們需要如下配置:
image.png

1.4.3 部署:
上傳部署文件夾里面的所有文件到Linux系統的項目文件夾付鹿,輸入啟動命令:dotnet WebApi.dll 程序部署運行成功澜汤。
image.png

打開Swagger測試界面(默認:Swagger UI)此刻,虹軟Linux Server1.0版本的demo算部署成功了舵匾。
image.png

1.4.4測試:
部署完成后,大家自然要跑出"Helleo World"才算放心俊抵,ok安排。我們自己準備2張照片纽匙,調用“CompareTwoFaces”接口务蝠,即可完成校驗。
image.png

2.Demo程序模塊講解:

Demo程序主要分為四塊,WebApi(應用層模塊)馏段,Interface(接口層模塊)轩拨,Share(數據結構/枚舉模塊)以及最主要的AcrsoftEngine(算法封裝模塊)。我們主要介紹下算法封裝模塊院喜,便于看官們根據自己需求修改調用亡蓉。
image.png
2.1 ArcFaceServerSDK1_0.cs文件,是so文件中的算法接口的C#封裝喷舀,根據需要轉化了部分參數的格式砍濒,參數可以參考PDF文檔或備注。
image.png

2.2 ArcSoftProcesses.cs文件硫麻,是基于ArcFaceServerSDK1_0.cs的算法接口的具體函數調用爸邢。Demo包含了服務器上應用最多的“增刪查改”部分∧美ⅲ看官可以根據此進行修改和擴充杠河。
image.png
2.3 DataProcessUtil.cs數據處理支持文件,封裝了常用的指針操作函數浇辜。
image.png

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一樣的數據媒咳。


image.png

3.2“查找人臉”接口:人臉識別的主要應用,對比現場采集的圖片與注冊人臉庫的信息种远,返回相似度最大的結果涩澡。此查詢接口是服務器版本的重點,完全內置了1:N循環(huán)功能坠敷,只需要傳入帶比較的特征信息妙同,就可以很高效的得出內置特征數組中相似度最大的那個人臉特征以及對應的相似度射富。要注意的是:
3.2.1.使用前必須先調用ASFRegisterFaceFeature接口注冊對比庫數據。
3.2.2.與ASFRegisterFaceFeature使用的引擎保持一致粥帚。

3.2.3.對比模型有大模型和中模型可以選擇胰耗,但二者特征值長度不一樣,不可混用芒涡。
image.png
3.3 “更新人臉數據”接口:更新searchId相同的特征數據柴灯,如果原注冊數據沒有這個searchId,則執(zhí)行失敗/無效费尽。
image.png
更新后再次調用Search查找赠群,人臉信息已經更新。
image.png
3.4 “刪除人臉”接口:對現有注冊數據進行刪除旱幼。searchId置-1可以全刪除查描,同一個searchId多次執(zhí)行會失效/失敗。
image.png

4.后記
初版嘗試了虹軟Linux Server1.0版本后速警,我發(fā)現虹軟在算法準確性叹誉,易用性等方面又有了較大提升,尤其在服務器的應用場景下闷旧,不需要再自己構造復雜的數據結構與引擎池长豁,極大方便了使用者。
當然忙灼,任何產品都有上升空間匠襟,內置1:N的模式雖然好,但是數據持久化畢竟是服務器應用不可回避的話題该园。目前的SDK沒有方便內置注冊數據批量導出的接口酸舍,這無疑會給使用者的數據持久化造成不小風險,希望虹軟再下一次的更新中適當考慮這點里初。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末啃勉,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子双妨,更是在濱河造成了極大的恐慌淮阐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刁品,死亡現場離奇詭異泣特,居然都是意外死亡,警方通過查閱死者的電腦和手機挑随,發(fā)現死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門状您,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事膏孟∶蟹郑” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵骆莹,是天一觀的道長颗搂。 經常有香客問我,道長幕垦,這世上最難降的妖魔是什么丢氢? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮先改,結果婚禮上疚察,老公的妹妹穿的比我還像新娘。我一直安慰自己仇奶,他們只是感情好貌嫡,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著该溯,像睡著了一般岛抄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狈茉,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天夫椭,我揣著相機與錄音,去河邊找鬼氯庆。 笑死蹭秋,一個胖子當著我的面吹牛,可吹牛的內容都是我干的堤撵。 我是一名探鬼主播仁讨,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼实昨!你這毒婦竟也來了洞豁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荒给,失蹤者是張志新(化名)和其女友劉穎族跛,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體锐墙,經...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年长酗,在試婚紗的時候發(fā)現自己被綠了溪北。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖之拨,靈堂內的尸體忽然破棺而出茉继,到底是詐尸還是另有隱情,我是刑警寧澤蚀乔,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布烁竭,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜塘娶,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一郭脂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧输虱,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喉钢。三九已至姆打,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肠虽,已是汗流浹背幔戏。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留舔痕,地道東北人评抚。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像伯复,于是被迫代替她去往敵國和親慨代。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內容