涂图李杨:在一切看脸的时代,如何高效的打造人脸识别服务

2024-04-27 15:08

本文主要是介绍涂图李杨:在一切看脸的时代,如何高效的打造人脸识别服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由涂图和个推主办,桔子空间、创业五角场联合主办的TTGO行业论坛第三场在上海举行,与包括涂图、亚马逊、个推和又拍云在内的行业专家探讨和分享了云服务时代,企业进行高效开发的经验,同时此次活动由IT大咖说提供全程直播支持。本文来自TTGO上海场嘉宾演讲分享,文字内容有删节。

演讲|李杨

整理|涂图君

大家好,感谢在这么炎热的天气来参加我们的一个分享活动。我来自于今天主办方之一的涂图,目前在负责涂图服务端架构。今天给大家分享一下我们在人脸识别领域的开发经验,以及如何把它提供为一个线上的API服务,来供开发者和企业调用的。

我们说正题之前,我先大致介绍一下涂图。

涂图的CEO本身是从PPTV的创始团队出来,也是一直深耕图像领域的一个技术牛人。最早涉足的是移动端的图像SDK,提供包括滤镜、贴纸以及常规的图片处理在内的功能。这个过程主要是利用手机GPU芯片上的OpenGL(手机上的名字是OpenGLES)接口,来实现一些图像算法。

我们把移动端图像相关的功能封装出来,提供给一些做其他业务的开发者和企业,他们就可以直接用我们比较成熟的技术,更加专注于他们的核心业务。比如我做一个社交应用,或者是说做一个电商应用,我可能没有那么多时间去做一些图像方面的事情,其实都可以调用涂图的服务来做。

在移动端SDK成型之后,我们也继续的沿着图片往下走,目前涂图已经发展成为面向开发者以及企业、提供图片、视频、直播以及图像识别在内的图像技术服务商。在移动端,涂图的产品是TuSDK,而我们服务端云端的产品叫TUTUCLOUD。

再说回正题。

今天,大家之所以对人工智能、机器学习熟知,可能缘于Google的AlphaGo带来的引爆。其实人工智能早在美国几十年前已经诞生了这个技术,机器学习是其中实现人工智能的一个方法。

机器学习里面其实还分了有表示学习和深度学习。深度学习跟表示学习的关系,就

好比我们以前最早的时候,做一个规则系统或者类似专家系统,它的输入输出都是算法工程师或者科学家们预先制定好的规则。输入什么样的内容,可能会得到相关的结果。中间的一些输入的内容所经过的程序,是算法或者手工设计者这么一个路径。

机器学习这门技术出来之后,它是通过一个提取特征——也就是说,可能某一类的输入内容都可以得到相同或者相似的结果,那么就不再需要去制定一个庞大的规则体系。到往后发展,一直到深度学习,其实中间所涵盖的需要手工去调的一些东西越来越少,到深度学习基本上已经是端到端的过程。

比如说就拿人脸识别来举例。人脸识别里面最基础的一块是人脸检测,那么我的训练集可能就是一堆人脸的照片加上这些照片里面人脸的位置,直接把人脸位置交给神经网络,它可以自动得到一个训练好的模型。然后我们再利用这个模型,给它一张照片,它没有见过的照片,其实是可以得到一个同样的检测框。

说到人脸识别,有一些概念我想先给大家介绍一下。就是人脸识别其实是一个涵盖了很多内容的概念,刚才讲到的人脸检测是其中一环。人脸检测,输入是一张照片,输出是这个照片中人脸的一个矩形框或者多个矩形框的坐标位置。这是一个最基本的,我能够识别出一张照片中人脸的位置在哪。

接下来的人脸配准,是一张人脸里面五官以及脸的轮廓的位置、点位。输入同样还是一个人脸矩形框,输出的话就是五官的点位描绘。把这些点如果连成线的话,那么就是一张人脸的轮廓。

人脸属性,包括人的性别、年龄、表情或者说情绪,更多的这些属性。

特征提取,是用来标识一张人脸的唯一的识别码。大家可以理解,其实可以理解为一个唯一识别号,类似一个二维码对应到一个网页或者一个URL那样的。利用每个人脸的特征,其实可以做出后面的人脸比对、人脸验证,包括人脸识别。这里的识别特指的是,我们把一个人脸的照片放到一个系统里面去逐个的比对,那么得出到底他的身份是哪个。以及后面的人脸检索和聚类,都是基于一个特征去比较。

最后一个是活体检测,用于对安全性要求比较高、要求做一些身份验证的东西。我要保证正在使用这个界面的是一个真人,而不是拿来了其他人的照片来冒充。这里可能还涉及到一些生物体征的东西,这里就不多介绍了。

