戴口罩如何刷門禁?阿里工程師亮出“刷臉神器”
1. 背景介紹
疫情肆虐,有效隔離是盡快戰(zhàn)勝病毒的有效手段,多個地方政府都提出了嚴格的居民出行管理條例,例如杭州市余杭區(qū)2月3日發(fā)布了實行“十項從嚴”管控措施:
這給社區(qū)管理帶來新的挑戰(zhàn),傳統(tǒng)門衛(wèi)盯人存在以下幾個問題:
- 進出人員情況全憑人工記錄,出現(xiàn)錯漏,不能及時對頻繁外出居民有效勸阻。
- 缺乏全局角度對居民隔離整體情況的掌控和度量,例如有哪些人頻繁出入,出入總?cè)藬?shù)。
為了解決居民出入管理的上述幾個問題,阿里云智能數(shù)據(jù)庫向量檢索團隊免費提供一套高度兼容戴口罩場景下的人臉識別模型,并基于AnalyticDB的向量檢索能力, 搭建了一套小區(qū)人員管理的解決方案, 這個方案將開源給社區(qū)。
通過該方案可以有效的提升當(dāng)下疫情中的小區(qū)出入管理效率.同時我們免費提供AnalyticDB給用戶用于與當(dāng)前肺炎疫情相關(guān)的出入管理應(yīng)用。
下面首先介紹我們的方案,然后會對其中的人臉識別和AnalyticDB向量檢索關(guān)鍵技術(shù)做詳細介紹,方便開發(fā)者能夠做二次開發(fā),最后我們會附上開源地址。
2. 小區(qū)人員管理解決方案介紹
2.1小區(qū)人員管理解決方案功能
1)自動登記入冊小區(qū)人口, 基本信息和人臉特征,界面如下:
2)通過攝像頭自動做人臉識別,返回來訪者家庭的所有出入記錄。方便社區(qū)管理者進行高效的出入管理,在當(dāng)前疫情環(huán)境下, 人們普遍佩戴口罩, 去掉口罩會增加肺炎感染的風(fēng)險, 所以本方案提供一套支持戴口罩情況下人臉識別的算法, 演示效果如下:
3)可以通過人臉照片和結(jié)構(gòu)化信息的任意組合來檢索住戶的來訪記錄,并提供統(tǒng)計分析能力,為小區(qū)管理者提供全局度量數(shù)據(jù)。
2.2 應(yīng)用架構(gòu)總體設(shè)計
出入管理系統(tǒng)的總體架構(gòu)如下圖所示,前端界面通過HTML和javascript實現(xiàn), 功能包含支持戴口罩場景下的人臉門禁, 通過人臉識別查詢來訪者的全部家庭成員2日內(nèi)的出入記錄, 人員登記, 后臺通過人臉和結(jié)構(gòu)化信息自由組合搜索來訪記錄等功能.。
人臉識別模塊將包含人臉的視頻轉(zhuǎn)換成人臉特征向量, 人臉識別模塊主要使用了Seetafce引擎的人臉檢測和人臉追蹤模塊和AnalyticDB團隊自研的人臉識別, 眼部識別和口罩檢測模型.AnalyticDB負責(zé)整個應(yīng)用中的全部的結(jié)構(gòu)化數(shù)據(jù)和人臉識別模塊產(chǎn)生的人臉特征向量的存儲和查詢。
3. 關(guān)鍵技術(shù)介紹
3.1 針對疫情的人臉識別算法
算法流程如下圖所示, 在人員登記過程中我們分別通過人臉識別模型和眼部識別模型提取登記人的面部整體特征和眼部特征, 并將提取的特征向量寫入AnalyticDB。在查詢過程中, 我們首先會通過口罩檢測模型來檢測來訪人是否有佩戴口罩, 如果沒有佩戴口罩, 我們會使用整體面部的特征在AnalyticDB中檢索相似的特征, 如果有特征與來訪者面部特征相似度滿足閾值, 則返回對應(yīng)的結(jié)果。
如果來訪者有佩戴口罩, 那么鼻子、嘴巴等特征會缺失, 使用整體面部特征提取模型無法準確的檢索到正確的記錄。這時我們會使用眼部識別模型提取來訪者眼部, 額頭等不會被口罩遮擋的部位的特征, 然后再AnalyticDB中檢索之前保存的眼部特征。
系統(tǒng)中使用的人臉識別模型, 眼部識別模型和口罩檢測模型將全部開源給社區(qū)。經(jīng)過測試口罩檢測模型的準確率>99.5%. 人臉識別模型和眼部識別模型在學(xué)術(shù)界常用的數(shù)據(jù)集上的準確率如下表所示。
可以看到僅僅使用眼部特征, AnalyticDB的模型在LFW數(shù)據(jù)集上仍然有99+%以上的識別準確率.。
3.2 AnalyticDB向量版特性介紹
分析型數(shù)據(jù)庫(AnalyticDB)是阿里云上的一種高并發(fā)低延時的PB級實時數(shù)據(jù)倉庫,可以毫秒級針對萬億級數(shù)據(jù)進行即時的多維分析透視和業(yè)務(wù)探索。
AnalyticDB for MySQL 全面兼容MySQL協(xié)議以及SQL:2003 語法標準, AnalyticDB forPostgreSQL 支持標準 SQL:2003,高度兼容 Oracle 語法生態(tài). 目前兩款產(chǎn)品都包含向量檢索功能, 可以支持人臉, 人體, 車輛等的相似查詢和推薦系統(tǒng)。
目前AnalyticDB在真實應(yīng)用場景中可以支持10億級別的向量數(shù)據(jù)的查詢, 100毫秒級別的響應(yīng)時間. AnalyticDB已經(jīng)在多個城市的安防項目中大規(guī)模部署。
在一般的包含向量檢索的的應(yīng)用系統(tǒng)中, 通常開發(fā)者會使用向量檢索引擎(例如Faiss)來存儲向量數(shù)據(jù), 然后使用關(guān)系型數(shù)據(jù)庫存儲結(jié)構(gòu)化數(shù)據(jù). 在查詢時也需要交替查詢兩個系統(tǒng), 這種方案會有額外的開發(fā)工作并且性能也不是最優(yōu)。
AnalyticDB支持結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)(向量)的檢索,僅僅使用SQL接口就可以快速的搭建起以圖搜圖或者圖片+結(jié)構(gòu)化數(shù)據(jù)混合檢索等功能. AnalyticDB的優(yōu)化器在混合檢索場景中會根據(jù)數(shù)據(jù)的分布和查詢的條件選擇最優(yōu)的執(zhí)行計劃,在保證召回的同時,得到最優(yōu)的性能。
在我們的出入管理系統(tǒng)中, 我們通過AnalyticDB實現(xiàn)了同時使用照片, 性別, 年齡, 起始時間, 終止時間來查詢出入記錄的功能。
這樣的以圖搜圖+結(jié)構(gòu)化搜索功能, 可以通過一條SQL實現(xiàn):
- select name, # 姓名
- gender, # 性別
- age, # 年齡
- time, # 出入時間
- l2_distance(feature, array[-0.017,-0.032,...]::real[]) as distance # 向量距離
- from demo.person a, demo.face_feature b, demo.access_record c
- where a.pid = c.pid
- and a.pid = b.pid
- and name = '張三' # 姓名條件
- and gender = '男' and age = 30 # 性別條件
- and time >= '2020-02-07' # 起始時間條件
- and time <= '2020-02-09' # 結(jié)束時間條件
- order by distance; # 用向量相似度排序
其中表demo.person存儲了每個人的基本信息,demo.face_feature存儲了人臉特征向量, demo.access_record存儲了所有的來訪記錄. pid是每個人的獨有ID。
結(jié)構(gòu)化信息+非結(jié)構(gòu)化信息(圖片)混合檢索在實際應(yīng)用中被廣泛使用的. 例如在人臉門禁系統(tǒng)被部署在多個小區(qū)時, 我們使用一張表存儲了所有小區(qū)的人臉特征, 在人臉檢索時我們只需要檢索當(dāng)前小區(qū)的人臉特征. 在這種情況下, 使用AnalyticDB我們只需要在SQL中增加where 小區(qū)名 ='xxx' 就可以輕易實現(xiàn)。
4. 結(jié)尾
復(fù)制下方鏈接至瀏覽器打開或者識別下方二維碼,即可查看項目開源詳情:
https://github.com/aliyun/alibabacloud-AnalyticDB-python-demo-face-recognition