4月13日结束的计算机视觉沙龙圆满落幕。本期沙龙从构建图像识别系统的方法切入,讲述腾讯云人脸识别、文字识别、人脸核身等技术能力原理与行业应用,为各位开发者带来了一场人工智能领域的技术开拓实践之旅。下面是范锦老师关于腾讯云人脸识别系统在传统行业的应用与落地的总结。
讲师介绍:范锦,腾讯高级研发工程师。毕业于武汉大学计算机系。目前在腾讯云大数据与人工智能产品中心担任后台开发,负责智能图像相关AI产品,拥有智慧交通、智慧零售、安防等行业人工智能落地的丰富经验。
我今天分享的这个主题会从以下这几个方向展开,首先我会简单的从技术角度给大家介绍一下人脸识别技术的一些基本原理和发展历史。第二部分我希望跟大家一起分享和介绍腾讯云人脸识别技术的一些相关产品和技术架构。第三部分是我们结合实际腾讯云在一些传统行业的实际落地的case向大家分享一些我们遇到的挑战,以及我们在现实中是如何解决这些问题的。
我觉得从技术的角度来说其实人脸识别一种基于面部特征的比较,能使我们的计算机具备一个身份鉴别能力的一种技术。那么一个完整的人脸识别系统会包括哪些方面呢?首先我们要有一个离线的算法模型的训练层,针对海量的人脸库进行一个训练,训练完之后会生成一个特征模型。当然,作为个计算机系统,还需要有一个图像采集的输入层,输入层可以是我们是摄像头的视频流或者是原始照片。接下来最关键的是识别层,通过离线训练得到的模型结合输入的图片进行一系列的预处理以及人脸检测、特征提取等等一系列的操作,最后生成特征向量,接下来再做一系列实际的应用。主要的应用场景大概两种,一种是人脸比对,也就是输入两个图片来比较这两个人的相似度,第二种应用更多的场景是人脸检索,也就是当输入一张图片的时候怎么样能快速的在我们的海量图库中找出跟他相似度最高的一个或者若干个人脸。
实际上人脸比对和人脸检索这两个技术相对来说是我们平时用的比较多的两种技术,但是从更加广义的角度来讲,其实人脸识别并不只是这两种技术的合集,它可能包括更多,像人脸检测、人脸配准、属性识别等等一系列相关的技术。
人脸识别技术最近因为深度学习技术的发展,才慢慢的开始为大家所熟知,但实际上人脸识别技术从上世纪五十年代左右科学家就开始对这个技术进行研究,不到十年的时间内,就已经开始在工程上进行研究和应用。直到本世纪初随着机器学习和深度本世纪初的技术发展,才又一次将人脸识别的技术拉到大众眼前,被大家所熟知。
腾讯云也一直致力于去研究和应用人脸识别技术,来给大家提供各种便利的接入和实际业务上的应用。我们在去年523的时候也是首次提出我们所有的AI相关产品做免费的接入,同时在我们去年年底的时候,也是发布了我们全新的人脸识别2.0版本,大家有兴趣的话可以线下去扫描我们后面提供的二维码,我们每一个产品都有相应免费的调用次数的体验,大家可以来尝试使用一下。
刚才提到腾讯云人脸识别技术,接下来我想从我们的产品和技术两个角度给大家介绍一下腾讯云具体的人脸识别技术的具体实现以及具体的应用场景。
提到腾讯云的人脸识别技术,当然不得不提到我们优图实验室这个算法团队,优图实验室可能不像腾讯云这么为大家所耳熟能详,但实际上腾讯云大部分的产品都是基于优图实验室的算法来给大家提供服务的。优图也是在近年来在各种世界级的比赛中不断的刷新世界纪录,斩获了很多的奖项,目前已经跻身世界前列的一个研发团队。
除了优图,由于腾讯云还拥有QQ、微信,还有GPU集群、FPGA基础设施支持,在这些基础上我们自研了弹性伸缩的调度平台,推出了离线训练平台和在线推理系统。在两个系统基础之上又延伸出了各大AI产品线,这中间当然也包括我们的明星产品-人脸识别。
腾讯云的人脸识别总的来说可以大致分为这几类,一类是人脸检测与分析,五官定位、人脸比对和静态活力检测这一类不带状态的API。第二大类是像人员库、人脸搜索、人脸验证等需要状态存储的API。接下来我会详细的对这些产品或者技术进行一个详细介绍。
首先我们来介绍一下人脸检测与分析,它的原理是通过用户输入一张人脸图片,我们能快速的检测出人脸位置以及面部属性,比如性别,是男还是女,还有年龄大约多少岁,以及美丽程度或者是光线的质量是怎么样的。而不同于人脸检测与分析,五官定位这个接口会从更细粒度的角度输入检测结果,比如说这个接口会输出眉毛、眼睛、鼻子、嘴巴等等一系列五官的特征点。它的应用场景就更加广泛了,假设哪一天咱们女朋友希望说能不能把我的迪奥001换成迪奥999,用这个五官定位技术快速的定位到嘴唇的特征点进行色素的替换。当然这里面还有贴纸、融合任务的特效也需要用到五官定位,还有更多的使用场景等待大家进一步的去挖掘。
人脸比对这个接口相对来说比较简单了,实际上就是我们输入两张图片,然后我们通过特征点比较,能输出这两张图片的相似度。
静态活检这个功能可能大家会相对比较陌生一点,它的主要作用是输入一张图片的时候我们系统能够判断这张图片到底是自拍还是翻拍的照片,比如我在考勤的时候迟到了,让我的同事拿我的照片进行签到,这时候可以用静态活检发现这是一张照片翻拍而不是真正的一个人。
人脸搜索,在人员库中搜索出一个或多个人员,同时还有相似度的分值,这个使用场景非常之广泛了,比如后面提到的安防的领域,比如智慧零售、物流,比如蜂巢来做寄件和收件,包括旅游行业去做人脸购买和园区寻人。这个服务一般会结合人员库进行配套使用,也就是需要预先在人员库里添加人脸,腾讯云这边的人员库的设计是类似组织架构的设计,这样的话我们实际的生活场景非常匹配,同时,我们对每个人的人脸实现了多人脸的模式支持,因为可能一个人在不同的效果下人脸是不一样的,这样会进一步的优化我们最终的检测效果。同时我们对这些人员库的接口也提供自定义的属性名和属性值的支持,比如说一些游戏集成商,他希望基于腾讯的人脸识别接口开发更加上层的行业应用,就可以通过我们自定义的属性满足他自己的要求,不需要再单独设计一套自己的存储或者是逻辑系统。
腾讯云的人脸识别公有云的大致架构大致是这个样子。首先,是客户端或者SDK会通过我们的云API进行就近的接入,同时在我们内部模块之间,通过腾讯自研的tars-RPC框架,来实现信令和数据传输。在数据层,我们把用户数据拆成三块:特征数据库、逻辑数据库、用户输入的原数据库,这三部分数据根据他们的职能不同存储在不同的数据库中。当然,这里就会就涉及到数据库需要做一个分布式的数据库的部署,我们也自研了一套组件来支持不同数据的分布式存储,这个组件第一是满足了我们在线系统的一个快速响应,同时又能保证落地的数据达到最终的一致。
另外不知道大家注意到没有,我们这边有一个非常核心的模块,就是算法中台,这个是在做我们AI平台的时候引入了这样一个中台,一方面,我们上层应用需要接入一个新的算法的时候,通算法中台的引入,只需要调用中台通用的接口即可,而不需要关心底层具体的实现。另一方面引擎中台能搜集我们一些检测数据,这样的话就能够把我们大数据和AI进行一个结合,然后快速的把数据和算法进行一个正向反馈,更加去优化算法,从而提升我们的核心竞争力。
前面介绍了一下腾讯云的人脸识别的产品和技术架构,实际上大家可能会有一个疑问,现在人脸识别炒的这么火,到底它有没有一些实用的价值呢?这个可能不得不提到Gartner的新兴技术成熟度曲线,对于人工智能来说是不是也是类似的曲线呢?我们可能在现实中更多的看到是这样子,比如AlphaGo出现了,大家可能觉得人类是不是要被AI取代了,非常之惶恐,实际上随着技术慢慢的往前推移,很多幻想破灭之后发现AI不过如此,除了哗众取宠之外就是骗子,AI技术对我们更多的是好处还是坏处?我个人觉得主要是看用它的人,怎么用。再深入一点,这里其实就会牵扯到三大互联网公司分别对AI的战略,大家知道,腾[T1] 讯的战略是AI in All,对百度来说就是All in AI,对于阿里他们在AI的战略,可能不是特别明确。。
具体来说,刚才讲了腾讯的主要战略是AI in All,实际上就是很多传统行业利用AI来进行产业赋能,接下来我从三个我们真正在实践的行业和领域向大家分析一下我们在落地中遇到的挑战和解决方案。
首先看一下安防,安防相对来说比较敏感,安防区别于传统或者互联网行业的不同点在于,安防必须是完全私有化部署,它不允许有公有云的成分在,这就要求我们需要真真事实到比如公安系统的机房进行部署,针对公安系统提出的要求,比如需要做一些追逃、爆恐的识别,我们会针对具体的需求给他们开发了我们的PaaS、SaaS两个层级的应用,公安人员他们通过这个视频流的实时监控以及摄像头的快速管理,包括可以做一些布控任务的配置,同时我们有一个主动推送的模块,它的主要作用是我们可以针对每一个不同的摄像头识别和分析出来的人脸信息,主动推送到这个摄像头附近的巡检人员的终端设备上,他们能快速收到后台的分析结果从而去实施一些实时巡检的工作,真正做到指哪儿打哪儿。
第二点我跟大家分享一下人脸识别在交通的应用,这里我想以人脸识别系统和深圳地铁结合的案例给大家描述。地铁行业也有其固定的特点,在人脸识别出现之前,本身有一套完整的系统,我们需要在已有系统的基础上把人脸识别加上去,这样的系统复杂度是非常之高的。目前深圳地铁的线路数量达到11个,对应站点199个之多,同时四千多个闸机在正常的使用,每天人流量会达到600万。但这还仅仅只是去年下半年的数据,随着现在深圳不断的发展,这个数据也在不断的增长。
第二点地铁项目由于涉及到真实的用户数据的扣费,可能要求我们对这个准确率要求非常之高,做算法的同学比较清楚。实际上像现在的深度网络、机器学习面临着一个准确率、拒识率、误识率没法做到平衡的问题,这个问题在像地铁这个场景就会显得非常而我们在业界首次通过引入指静脉生物识别技术,进行辅助验证,成功解决了识别准确率低的问题。
第三点是对性能的要求,大家知道我们平时过地铁闸机的情况,大部分闸机能识别我们的交通卡或者单程票,直接在闸机上去做验证票和开关闸机,但对人脸识别来说需要把用户的照片上传到云端进行比对再把结果下发下来,这样性能的开销是非常之大的,而地铁对我们提的要求是必须在150毫秒内完成,这个是他们离线闸机的过闸时间。我们从客户端到网络到后台,整个链路做了很多的优化,包括端上做了很多的图片压缩、图片裁减,包括端上SDK做了很多针对化的升级、优化,以及在网络层不同的网络栈,从应用层、安全层、传输层都做了不同的算法和参数的调优。后台也从两方面展开,一方面是算法的升级,另一方面也引入了很多硬件的优化,比如我们采用了英伟达最新的算法GPU进行提速。
同时我们除了这个系统的性能升级之外也将我们互联网平时运营中用到的思路,比如说柔性策略,真正应用到传统行业中,在不同的网络或者是现场的环境下,我们采用不同的比对策略,这样也得到了客户的认可,在线上实际测试的时候效果也是非常明显。
第三块,我希望给大家介绍一下人脸识别在零售行业的实际应用场景。这可能是一个典型的应用场景,大家如果是做技术的能看懂这个简单的流程图。我们在一个零售门店上,通过部署很多个摄像头抓拍到客户人脸之后做人脸搜索,判断他是不是VIP是不是在我们店中出现过,出现过的话可能会提醒我们的店员这是一个熟客,或者他最近的消费记录是什么样的,他最近有没有一些购买其他产品的记录,然后去提醒我们的店员去做对应的销售指引。
我们通过用户途径客户的分析包括门店客流等等,然后把信息数字化之后,去对用户做一些标签,最后反馈到运营系统中,给我们的客户提供一些运营的指引和对应的建议。举个例子,比在某个商场中,我们可能去检测用户逛动的曲线,以及在每一个不同区域的停留时间的热力图,通过这些数据分析之后就能得到比如人流量最大的区域,人流经过最频繁的区域,以及用户在哪儿停留时间最长,哪些是完全不会经过的,这样会总结归纳出一套结论,去合理规划用户的行走路线,去洞察品类和商品之间的关联性,从而精准的定位我们的人货关系。
最终通过这一系列的操作,就可以优化我们的商品布局、营销策略以及他们具体在门店中应该怎么去摆放他们的品类,真正做到以数据来驱动决策的效果。
这是一个实际的案例,在某个运动品牌的门店,先采集用户数据发现这个门店里面销售和女性占比存在10%的差异,那是不是还有潜在的空间可以挖掘?比如对陈列的调整,比如更加突出某一类产品以及色系的改变,比如冷色系和暖色系的调整,去吸引到女性用户,试运行之后发现了实际上在门店的销售额得到了一个非常大的提升,提升了40%左右的销售。
前面讲了三大块,通过我们介绍腾讯云的人脸识别产品,在安防以及交通和零售三个行业的应用,反馈出我们在利国利民和利企三个方面的成绩和实际的落地case。AI这个技术得看我们怎么使用,并不是像有些乐观派觉得它一定会取代人类,也不会像一些悲观者它完全是骗子,就看我们怎么去使用它。
总结一下今天我的分享,首先我给大家介绍了一下人脸识别一些相关的技术原理和发展历史。第二部分给大家介绍了一下腾讯云人脸识别技术的产品和具体的技术架构。第三块给大家介绍了我们在不同的行业的具体应用的实际案例,这就是我今天给大家分享的具体的技术和产品。
Q & A
Q:现在安防领域用人脸识别,安防的硬件系统比如根据现场的照片去人脸处理,犯罪现场视频监控捕捉到只有一条,怎么去识别?
A:这个问题很专业,这个同学应该做过相关的产品或者技术,因为这涉及到另外一个技术,人脸搜索,这会跟人脸检索有点类似,我们通过这张图片去回溯各个摄像头抓拍到的人脸,去做比对,我们会发现这个用户的时间线是什么样的,比如他在某一个时间在哪里停驻过,比如从火车南站到了某个公交站或者地铁站去分析他的曲线。
这其实是有一个时间窗口的库,实际上随着时间的推移,这个库的量是非常之大的,同时如果回溯太长时间的数据也是没有意义的,所以我们会根据不同的场景或者是数据量的大小会拆分我们的这个库,比如说我们会做一个滑动窗口,动态的缩减已经过期的那部分数据,从而提升我们的检索效率。
Q:比如有时候看眼神,一个人说假话明显看得出来,鉴别瞳孔的变化从而判断说假话在人脸识别中是怎么实现的?
A:这个问题是一个AI在测谎具体场景的应用,首先我并不是做算法研究的,接下来我们有一个博士专家会给大家介绍相关的技术,应该会提到这一点。不过我这里简单的介绍一下,的思路也是利用现有的深度学习的技术,像我最开始说的模式,首先我们需要有大批量数据去做训练,训练出来之后,标注之后,对数据进行训练,拿到这个数据之后我们再生成特征模型,再通过我们用户的输入来做一个比对和检测。
Q:最基本的种子数据是人告诉机器还是机器告诉人?
A:现在种子数据肯定是需要人来标注的。
Q:人脸识别从测试的角度有什么好的测试?尤其用例设计覆盖率如何保证?
A:首先海量的数据是来自公开的库,如果需要新的数据的话,这其实回到刚才的框架所说的,可能是需要一定的数据积累,我们可能确实是需要有一个大的平台或者是我们的一个大的产品来支持说我们首先要有输入。比如一些公共的数据采集平台,他可能有天然的优势。但假设说需要的话,我们肯定需要有种子数据的,这个可能确实是一个相辅相成的过程,确实也不可能在我们手里什么数据都没有的情况下就能做到一个很好的测试集的设计,可能需要慢慢不断的滚动,让效果达到更好,同时测试数据又来反馈算法,算法做进一步的提升,这样一个良性的闭环。