当前位置: 首页 > 科技观察

戴口罩如何刷门禁?阿里工程师炫耀“刷脸神器”

时间:2023-03-18 18:41:03 科技观察

1。背景介绍疫情肆虐,有效隔离是尽快战胜病毒的有效手段。不少地方政府提出严格居民出行管理规定。例如,杭州市余杭区2月3日出台“十严”管控措施:这给社区管理带来新的挑战。传统门卫标识存在以下问题:人员进出情况人工记录,存在误差和遗漏,频繁外出不能及时有效劝阻住户。缺乏从全局的角度对居民隔离的整体情况进行控制和衡量,比如谁经常进出,进出总人数等。为解决上述居民门禁管理问题,阿里云智能库矢量检索团队提供了一套高度兼容免费戴口罩场景的人脸识别模型,并基于矢量检索AnalyticDB的能力,构建了一套社区人事管理。该解决方案将向社区开放源代码。通过该方案,可以有效提升当前疫情下的社区门禁管理效率。同时,我们免费向用户提供AnalyticDB,用于当前肺炎疫情相关的访问管理应用。下面先介绍我们的解决方案,然后详细介绍人脸识别和AnalyticDB矢量检索的关键技术,方便开发者进行二次开发,最后附上开源地址。2.社区人事管理解决方案介绍2.1社区人事管理解决方案功能1)自动登记社区人口、基本信息和面部特征,界面如下:2)通过摄像头自动进行人脸识别,返回所有出入口访客的家庭记录。方便社区管理者进行高效的门禁管理。在当前疫情环境下,人们普遍佩戴口罩,摘下口罩会增加感染肺炎的风险。因此,本方案提供了一套支持戴口罩人脸识别的算法。演示效果如下:3)通过人脸照片和结构化信息的任意组合,可以调取居民的来访记录,并提供统计分析能力,为社区管理者提供全局的测量数据。2.2应用架构总体设计门禁管理系统总体架构如下图所示。前端界面通过HTML和javascript实现。功能包括支持戴口罩场景下的人脸门禁,通过人脸识别查询来访者2天内所有家庭成员人数。出入记录、人员登记、后台通过人脸和结构化信息自由组合查询来访记录等功能。人脸识别模块将包含人脸的视频转换为人脸特征向量。人脸识别模块主要使用了Seetafce引擎的人脸检测和人脸追踪模块以及AnalyticDB团队Model开发的人脸识别、眼睛识别和口罩检测。AnalyticDB负责整个应用中所有结构化数据的存储和查询以及人脸识别模块生成的人脸特征向量。3.关键技术介绍3.1疫情人脸识别算法算法流程如下图所示。在人员注册过程中,我们使用人脸识别模型和眼睛识别模型提取注册人的整体面部特征和眼睛特征,并将提取的特征向量写入AnalyticDB。在查询过程中,我们会先使用口罩检测模型检测来访者是否佩戴口罩。如果没有,我们将使用整体面部特征来检索AnalyticDB中的相似特征。如果有特征与访客面部特征相似度满足阈值,则返回相应的结果。如果来访者佩戴口罩,则会丢失鼻子、嘴巴等特征,使用整体面部特征提取模型无法准确检索到正确的记录。这时候我们会使用眼睛识别模型来提取访客的眼睛、额头等不会被口罩遮挡的部分的特征,然后在AnalyticDB中检索之前保存的眼睛特征。系统中使用的人脸识别模型、眼睛识别模型和口罩检测模型都将开源给社区。测试的口罩检测模型准确率>99.5%。人脸识别模型和人眼识别模型在学术界常用数据集上的准确率如下表所示。可以看出,仅使用眼部特征,AnalyticDB模型在LFW数据集上的识别准确率依然在99+%以上。3.2AnalyticDB矢量版特性介绍AnalyticDB是阿里云上的高并发、低延迟的PB级实时数据仓库。可在毫秒级对万亿级数据进行即时的多维分析视角和业务探索。AnalyticDBforMySQL完全兼容MySQL协议和SQL:2003语法标准。AnalyticDBforPostgreSQL支持标准SQL:2003,高度兼容Oracle语法生态。目前这两款产品都包含了向量检索功能,可以支持人脸、人体、车辆等的相似查询和推荐系统。目前AnalyticDB在实际应用场景中可以支持10亿级向量数据的查询,响应时间为100毫秒。AnalyticDB已经在多个城市的安防项目中大规模部署。在包含矢量检索的一般应用系统中,开发人员通常使用矢量检索引擎(如Faiss)存储矢量数据,然后使用关系数据库存储结构化数据。查询的时候也需要两个系统交替查询。此解决方案将涉及额外的开发工作并且性能不是最佳的。AnalyticDB支持结构化数据和非结构化数据(向量)的检索,仅使用SQL接口即可快速构建图片搜索或图片+结构化数据混合检索等功能。AnalyticDB的优化器在混合检索场景下会根据数据分布和查询条件选择最优的执行计划,在保证召回的同时获得最优的性能。在我们的门禁管理系统中,我们通过AnalyticDB实现了同时使用照片、性别、年龄、开始时间、结束时间查询门禁记录的功能。这样一个图片搜索+结构化搜索的功能可以通过一条SQL实现:selectname,#namegender,#genderage,#agetime,#accesstimel2_distance(feature,array[-0.017,-0.032,...]::real[])asdistance#向量距离demo.persona,demo.face_featureb,demo.access_recordcwherea.pid=c.pidanda.pid=b.pidandname='张三'#nameconditionandgender='male'andage=30#性别条件andtime>='2020-02-07'#开始时间条件andtime<='2020-02-09'#结束时间条件orderbydistance;#按向量相似度排序表demo.person存放的是每个人的基本信息,demo.face_feature存放的是人脸特征向量,demo.access_record存放的是所有的访问记录。pid是每个人的唯一ID。结构化信息+非结构化信息(图片)的混合检索在实际应用中被广泛使用。例如,当人脸门禁系统部署在多个社区时,我们用一个表来存储所有社区的人脸特征,在查找人脸时,只需要检索当前社区的人脸特征即可。这种情况下,使用AnalyticDB,我们只需要在SQL中加入wherecommunityname='xxx'即可,很容易实现。4、最后复制下方链接到浏览器打开或识别下方二维码即可查看项目开源详情:https://github.com/aliyun/alibabacloud-AnalyticDB-python-demo-face-认出