排球

中科视拓李凯周人脸辨认应用实战Seeta略

2020-10-15 19:43:29来源:励志吧0次阅读

中科视拓李凯周:人脸辨认运用实战——SeetaFace2

「职播间」第12讲约请到了中科视拓研发部产品总监兼研发总监来做主题为「人脸识别应用实战:SeetaFace2」的分享。

内容涉及人脸辨认技术如何从算法到应用在工业上的人脸辨认系统,观看完全视频回放,可跳转文末,点击“浏览原文”查看。

社长小tip:登陆网站完善完善个人资料,可以下载更多嘉宾课件and超级无敌多技术资料哦~

演讲嘉宾

李凯周,天津大学计算机科学与技术专业硕士。现担负中科视拓研发部产品总监兼研发总监,负责研发算法部署、SDK化和数据分析管理工作,主导SeetaFace2的算法发布。

回顾正文

大家好,简单介绍一下,我是李凯周,现担当中科视拓研发部产品总监兼研发总监,负责研发算法部署、SDK化和数据分析管理工作,现在开始我们今天的分享。

今天跟大家分享的题目是人脸辨认运用实战:SeetaFace2,就是以SeetaFace2为例简述人脸辨认技术如何从算法到运用在工业上的人脸辨认系统。首先介绍SeetaFace2的主要内容,然后介绍SeetaFace2检测、定位、识别的核心接口,使用这些核心接口进行典型运用的举例,包括:跟踪、质量评估、人证比较、动态辨认,以后再深入地挖掘SeetaFace2的源码,给大家出现把AI的算法包装成SDK的系统应当经过哪些步骤,最后是求职分享,包括我对 AI 工程师的认识和作为 AI 工程师的基本要求。

下面简要说明一下SeetaFace2包括的核心接口和接口的含义,要做人脸辨认首先要把图片或图片序列中的人脸找出来,所以第一个模块就是人脸检测模块,人脸检测模块是C++库,最重要就是要包括这些头文件。人脸检测的话要包括人脸检测器叫FaceDetector的对象,通过给定对应的模型文件,就可以检测一个实体对象。要把待检测的图片转化为SeetaFace2支持的图像格式,是内存上连续存储的HWC格式和BGR彩色通道的一个图像格式,这个跟 OpenCV是一样的。可以把OpenCV的对象转化成SeetaImageData的对象。后面的操作就很简单了,就是通过detect接口把每张人脸用数组反应出来。需要注意的是data的指针是一个禁用的内部指针,不需要外部进行释放。

取得到图片中的每张人脸以后,只知道人脸位置,检测到人脸之后,要对人脸进行标定,把关键点找出来,找出关键点之后就知道人脸姿态和具体人脸在图片中的细节状态。而关键点定位的接口和检测的接口是高度类似的,也是要通过对应的模型文件构建人脸关键点的定位器,一样的把图片转化成ImageData对象,而ImageData对象是可以复用的。最后检测的时候mark接口要输入原图和人脸位置。

定位到人脸教育教学能力测试以及普通话水平测试。考虑到改革前已有部分人员参加了市教委组织的申请教师资格认定教育学(幼儿教育学)和教育心理学(幼儿心理学)两门课程考试以后要对人脸做一个辨认,辨认进程提取了两套接口,分别是FaceDatabase、FaceRecognizer,如下图所示,FaceDatabase提供了内存中管理人脸库,包括了注册(Register)和查询(QueryTop)接口;FaceRecognizer包括了特点提取(Extract)和特点比对的接口(CalculateSimialrity),详细讲授请参看视频回放。

在这些基础上,就可以得出一个简单的人脸辨认的示例,这里给出一个示例的代码,如下图:

人脸辨认中大家很关心的问题还有人脸辨认和质量评估,而且识别系统还有两个关键问题。首先,在算力有限的情况下同时应对运用级别的需求,不必要每帧处理,只要肯定视频中抓拍到的多张图片哪些是一个人,一个人只识别一次就可以了;还有,可以通过跟踪,预先判断抓拍到的图片哪些是一个人,同时需要质量评估从这些图片中选择哪些是可以辨认的。

下面扼要讲述一下人脸跟踪,怎样通过人脸检测去实现跟踪,如图所示:人脸跟踪的基本问题是在前1帧检测到了两张人脸(PID0和PID1),那后一帧检测到的人脸是前面出现的哪一个人脸?还是新的人脸?PID相同的我们认为是同一个人,具体讲授请观看视频回放。

这里给出一种实现方式,可以计算后一帧的每一张和前一帧的每一张人脸的交并比,从而可以找到堆叠率最大的人脸。

如果堆叠率超过阈值,则人脸是一张人脸。否则赋予新的PID。

下面我们讲质量评估,这里罗列了几种最直接影响人脸识别判断效果的因素:

接下来顺次讲一下这几个方面的质量该通过甚么方法去判断,详细讲授请观看视频回放:

姿态中,平面内旋转角度,可以通过两眼连线与水平的夹角辨别;偏转角度,可以通过鼻尖到人脸中心线的距离辨别;俯仰的角度可以通过鼻尖在眉心和嘴中心的投影位置辨别。

脸部亮度就是每个像素灰度值的均值。

清晰度参考采取一种无参考的辨别方式,通过判断原始图像再次模糊后的梯度信息损失程度来判断原始图像的清晰程度。

下面说一下常常会遇到的基本问题,对刚刚接触人脸辨认的同学来说可能会有一些帮助,详细讲授请参看视频回放。

之前讲的可以算是纯工程化的部分,现在我们展开来介绍SDK源码,给大家展现一个AI算法是经过哪些步骤变成一个一个SDK的。不过今天不会触及算法模型的具体介绍。考虑到部份同学可能还不了解SeetaFace2是什么,所以不会太展开讲所有的源码内容,今天主要的目的就是介绍源码,然后展现我们的算法是如何封装的,同时我们封装或分析的时候应当关注哪几个方面。

下图展现的是我们的源码结构图:

接下来介绍一下SeetaNet的这两个相干接口:

模型加载以后就是模型推理的部分:

有了网络的初始化和前向,更重要的就是网络的前处理和后处理:

还会涉及到一些参数转换的问题:

最后来看一下总结图:

今天没有深入介绍具体算法的实现,下图给出了不同算法的参考文献,有兴趣的同学可以看一下。同时希望通过今天的分享,大家能够了解到一个AI算法,是如何变成可复用的SDK,然后怎样把SDK应用到业务系统的。

最后一点时间和大家分享一下AI工程师的职业基本素质和技能,我会从实践方面来分享一下成为AI工程师的基本要求。一般说的AI工程师这个职位是算法工程师、软件工程师结合的角色,分别有些什么要求,如图所示(详细讲授请观看视频回放):

今天的分享就到这里,感谢大家。

AI研习社职播间/大讲堂已举行超150场, 往期分享嘉宾分别来自斯坦福大学、卡内基梅隆大学、剑桥大学、北京大学、清华大学、加州伯克利等高校,也有腾讯、百度、阿里、科大讯飞、地平线、旷视科技、商汤科技、Momenta、微软等知名企业高管。

比如微软亚洲研究院院长洪小文、海康威视首席科学家浦视亮、Momenta L4负责人陈凯、深鉴科技CEO姚颂等。

每月10+场,分享前沿技术、人才需求。如果你是有AI人才招聘的企业,欢迎勾搭社长,提交资料(姓名+公司+职位+主题)报名AI职播间分享。

联系我们:18319013243

我们希望天下学AI者都有用武之地!

AI职通车还在成长中,期待你的加入~

点击 ,查看公然课视频回放。

分享到: