隨著人臉識別的日益普及,它的應(yīng)用場景越來越廣。近幾年面市的門禁機、考勤機、校園班牌等終端,紛紛集成了人臉識別功能。但與此相對,相應(yīng)場景下“服役”多年的老舊設(shè)備,由于早期產(chǎn)品設(shè)計往往沒有攝像頭,并且老舊設(shè)備算力也不足以支撐人臉識別算法的運行。但如果將這些老舊設(shè)備全盤替換,不僅成本昂貴還需要解決系統(tǒng)迭代兼容性問題。
那么如何低成本讓老舊設(shè)備煥發(fā)新生機?近期,筆者從市場上了解到,虹軟視覺開放平臺聯(lián)合多家產(chǎn)業(yè)鏈合作伙伴,推出了一款可外接的AI攝像頭模組,內(nèi)置芯片和高精度算力,能夠在原設(shè)備基礎(chǔ)上輕松升級實現(xiàn)人臉識別。
一、什么是AI攝像頭模組?
首先要介紹一下虹軟視覺開放平臺,它是業(yè)內(nèi)知名的免費視覺AI算法提供方,開放了人臉識別、活體檢測、人臉屬性分析、人證核驗等一系列算法SDK。支持免費商用,而且能夠離線運行,在一些對信息安全要求高,或者不具備聯(lián)網(wǎng)條件的封閉場景下,都非常適用。
該AI攝像頭模組概況來說,是一款能夠急速上手的軟硬一體化小型開發(fā)機,可以讓AI算法落地更標準化,更小巧化。
軟件上,模組集成了虹軟視覺開放平臺ArcFace人臉識別算法及相應(yīng)配套應(yīng)用軟件服務(wù)。算法能力上除了人臉比對、識別、屬性檢測、人證核驗等多種基礎(chǔ)功能外,還支持大面積遮擋下的人臉識別,抵御攻擊方面具備RGB/IR活體檢測雙重保障,支持離線激活使用,同時自帶圖像質(zhì)量檢測功能,自動過濾畫面模糊或小角度的人臉圖像,提升識別準確率和識別速度。
硬件上,模組集成了UVC攝像頭和RV1109芯片,通過USB接口對外輸出視頻流數(shù)據(jù),只需要將模組插入相應(yīng)設(shè)備,即可工作。其中,自帶RV1109芯片平臺提供算力這點非常重要,不僅解決了老設(shè)備算力不足的問題,而且RV1109芯片性價比非常高,很適合門禁、閘機的改造。
同時,該AI攝像頭模組除了支持跨Android、 Windows、Linux等多系統(tǒng)運行,算法計算結(jié)果以JSON標準化輸出,標準化接口可供平臺移植、拓展業(yè)務(wù)。
此外,這款A(yù)I攝像頭模組可通過硬件適配參數(shù)調(diào)節(jié),適配不同分辨率的設(shè)備,適用場景也非常豐富,像人員注冊、人臉識別開門、考勤打卡、門禁權(quán)限管理、識別記錄查詢等功能,老設(shè)備都可以通過外接AI攝像頭模組來實現(xiàn)。
二、項目開發(fā)詳細介紹
從虹軟商務(wù)獲取了其產(chǎn)業(yè)鏈伙伴的AI鏡頭模組,虹軟已經(jīng)把模組的服務(wù)軟件部署進去了,同時也提供了Windows及Android的客戶端Demo,如果沒有特殊需求,安裝客戶端之后基本能做到即插即用。在我個人的開發(fā)過程中,因為項目本身有定制化需求,所以沒有用虹軟開放平臺官方提供的客戶端APK,而是自己做了Android的上位機開發(fā)。簡單來說,項目首先需要獲取UVC視頻流,將視頻圖像顯示在Android上位機上;其次利用RNDIS將模組和Android上位機建立通信;最后通過Arc服務(wù)獲取到算法處理結(jié)果,并將結(jié)果顯示到Android上位機,以下是我的開發(fā)過程。
2.1 USB攝像頭SDK封裝
獲取USB攝像頭視頻流需要借助第三方框架,我在Github上找到了一個開源的框架:https://github.com/saki4510t/UVCCamera,把項目代碼clone到本地,使用AndroidStudio打開項目代碼;修改“Application.mk文件,運行“ndkBuild”;編譯成功后,得到“arm64-v8a”和“armeabi-v7a”兩個架構(gòu)的so包,并編譯出jar包;或者執(zhí)行assembleRelease任務(wù),編譯出libuvccamera-release.aar包,供后續(xù)項目使用,如下圖所示:
2.2 集成USB攝像頭SDK
新建Android項目,將“libuvccamera-release.aar”開發(fā)包添加到項目libs文件夾中,修改build.gradle文件,編譯項目,這樣開發(fā)包就集成好了,如下圖所示:
2.3 AI攝像頭模組獲取
虹軟AI攝像頭模組類似于一個軟、硬件結(jié)合的小型開發(fā)機。軟件上,模組集成了人臉識別算法及應(yīng)用軟件,通過RNDIS(RNDIS是指Remote NDIS,基于USB實現(xiàn)RNDIS實際上就是TCP/IP over USB,就是在USB設(shè)備上跑TCP/IP,讓USB設(shè)備看上去像一塊網(wǎng)卡)服務(wù)和Android上位機通信;硬件上,模組集成了UVC攝像頭,通過USB接口對外輸出視頻流數(shù)據(jù),只需要將模組插入Android上位機,即可工作。
2.4 實現(xiàn)UvcCameraHelper獲取UVC視頻流
2.4.1 獲取到UsbDevice
我自己實現(xiàn)了一個UvcCameraHelper類,用來管理USB攝像頭的生命周期。不同于集成好的Android設(shè)備攝像頭,AI攝像頭模組作為一個外接設(shè)備,需要使用“USBMonitor.java”類遍歷獲取,attach到對應(yīng)的USB設(shè)備后,請求USB權(quán)限,如果權(quán)限通過,會有一個onConnect回調(diào),表示USB設(shè)備已連接,可以進行下一步操作了,具體如下圖所示:
如上圖,onConnect方法回調(diào)成功以后,就可以對UsbDevice進行下一步操作了。
2.4.2 開啟USB攝像頭
拿到UsbDevice后,借助UVCCamera類,就可以開啟USB攝像頭了,調(diào)用UVCCamera.open()和UVCCamera.startPreview()方法后,攝像頭開啟成功,使用TextureView作為顯示視頻圖像數(shù)據(jù),就可以在Android上位機實時顯示攝像頭圖像數(shù)據(jù)了,具體實現(xiàn)如下圖所示:
2.5 接入AI攝像頭模組
2.5.1 實現(xiàn)網(wǎng)絡(luò)通信
AI攝像頭模組里面集成了Arc服務(wù),用于檢測、識別人臉,并將人臉結(jié)果對外輸出。將 AI模組插入Android上位機USB接口上,Arc服務(wù)就會自啟動了。
通過RNDIS,我在Android端實現(xiàn)了一套Http和WebSocket通信服務(wù),用來和AI模組進行數(shù)據(jù)傳輸。如下圖所示,使用Retrofit作為網(wǎng)絡(luò)通信框架:
如下圖所示,創(chuàng)建API服務(wù),和AI模組進行網(wǎng)絡(luò)數(shù)據(jù)交互:
如下圖所示,創(chuàng)建WebSoket服務(wù),用于接收AI模組人臉識別數(shù)據(jù):
通過以上步驟,就完成了AI攝像頭模組和Android上位機網(wǎng)絡(luò)通信功能。
3.5.2 網(wǎng)絡(luò)數(shù)據(jù)交互
Arc服務(wù)包含設(shè)備激活、人員注冊、設(shè)置參數(shù)等API。
如下圖所示,調(diào)用激活接口,激活A(yù)I模組,才能夠進行后續(xù)操作:
如下圖所示,調(diào)用注冊人員接口,將人臉庫注冊到AI模組中,用于后續(xù)人臉識別:
AI攝像頭模組集成了人臉識別算法及算法核心業(yè)務(wù),將模組攝像頭對準人臉,開始識別人臉,并最終將人臉識別結(jié)果輸出。如下圖所示,我實現(xiàn)了一個WebSocket服務(wù),用于接收人臉識別結(jié)果數(shù)據(jù):
2.5.2 數(shù)據(jù)顯示
拿到人臉識別結(jié)果數(shù)據(jù),包括人臉框,人臉I(yè)D,人臉圖片等。如下圖人臉識別結(jié)果數(shù)據(jù)結(jié)構(gòu):
通過自定義View,使用Paint和Canvas類,繪制人臉框Rect數(shù)據(jù);根據(jù)type類型判斷識別結(jié)果,包括識別成功、識別失敗等,并將人員信息顯示在UI上。
到這里,AI模組和Android上位機就接入好了。
三、注意事項
由于虹軟SDK只包含arm64-v8a和armeabi-v7a的so包,在編譯USB攝像頭SDK的時候,只能編譯對應(yīng)架構(gòu)的so包;
需要選擇對應(yīng)的USB設(shè)備ID,才能正常開啟USB攝像頭,注意不要選錯;
AI模組連接過程中可能會斷開,需要做一些重連操作。
(免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )