当前位置: 首页 > 编程日记 > 正文

万人马拉松赛事,人脸识别系统如何快速、准确完成校验?

作者 | 阿里文娱技术专家墨贤

出品 | AI科技大本营(ID:rgznai100)

大麦的人脸闸机在2019年杭州马拉松上成功的完成了刷脸入场功能的首秀,相比传统的马拉松入场核验方案在入场体验和入场效率上都有了很大的提升,下面介绍一下大麦的人脸识别是如何支持马拉松赛事的。

马拉松赛事流程介绍

马拉松赛事的流程主要分三步:

第一步,参赛者到马拉松官方网站报名,报名成功后会通知选手;

第二步,报名成功的选手需携带身份证到官方指定的地点领取装备;

第三步,比赛当天携带号码簿验票入场进行比赛。

我们面临的挑战是:

1、如何在指定时间内完成参赛者的装备领取工作:既要保证快速领取不造成人员积压,又要保证装备不会领错;

2、 如何保证比赛当天在短时间内完成几万人的入场核验工作。

大麦人脸识别解决方案

在介绍大麦的人脸识别方案之前,首先介绍人脸比对的几个常用术语:

1比1:1比1是指用照片跟人进行比对,通过算法判定照片和人是否是同一个人,简单理解就是证明“你就是你”。

1比N:1比N是指在N个人的照片库里(底库)进行查找,通过算法判定这个人是否在这些照片里面,通俗来讲就是“我是谁”。

清楚了马拉松赛事的流程之后,下面介绍大麦是如何支持现场领取装备和比赛当天入场核验的,在我们的方案里面比赛当天的入场核验是压力最大,风险最高的,而且这个也是依赖前两步的。

选手入场比赛时不会携带手机和证件,那如何进行验票呢?

大麦传统做法:提前跟主办沟通,在号码簿中放置一个射频芯片,芯片号与号码簿上的号码一一对应,这样通过验票设备扫描到芯片后会查询到这个选手的参赛信息,包括照片(来源于第1步和第2步),为什么需要照片?只有拿到照片然后和本人进行比对才能确认是不是本人还是替跑,这就用到了人脸识别,也就是上面所说的1比1比对。

这个方案是可行的,但面临两个问题:

1、 号码簿是第三方公司负责的,经常会遇到号码簿里没有芯片或者芯片号跟号码簿上的号码不一致(实际发生率还比较高),这就会造成选手无法直接核验入场,需要人工处理;

2、 这种入场方案需要先核验芯片,再进行人脸比对,在马拉松赛事中有一些力不从心,因为几万名选手需要在短短的半个多小时完成入场,压力可想而知。

如何优化选手入场,既避免号码簿芯片的问题又能快速准确的核验?

这就用到人脸识别的1比N,我们提前拿到所有选手的照片,选手直接刷脸进行比对,快速核验入场。

这个优化的方案需要做到以下两点:

1、 安全的人脸比对算法,该进去的人放行通过,不该进去的人拒绝开闸;

2、 提前获取所有选手的照片,而且照片质量需要足够好,用作人脸比对的底库

人脸比对算法这块要求是比较严格的,马拉松赛事每年都有很多替跑的人,我们的人脸算法必须要能找出替跑者,而且大麦的验票场景像演唱会的门票动辄上千,是决不允许让无票的人入场,当然也要让买了票的人能够正常通过,这样的场景与刷脸支付场景比较像,因此我们使用了成熟的金融级别的人脸算法。

获取所有选手的照片的问题,我们是通过前面介绍的报名和领装备的环节解决的:

我们会要求选手在报名的时候提交一张本人的照片,但是这不能保证所有人都提交了质量足够好的照片,而且提交的照片是本人。这就需要在现场领取装备的时候解决,因为这影响到比赛时能否正常顺利入场。

下面介绍我们是如何在完成领取装备的同时获取到选手的照片:

我们都知道,入场验票时是需要票的,选手在使用身份证领装备的时候其实他的身份证就是一张票,选手使用大麦的闸机系统刷身份证后,系统会根据身份证号读取到选手的信息,然后会通过闸机的打印系统打印出一张小票,选手拿着小票到相应的窗口领取参赛装备。但是这样无法满足主办的要求,必须要求选手持本人身份证到现场领取装备,当然也无法满足我们自己的需求——获取到所有选手的照片。因此我们在选手刷身份证的时候对他进行了1比1比对,确认是本人后再去采集一张用户现场的照片,这就完成了身份确认和照片的获取。

