王强 唐小飞作者

使用Intel Analytics Zoo增强腾讯TUSI身份识别的实践

本篇博客主要介绍了腾讯TUSI基于Intel开源大数据分析和AI平台Analytics Zoo (https://github.com/intel-analytics/analytics-zoo) 进行增强身份识别的实践经验。

背景

在现今的城市里,大多数现代化小区都已配备了门禁系统作为保护居民安全的一道重要屏障。传统的门禁系统一般采用门禁卡,但未授权人员仍然可以通过盗用复制门卡或尾随等方式进入小区。随着人工智能人脸识别技术的发展,已经有一些小区开始用智能人脸识别系统来代替门禁卡进行身份识别。当有人通过小区门禁,系统会通过摄像头拍摄的人脸提取面部特征并和已知业主进行匹配,从而确认此人是否为该小区的业主。人脸识别系统也可以与公安部门对接,识别已知的犯罪分子,进一步增加小区的安全性。但是这些人脸识别系统在实际使用中仍然会存在准确性的问题,因为拍摄照片的质量经常会受到光线、角度和人物运动的影响。

因此,我们希望可以通过多维度的信息来辅助人脸识别系统进行身份识别,来提高身份识别的准确率,使门禁系统更加有效,将来类似的系统也可用于其他安防场景。我们目前正在和一些小区合作进行实验。在这篇博客中,我们主要给大家分享一下利用WIFI信息辅助人脸进行身份识别的方法和初步结果。

为什么采用Apache Spark/HadoopAnalytics Zoo

我们选择使用Apache Spark/Hadoop框架搭建这个应用,以满足此场景所需的多样化数据的增减,清洗,管理,分析和可扩展性,且搭建好的应用可以部署运行在云端,降低服务器维护的成本。我们选择Analytics Zoo1作为我们构建深度学习应用的平台,因为它是目前在Hadoop/Spark框架上最方便的用于开发深度学习应用的平台之一。用Analytics Zoo读取和处理存放在Hadoop/Spark集群上的数据非常方便,而且Analytics Zoo在标准的Hadoop/Spark集群上做训练和预测并不需要对集群有特殊的改动或配置。此外,Analytics Zoo还有很多预定义的模型可以开箱即用,也提供了不少示例供参考,这能让我们很容易地建立适合我们场景的深度学习模型,并且用现有小区的数据做初步实验得出结果。

注1:Analytics Zoo (https://github.com/intel-analytics/analytics-zoo) 是Intel开发的一个开源大数据分析和AI平台。它能将Spark, TensorFlow, Keras和BigDL程序无缝地集成进端到端的数据分析流水线中,直接运行在大规模、分布式的大数据集群上。

方法,数据采集和特征工程

WIFI信息可以作为辅助人脸识别的手段之一。只要在小区门禁处装上WIFI设备,系统在收集人脸信息的同时会收集到位置在小区大门附近的手机的MAC地址信息,在收集数据后,使用SGX安全技术对手机的MAC等关键隐私数据进行加密处理,生成密文的MAC地址(后续的MAC地址均是指密文的MAC地址)1,而所有这些收集的数据都带有时间戳。如果可以训练机器学习模型将MAC地址和身份信息进行匹配,那么之后有人进出小区时,即使拍到的人像比较模糊识别置信度不高,附近的MAC地址也可以用来辅助提供身份信息。经过分析和过往经验,我们认为MAC地址记录和人脸识别身份记录的时间差,WIFI信号强弱以及在历史上短时间内成对出现的次数等可能是有用的特征。接下来我们就利用这些特征来建立MAC地址和身份信息的匹配模型。

模型的选择、训练、评估和优化

MAC地址和身份ID的匹配问题,本质上跟文本匹配和推荐排序等问题是类似的,即将MAC地址的特征和身份ID的特征都输入模型,输出一个相似度分数,再按相似度由高到底排序,用排序好的相似度信息来辅助进行身份识别。

具体来说,我们的模型输入特征包括人脸身份ID和MAC的ID,检测到的时间差,WIFI信号强弱,共同出现的频率等等,模型输出为相似度得分(0-1之间)。

我们参考了Analytics Zoo中提供的两种推荐模型的示例——Neural Collaborative Filtering (https://analytics-zoo.github.io/master/#ProgrammingGuide/recommendation/#neural-network-based-collaborative-filtering) 和Wide And Deep (https://analytics-zoo.github.io/master/#ProgrammingGuide/recommendation/#wide-and-deep) ,基于我们的输入特征稍作修改,就得到了适合我们数据输入的模型,并采用了的是二分交叉熵 (Binary Cross Entropy)损失函数

作为初步的实验,我们邀请了一小部分小区居民事先采集他们的手机MAC地址,并且拿到了一个月里小区收集到的数据。我们将每天检测到这些居民的记录作为正样本,随机生成适当数量的负样本,用前25天的数据用于训练,后5天的数据用于验证。

在定义好模型并且把数据集经过特征工程处理成Spark RDD之后,就能用Analytics Zoo提供的Keras-Style API进行分布式训练和预测了。 训练和预测的代码非常简单,如下:

  1. model.compile(optimizer, loss='binary_crossentropy', metrics=['accuracy'])  
  2. model.fit(train_rdd, batch_size, nb_epoch, validation_date=val_rdd)  
  3. model.predict(test_rdd)

在compile模型的时候,可以指定让模型在训练集上进行多少次迭代训练(epochs),每次训练使用的批大小(batch_size),采用的优化方法以及它的学习率(learning rate) 等参数。在训练的过程中,可以在验证集上输出准确率的性能指标,这样能了解到模型在训练的过程中是否已经过拟合。同时Analytics Zoo也支持在训练过程中阶段性保存快照可用于继续训练,也可以用Tensorboard可视化learning curve等等。

在我们的实验数据上,目前模型的表现得到了令人满意的结果,我们现在也在和小区共同探索模型的落地。模型投入使用后,因为小区每天都在收集新的数据,我们会定期使用全量或增量数据线下重新训练和迭代模型。

结语

相信大家看了以上的介绍,已经对如何使用Analytics Zoo 在大数据平台上构建深度学习应用增强身份识别有了大致的了解。在AI快速发展的今天,我们相信把深度学习的技术利用在大数据上能让身份识别更加可靠,给居民的生活带来更多的便利。

如果需要更多关于Analytics Zoo的信息,请访问Github上的项目地址(https://github.com/intel-analytics/analytics-zoo) 或者主页 (https://analytics-zoo.github.io/)。

注1:手机的MAC地址进行加密处理的安全性在于,
1、确保手机的MAC隐私数据安全
2、确保隐私数据不被泄露
3、确保隐私数据仅限于本系统内使用,无法与其他系统交换

Analytics Zoo
Analytics Zoo

Analytics Zoo是一个统一的大数据分析+AI平台,它无缝地将Spark、TensorFlow、Keras和BigDL程序集成到一个整合的流水线中,可以透明地扩展到大型Apache Hadoop/Spark集群,用于分布式训练或预测,方便用户构建深度学习端到端的应用。通过该专栏希望和大家一起探讨AI在实际生活中各个领域的创新。

工程身份识别Analytics Zoo机器学习推荐系统深度学习
1
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

Apache Spark技术

Apache Spark是一款快速、灵活且对开发者友好的工具,也是大型SQL、批处理、流处理和机器学习的领先平台。它是一个围绕速度、易用性和复杂分析构建的大数据处理框架,提供了一个全面、统一的框架用于管理各种不同性质(文本数据、图表数据等)数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

大数据技术技术

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

推荐文章
暂无评论
暂无评论~