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