在这个方案里,领取装备的这个流程其实是可以优化的,用户在第1步报名时提交的照片有很多是质量很好可以直接用的,没有必要到现场再进行一次采集,对于这部分用户我们有了他们的照片之后会引导他们直接通过1比N人脸刷脸比对入场打印小票进行领取装备,这个方案的优点是:

1、 直接刷脸,无需刷身份证+1比1比对+采集,让领取效率更高,避免现场排队

2、 解决了很多已上传人脸的用户忘带身份证或者身份证丢失导致的无法领取装备的问题

        

小结:我们通过报名的时候引导选手提交照片,通过现场引导让提交照片的选手直接刷脸领取装备,对于刷脸识别失败和未成功提交人脸的选手通过1比1进行本人确认并进行人脸采集,这样就确保了所有选手的照片都到了我们的人脸底库,也就使得我们在比赛当天可以让选手直接使用1比N比对直接刷脸入场。

保护用户隐私与数据安全

我们的人脸识别入场的方案是基于用户的照片,这就涉及到用户的隐私,我们会在马拉松报名的时候提前告知用户,获得用户的授权,我们需要做的更多的是如何保证用户照片的安全。下面介绍我们的方案:

闸机识别到用户后需要显示用户的照片,为了保护用户的照片不被泄露,我们对读取用户照片的接口做了授权判断,非授权设备无法获取照片数据,只有已授权的设备才能获取到照片数据,且是已经进行过加密处理的,保证了数据不会从端上泄露。

现场采集用户照片时,我们会将采集到的照片进行编码之后再进行一次加密操作,加密之后上传到服务端,上传成功之后会立即删掉本地的照片。在本场比赛结束之后服务器会自动将所有照片删掉。

通过以上操作,保证了用户的照片数据安全,也就保护了用户的隐私。

人脸闸机软件架构演进

讲完了我们的人脸识别方案,下面再介绍一下我们的软件架构是如何支撑我们的人脸识别入场:

我们的闸机采用的是安卓系统,开发闸机的人脸核验系统跟开发普通的安卓应用稍有不同,我们需要针对硬件进行适配:机芯(摆闸、辊闸),打印机,二维码模块,RFID模块,身份证模块等。

那整个闸机的软件架构很自然的就成下面的样子:

这样的方案用起来是没有问题的,但是时间长了会发现几个问题:

  • 无论是改动业务代码还是硬件驱动代码都需要针对整个应用升级

  • 随着闸机型号的增多,程序中会有各种型号的驱动,导致硬件驱动的代码臃肿,不易维护

  • 关于硬件的适配,由于跟业务代码合在一起,只能我们自己来做,无法交给闸机的厂商

因此在这个基础上我们对软件架构进行了优化: 业务程序与驱动程序分开,采用了面向接口编程的思想,业务程序通过AIDL的方式将命令给到驱动程序。

这样的好处显而易见:

  • 业务和驱动代码不再耦合在一起,各自独立,业务应用只需关心业务逻辑,驱动应用做好硬件驱动的事情

  • 业务程序无需关心驱动程序如何实现,驱动程序的实现可以交由厂家实现,我们制定标准就好了

  • 业务程序和驱动程序独立升级,按需升级

  • 每种型号的设备使用统一的业务程序,只安装自身的驱动程序,不再需要将所有的不同型号的设备驱动代码都放在一起


人脸识别能力优化

我们采用了安全的人脸识别算法,但这不表示算法就能解决我们现场的所有问题,大麦的现场环境较刷脸支付场景更为复杂,下面介绍我们是如何优化和提升我们的人脸识别能力:

1、解决底库增大&&降低误识率

研究过人脸算法的同学应该清楚,再完美的人脸算法也会有误识的情况,也就是误识率,而且随着底库的变大,误识率也会跟着上升。马拉松的场景几万人很正常,既要降低误识率又要满足底库的变大,看似一个矛盾的问题,而且算法层面目前是无法解决,但必须要解决业务问题,我们的思路是:既然算法无法解决,那只能通过业务去解决,我们知道马拉松赛事还细分为全马,半马,情侣跑,迷你跑,家庭跑等不同的种类,那我们就可以根据这些不同的种类将人群分开,这样就做到了减少了底库,那误识率自然会降低。

2、人脸数据全流程打通

上面讲过通过报名网站进行人脸采集或者现场刷身份证进行现场采集,完成人脸采集,但是还有一种情况是用户既没有在报名时上传照片,有没有携带身份证,这些用户只能通过大麦APP进行采集,那如何保证APP上采集了之后能马上入场领取装备?那就需要把整个流程打通,具体如下:

3、动态远程调优

马拉松的人脸识别场景其实要比人脸支付的场景复杂,人脸支付大多是在室内,光线的影响会相对小一些,而马拉松既要考虑室内场景(领取装备)又要考虑户外场景(开跑入场),面临着曝光过度、逆光侧脸和远距离等的影响,因此需要根据具体环境来进行调优,我们通过在管理端动态修改影响人脸算法的各种参数,以及是否采用降级方案等,远程下发到现场所有设备,确保选手顺利高效入场,不会引起排长队的问题。

总结

我们根据马拉松赛事实际的业务场景,将人脸识别功能1比1和1比N应用到马拉松赛事,开启了马拉松行业的新的入场模式,但是我们的路还很长,人脸算法需要继续提升:提高识别率与降低误识率,不同环境下人脸算法的优化配置,室内与户外的不同验票方案以及已经开始商业化的5G能否给我们的业务带来新的突破,我们会将人脸识别功能应用到更多的核验场景,持续提升现场用户的入场体验和通行效率。

【end】◆有奖征文◆推荐阅读超轻量级中文OCR,支持竖排文字识别、ncnn推理,总模型仅17M网红直播时的瘦脸、磨皮等美颜功能是如何实现的?比特币最主流,以太坊大跌,区块链技术“万金油”红利已结束 | 区块链开发者年度报告一文了解 Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控!用 3 个“鸽子”,告诉你闪电网络是怎样改变加密消息传递方式的!出生小镇、高考不顺、复旦执教、闯荡硅谷,59 岁陆奇为何如此“幸运”?你点的每个“在看”,我都认真当成了AI

相关文章:

Collection集合List、Set

Collection集合,用来保存一组数据的数据结构。 Collection是一个接口,定义了所有集合都应该包含的特征和行为 Collection派生出了两类集合 List和Set List接口:List集合的特征是元素是可重复且有序 Set接口:Set集合的特征是元素是…

如何用Jupyter Notebook制作新冠病毒疫情追踪器?

出品 | AI科技大本营(ID:rgznai100)新冠肺炎已在全球范围内爆发。为了解全球疫情分布情况,有技术人员使用Jupyter Notebook绘制了两种疫情的等值线地图(choropleth chart)和散点图。前者显示了一个国家/地区的疫情扩散…

关于Aptana studio工具

今天,使用了Aptana studio这个工具,界面类似于Myeclipse因使用MyEclipse比较顺手,这个工具上手还挺容易的。而且比Dreamweaver好用多了,有代码提示的工具,再加上工具不大,耗内存较小。挺喜欢这个工具的。写…

再谈JSON -json定义及数据类型

再谈json 近期在项目中使用到了highcharts ,highstock做了一些统计分析。使用jQuery ajax那就不得不使用json, 可是在使用过程中也出现了非常多的疑惑,比方说,什么情况下我们须要去将字符串转换为json对象。什么情况下就不须要转换。通过hql和sql查询返回…

Linux软连接和硬链接

1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux的…

学语言不是写程序!

这是发到我邮箱里面的一封信,嗯,类似的信有好几封,春节期间呢,我主要陪笑笑,呵呵,不办公,就一直压着没有回答,有点delay了,现在给这几位同学抱个歉哈,对不住了…

“AI”战疫在行动,一文盘点百度大脑增援疫情防控的AI操作

2020年春节,注定将刻进每个人的记忆。面对突如其来的新型冠状病毒感染的肺炎疫情,除了一线医护人员的日夜奋战,“人工智能”也在特殊时期走向前沿,接受了抗疫洗礼。 3月13日,今年第一期百度大脑开放日首次通过直播的形…

POJ 2778 AC自己主动机+矩阵幂 不错的题

http://poj.org/problem?id2778 有空再又一次做下,对状态图的理解非常重要 题解: http://blog.csdn.net/morgan_xww/article/details/7834801 另外做了矩阵幂的模板: //ac.sz是矩阵的大小 void mulmtr(long long x[MAXNODE][MAXNODE],long l…

Libevent调用

1.最基本的打印libevent版本 #include <event.h> #include <stdio.h>int main() {const char *version event_get_version();printf("%s\n",version);return 0; }# gcc getVersion.c -o getVersion -levent 参考&#xff1a;https://github.com/mike-zh…

如何更新你的机器学习模型?手把手带你设计一个可持续的预测模型!

作者 | CloudFactory译者 | 天道酬勤 责编 | 徐威龙出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;高效的机器学习模型需要高质量的数据。训练你的机器学习模型并不是过程中的单个有限阶段。即使将其部署到生产环境中&#xff0c;也可能需要稳定的新训练数据流来确保…

占失物,笔记本电脑电池

公历&#xff1a;2009年3月18日18时11分 农历&#xff1a; 农历己丑年(牛)二月廿二 节气&#xff1a; 2009年3月5日19时2分惊蛰年建&#xff1a;己丑 月建&#xff1a;丁卯 日建&#xff1a;壬戌 时建&#xff1a;己酉 断:玄武中值天地合,故能寻到,在西方,又为长生之地,故为住…

Scala Learn 1 Basic

Chap 0 前言 focus on: Scala 的语法十分简洁Scala 运行在虚拟机之上, 可以使用 java 的海量类库和工具Scala 拥抱函数式编程的同时&#xff0c;并没有废弃面向对象Scala 既有动态语言那样的灵活简洁&#xff0c;同时有保留了静态类型检查的安全与执行效率Scala 既能处理脚本化…

linux下使用NetBeans调试libevent库

1.安装libevent 参考&#xff1a;http://blog.csdn.net/unix21/article/details/8679269 libevent安装在usr/local/libevent下 2.安装netBeans http://www.netbeans.org 3.配置netBeans 1)打开项目的属性选项&#xff0c;选择包含目录&#xff0c;把/usr//local/libevent/…

批量删除指定文件

Linux下的解决方法: # Linux Batch Delete find /home/data/-name ab.doc-exec rm -f {} \;注&#xff1a;最后反斜杠前有一空格&#xff0c;最后一个是分号。Windows下的解决方法:rem Windows Batch Delete 1: DEL /Q /S D:\home\data\*.class 2: FOR /R D…

百万人学AI:CSDN重磅共建人工智能技术新生态

站在AI发展的新十年起点上&#xff0c;CSDN将发挥开发者优势&#xff0c;与中国AI各行业和企业共建“百万人学AI”新技术生态。 作者 | CSDN新媒体事业部 8年前&#xff0c;现图灵奖得主Hinton团队在ImageNet竞赛中首次使用深度学习完胜Google等其它团队&#xff0c;顿时让工…

Android Property Animation属性动画:scale缩放动画(4)

&#xfeff;&#xfeff;Android Property Animation属性动画&#xff1a;scale缩放动画&#xff08;4&#xff09; 和之前我写的附录文章1,2,3相似&#xff0c;本文将接着使用Android Property Animation属性动画实现一个缩放的动画。代码部分和文章1,2,3中的代码大同小异&am…

结构体的两种声明方式:堆上和栈上以及在双链表的应用

在看《算法精解&#xff1a;C语言描述》的双链表chtbl和redis的双链表adlist.c发现代码思路基本是一致的。 但是&#xff0c;对于链表的初始化却不一样 1.《算法精解&#xff1a;C语言描述》风格 /************************************************************************…

COM 组件设计与应用(六)——用 ATL 写第一个组件(vc.net)

一、前言 1、与 《COM 组件设计与应用(五)》的内容基本一致。但本回讲解的是在 vc.net 2003 下的使用方法&#xff0c;即使你不再使用vc6.0&#xff0c;也请和上一回的内容&#xff0c;参照比对。2、这第一个组件&#xff0c;除了所有 COM 组件必须的 IUnknown 接口外&#xff…