今天,我们人脸识别已经比较成型了。大家打开tutucloud.com,可以在我们网站上查看到demo以及调用演示,以及刚才提到的文档。这是我们提取特征,人脸对齐点位的示意。像这种点位,主要会用在哪里?比如我想做一个直播系统里面的人脸贴纸,我的脸在动的时候,这个贴纸是要跟着我的表情一直动的。

我们刚才讲到特征提取或者是检测,其实是一个计算量比较大的算法,这里需要的硬件就是GPU。我想大家都或多或少接触过,比如说我们用来观看视频或者电影都需要GPU解码。

在图像领域,GPU是其中应用比较广泛的。虽然每个GPU核心的计算能力比不上CPU,但是它是利用核心的倍数来超越CPU的计算能力。比如一个CPU,现在大家听得比较多的,8核、16核,GPU其实有几千个核。

这么多核我们是怎么来用的?比如我们在用CPU的时候,程序的执行过程是线性的。而GPU则不同,是几千个核用来同时计算。也就是说一张图片上有好多个像素点,比如现在几千乘几千的像素的照片,计算的时候是同时去计算这些像素点的,因此性能优势明显。

当然,我们实际手机客户端上在用人脸识别这个技术,其实是跟服务端有比较大的差别。差别主要在于,手机客户端限于设备体积,它的GPU计算能力其实是比不上服务器端能够用上那么高的计算速度的设备的。

这一块算法的选择上,其实就要有所取舍。比如我们在手机客户端上一般会采用一些非深度学习的算法,也就是说深度学习虽然准确率很高,但是它的性能在比较差的设备上比不上传统算法,所以机器学习这一块还是涉及到性能以及识别精度之间的权衡。

在我们涂图服务端所用到的一些技术中,我们重点接下来就讲一下Docker这一块。涂图最早做服务端的时候,我们都是直接用Git提交代码,在服务器上也是用Git分析代码。而Docker的出现,大大的提高了开发人员的效率。

比如其中我们用到GPU程序,英伟达就联合Docker推出了Docker插件,它是工作在物理机和Docker虚拟环境之间的一层。我们的API文档使用的是SWAGGER来描述,这个使用的语言是对程序员非常友好的。使用它描述完API之后可以直接生成文档,用户使用起来就非常方便了。

我今天大概的演讲内容就这些,谢谢。

这篇关于涂图李杨:在一切看脸的时代,如何高效的打造人脸识别服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940826

相关文章

C#高效实现在Word文档中自动化创建图表的可视化方案

《C#高效实现在Word文档中自动化创建图表的可视化方案》本文将深入探讨如何利用C#,结合一款功能强大的第三方库,实现在Word文档中自动化创建图表,为你的数据呈现和报告生成提供一套实用且高效的解决方... 目录Word文档图表自动化:为什么选择C#?从零开始:C#实现Word文档图表的基本步骤深度优化:C

input的accept属性让文件上传安全高效

《input的accept属性让文件上传安全高效》文章介绍了HTML的input文件上传`accept`属性在文件上传校验中的重要性和优势,通过使用`accept`属性,可以减少前端JavaScrip... 目录前言那个悄悄毁掉你上传体验的“常见写法”改变一切的 html 小特性:accept真正的魔法:让

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

Python使用wxPython打造文件批量压缩工具

《Python使用wxPython打造文件批量压缩工具》在日常工作中,我们经常需要将多个文件打包压缩,下面我们就来看看如何使用Python的wxPython库,创建一个功能强大的图形化文件批量压缩工具... 目录前言项目需求分析技术选型运行效果核心实现1. 界面布局设计2. 多种文件添加方式3. 可勾选的文

使用Python实现高效复制Excel行列与单元格

《使用Python实现高效复制Excel行列与单元格》在日常办公自动化或数据处理场景中,复制Excel中的单元格、行、列是高频需求,下面我们就来看看如何使用FreeSpire.XLSforPython... 目录一、环境准备:安装Free Spire.XLS for python二、核心实战:复制 Exce

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在

基于Java实现PPT到PDF的高效转换详解

《基于Java实现PPT到PDF的高效转换详解》在日常开发中,经常会遇到将PPT文档批量或单文件转换为PDF的需求,本文将详细介绍其使用流程、核心代码与常见问题解决方案,希望对大家有所帮助... 目录一、环境配置Maven 配置Gradle 配置二、核心实现:3步完成PPT转PDF1. 单文件转换(基础版)

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Java高效实现PowerPoint转PDF的示例详解

《Java高效实现PowerPoint转PDF的示例详解》在日常开发或办公场景中,经常需要将PowerPoint演示文稿(PPT/PPTX)转换为PDF,本文将介绍从基础转换到高级设置的多种用法,大家... 目录为什么要将 PowerPoint 转换为 PDF安装 Spire.Presentation fo

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程