内容来源:华为开发者大会2021 HMS Core 6 AI技术论坛,主题演讲《夯实隐私与安全——机器学习服务打造安全可靠的支付级活体验检测能力》。
演讲嘉宾:班广蔚,华为机器学习服务产品架构师
大家好!很荣幸向大家介绍华为机器学习服务的支付级活体检测能力。
日常生活中,活体检测服务应用广泛,比如实名认证、手机解锁等。相较于前者,其实人脸识别这一概念更加广为人知,应用于高铁动车闸机身份验证、展区人脸验证、安保和监控体系等场景。公共场所根据人脸特征进行特定的身份识别、平时人们解锁私有设备,这些都逐渐成为社会刚需。
但是人脸识别的算法本身是人脸信息的提取。至于提取的是否是真人的信息,它的鉴别能力并不高。比如使用高仿真图片、精密石膏或3D建模面具,就可以攻破很多人脸识别的算法。活体检测技术的出现恰好弥补了这一缺憾,大幅提升了人脸识别的安全性。
随着“刷脸”场景日益普及,活体检测的价值越发凸显。在金融支付、医疗政务、保险理财等领域都广泛应用。目前,华为机器学习服务的人脸认证日活调用量较高,说明开发者对这方面的技术很感兴趣。
当然,活体检测也面临很多挑战。应用场景的丰富,带来了一些不确定性,比如不同应用场景对活体检测性能要求不同;设备的多样性,使得高中低设备性能差异大以及人种多样性、环境变化多样等。阻碍活体检测的还有多样的攻击形式,比如静态屏幕攻击、静态视频攻击、打印照片攻击、照片挖洞、3D面具模型攻击、照片活化攻击以及ROM注入攻击、脚本攻击、接口攻击、IP/phone攻击、群控设备攻击等。
而业界常见的活体检测类型有三种,均可进行屏幕类防攻击、纸张类防攻击、面具防攻击,成本由低到高:一是RGB活体检测,使用RGB摄像头;二是近红外活体检测,使用红外摄像头识别生物的红外特征;三是3D活体检测,使用结构光/TOF深度摄像头直接识别人脸或人体的3D结构,安全性更高。
华为机器学习服务提供给开发者三种活体检测方案,并通过优化算法性能,保障良好的应用体验——



目前,静默活体检测能力已上线官网供开发者使用,交互式活体检测能力也会在不久的将来推出。这都包含在华为机器学习服务活体检测开放架构中。

应用层适用手机解锁、实名认证场景。
连接层为开发者提供两种方式集成:fullSDk支持端到端集成所有内容,不需要额外联网或下载;IiteSDK提供轻量化的接口包,只需要几十K就可以打包到自己的应用。华为应用市场就可以直接下载。
硬件层支持普通的USB摄像头,对手机分辨率也没有特别要求。
系统层支持安卓系统和鸿蒙双框架的兼容活体检测能力。
算法层实现静默活体和交互式活体两种方式。静默活体检测在算法上有许多突破。我们跟数据公司合作采集了200多种类型的数据场景,用以保证覆盖用户使用场景的多样性。其训练数据也达到千万级别。交互式活体则提供给开发者一整套引导控件和实际算法调用框架。每一位开发者都可以参考交互式UI,简单集成。当前支持五种随机动作,后期我们还会开放更多的动作,供大家集成选择。
未来,我们计划提供更安全的静默活体检测能力,达到支付级别安全等级。新增视线估计多模态活体检测能力,用户通过屏幕提示(如注视蓝色圆圈、注视最大的数字等)完成,应用通过捕捉眼睛视线移动方向和注视方向判别活体与非活体。双目活体检测能力也在技术规划之中。
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?
前言作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以程序员在程序开发过程中的代码能力也是根据平时开发中的业务实践来积累和提升的。提高代码能力核心要素程序员要想提高自身代码能力,尤其是新晋程序员的代码能力有很大的提升空间的时候,需要针对性的去提高自己的代码能力。提高代码能力其实有几个比较关键的点,只要把握住这些方面,就能很好的、快速的提高自己的一部分代码能力。1、多去阅读开源项目,如有机会可以亲自参与开源
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
一段时间以来,我一直在使用open_uri下拉ftp路径作为数据源,但突然发现我几乎连续不断地收到“530抱歉,允许的最大客户端数(95)已经连接。”我不确定我的代码是否有问题,或者是否是其他人在访问服务器,不幸的是,我无法真正确定谁有问题。本质上,我正在读取FTPURI:defself.read_uri(uri)beginuri=open(uri).readuri=="Error"?nil:urirescueOpenURI::HTTPErrornilendend我猜我需要在这里添加一些额外的错误处理代码...我想确保我采取一切预防措施来关闭所有连接,这样我的连接就不是问题所在,但是我
默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同
我需要使用ActiveMerchant库在我们的一个Rails应用程序中设置支付解决方案。尽管这个问题非常主观,但人们对主要网关(BrainTree、Authorize.net等)的体验如何?它必须:处理定期付款。有能力记入个人帐户。能够取消付款。有办法存储用户的付款详细信息(例如Authotize.netsCIM)。干杯 最佳答案 ActiveMerchant很棒,但在过去一年左右的时间里,我在使用它时发现了一些问题。首先,虽然某些网关可能会得到“支持”——但并非所有功能都包含在内。查看功能矩阵以确保完全支持您选择的网关-http
我想知道我的代码是否在rspec下运行。这可能吗?原因是我正在加载一些错误记录器,这些记录器在测试期间会被故意错误(expect{x}.toraise_error)弄得乱七八糟。我查看了我的ENV变量,没有(明显的)测试环境变量的迹象。 最佳答案 在spec_helper.rb的开头添加:ENV['RACK_ENV']='test'现在您可以在代码中检查RACK_ENV是否经过测试。 关于ruby-检测由RSpec、Ruby运行的代码,我们在StackOverflow上找到一个类似的问题
我正在使用rubydaemongem。想知道如何向停止操作添加一些额外的步骤?希望我能检测到停止被调用,并向其添加一些额外的代码。任何人都知道我如何才能做到这一点? 最佳答案 查看守护程序gem代码,它似乎没有用于此目的的明显扩展点。但是,我想知道(在守护进程中)您是否可以捕获守护进程在发生“停止”时发送的KILL/TERM信号...?trap("TERM")do#executeyourextracodehereend或者你可以安装一个at_exit钩子(Hook):-at_exitdo#executeyourextracodehe