《评人工智能如何走向新阶段》后记(再续19)

由AI科技大本营下载自视觉中国304. 也来讨论构建模拟人类思维过程的认知计算机制&#xff0c;好像这个问题迄今尚未获得解决。 我们先从输入的信息类型说起&#xff1a;一类是语言输入&#xff08;包括词、句、文本&#xff09;&#xff0c;第二类是图像输入&#xff08;包括图…

PHP下载/采集远程图片到本地

2019独角兽企业重金招聘Python工程师标准>>> PHP下载/采集远程图片到本地01 /** 02* 下载远程图片到本地 03* 04* param string $url 远程文件地址 05* param string $filename 保存后的文件名&#xff08;为空时则为随机生成的文件名&#xff0c;否则为原文件名&am…

Linux守护进程实现

Linux守护进程 redis版&#xff1a; void daemonize(void) {int fd;if (fork() ! 0) exit(0); /* parent exits */setsid(); /* create a new session *//* Every output goes to /dev/null. If Redis is daemonized but* the logfile is set to stdout in the configuration …

美团十年,支撑最大规模外卖配送的一站式机器学习平台如何炼成?

作者 | 艳伟&#xff0c;美团配送技术团队资深技术专家编辑 | 唐小引题图 | 东方 ICAI 是目前互联网行业炙手可热的“明星”&#xff0c;无论是老牌巨头&#xff0c;还是流量新贵&#xff0c;都在大力研发 AI 技术&#xff0c;为自家的业务赋能。配送作为外卖平台闭环链条上重要…

Windows 2008 R2中的NAP新功能详解

随着Windows Server 2008 R2版本的发布&#xff0c;Windows网络访问保护模式&#xff08;NAP&#xff09;又增加了新功能。在本文中&#xff0c;笔者将对新功能进行简要的介绍。Windows Server 2008中提供的网络访问保护(NAP)功能已经更新到R2版本。在Windows功能、无线网络访问…

whoosh学习(1)

2019独角兽企业重金招聘Python工程师标准>>> 背景 当前项目需要用到全文搜索redis不方便实现mysql效率太低搜索引擎选择 pylucenewhoosh&#xff08;似乎更受欢迎&#xff0c;文档最全&#xff09;为什么选择 纯python实现&#xff0c;省了编译二进制包的繁琐过程。…

仿照redis写的nginx开机画面

redis有一个开机画面&#xff1a; 下面是我写的的nginx开机画面&#xff1a; 新建一个文件 asciilogo.h //仿照redis风格打印一个logo,这样启动的时候就不会不注意 char *ascii_logo " …

房子成焦点,被挂马的房产网站仍在增加中

统计发现&#xff0c;近期大部分使用极光漏洞挂马&#xff0c;这个漏洞实在是太好用了。没打补丁&#xff0c;没装网盾&#xff0c;按网马广告上说的&#xff0c;有不弹、不卡、不闪三大“优点”&#xff0c;点击挂马网页会中招。今天新增被挂马的知名房产网站列表&#xff08;…

检测、量化、追踪新冠病毒,基于深度学习的自动CT图像分析有多靠谱?

作者 | Ophir Gozes, Maayan Frid-Adar等译者 | 刘畅出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;背景&#xff1a;新冠病毒的传播非常迅速&#xff0c;并对数十亿人的生活产生了重大影响。由于非对称胸部CT已被证明是检测、量化和追踪该疾病的有效工具&#xff0…

关于产品体验以及产品会被抄袭的思考

一个好产品本来可以以免费让用户注册为开始吸引用户并从而能引导用户进行消费和购买的&#xff1b;但是由于可能考虑到当前这个产品可能会被别人抄袭&#xff0c;从而设定了门槛&#xff0c;然后营销团队进行沟通&#xff0c;和别人说当前的产品是多么多么的好&#xff0c;从而…

Linux socket 网络编程 常用头文件

一 三种类型的套接字&#xff1a;1.流式套接字&#xff08;SOCKET_STREAM)提供面向连接的可靠的数据传输服务。数据被看作是字节流&#xff0c;无长度限制。例如FTP协议就采用这种。2.数据报式套接字&#xff08;SOCKET_DGRAM&#xff09;提供无连接的数据传输服务&#xff0c;…