CNCC 2016 | 山世光:深度化的人脸检测与识别技术—进展与展望

编者注:本文根据山世光在 CNCC 2016 可视媒体计算论坛上所做的报告《深度化的人脸检测与识别技术:进展与问题》编辑整理而来,在未改变原意的基础上略有删减。

山世光,中科院计算所研究员,中科院智能信息处理重点实验室常务副主任。主要从事计算机视觉、模式识别、机器学习等相关研究工作。迄今已发表CCF A类论文50余篇,全部论文被Google Scholar引用9000余次。曾应邀担任过ICCV,ACCV,ICPR,FG等多个国际会议的领域主席(Area Chair)。现任IEEE Trans. on Image Processing,Neurocomputing和Pattern Recogintion Letters等国际学术刊物的编委(AE)。研究成果曾获2005年国家科技进步二等奖和2015年度国家自然科学二等奖。2008年度中国科学院卢嘉锡青年人才奖获得者,2009年度北京市科技新星获得者,2009年获首届Scopus寻找未来科学之星银奖(信息领域共2名),2012年获得基金委“优青”支持。

今天我所做的报告的题目是《深度化的人脸检测与识别技术》,过去三四年里,人脸识别领域非常快速地从非深度学习方法切换到了深度学习这样一个新的范式里面去了。

本次报告主要介绍最近几年在人脸识别领域几个关键流程上面,深度学习的应用情况。

本次报告主要给大家介绍这几部分内容:

  • 人脸识别总体情况
  • 人脸检测
  • 面部特征点定位
  • SeetaFace开源引擎

| 人脸识别总体情况

全自动人脸识别系统流程

人脸识别本质上是要对比两个照片是否是同一个人。举例来说对于上图中两张照片,人脸识别需要去做的是计算其相似度是不是足够高。这个过程可以分为以下几个步骤:

  • 第一步是要找到脸在哪里
  • 第二步是找到五官的位置
  • 第三步是把关键人脸区域提取出来
  • 第四步是用特征提取器F把图像变成特征向量(y=F(x))
  • 第五步对比向量y1、y2的相似度是否足够高,据此来进行判断

在这里面最核心的其实有三个步骤,第一个是找到脸在哪里,第二个是找到五官在哪里,第三个是f(x)函数的设置,这也是人脸识别系统中最本质的三个内容。

人脸识别近期发展的最大特点

人脸识别能在过去的三四年的时间里能有一个快速的发展是得益于深度学习

在这期间有一个非常重要的变化是人脸识别变得和狗脸识别、猫脸识别没什么太大区别了。也就是说在技术上,不用再把人脸识别特别来看待了。

卷积神经网络(CNN)

在深度学习之后,我们发现深度学习对于人脸识别这项帮助非常大。为什么?其实是实现了深度化。

在计算机视觉领域,深度学习中应用得最好、最成功的就是卷积神经网络(CNN)。

卷积神经网络(CNN)变迁

事实上卷积神经网络不是2016年发明的,也不是2012年发明的,它大约是在20世纪80年代出现的,到1998年这期间出现了一些卷积神经网络的雏形。可以从上图中看到,1998年出现的卷积神经网络和当下的在本质上其实已经没什么区别了。

卷积神经网络实质上是对输入进行加权求和之后,去做一个非线性变化的过程。输入图像通过滤波器组进行非线性卷积,卷积后在每一层产生特征映射图,然然后特征映射图中的值再进行加权求和并进行非线性变换。在此过程中这些像素在池化层被池化,最终得到输出值。

| 人脸检测技术

具体到人脸检测的问题,在深度学习技术出现之前,几乎所有人脸检测都是采用滑动窗口式的方法。

也就是说,我们会首先设计一个分类器。拿上图中图片举例来说,我们会设计一个40x40的窗口,然后去检测那个部分是不是人脸。此外我们还需要对图片进行缩放再进行检测,这个方式其实是2000-2012年以来主流的方法。

物体检测:内涵与总体思路

不管是人脸检测还是物体检测,都需要进行考虑的是这两个问题:

  • 有没有?
  • 在哪里?

2014年以来的变迁

  • “有没有”部分
  • 从人脸特征——分类器学习“两步法”转变为特征和分类器End—to—End学习
  • 从二类分类转变为多类分类
  • “在哪里&有多大?”部分

从Check所有可能位置和大小转变为只Check可能位置和大小或者回归位置和大小(更准确)

基于深度学习的物体检测

在过去的几年时间里出现了一系列的方法,包括

  • Region CNN系列

R-CNN——SPP R-CNN——Fast R-CNN——Faster R-CNN

  • 回归位置

YOLO

  • 传统方法与深度方法结合

FacenessNET Cascade CNN(coarse-to-fine)

R-CNN

关键点:

  1. Selective Search产生约2000个候选窗口
  2. 每个候选窗缩放到227*227(用CNN提取特征)
  3. SVM分类

需要2000多次CNN过程,速度很慢。

SPP-Net

Fast R-CNN

Faster R-CNN

YOLO(You Only Look Once)

这个方法更加的简单粗暴一些

  • 将输入图像划分为SxS grid
  • 对grid cell预测
  • 网络全连接层——张量
  • 用NMS去除冗余

FacenessNET

Cascade CNN(coarse-to-fine)

物体(人脸)检测:总结与问题

小结:

  • 深度学习方法带了性能上的大提升
  • Bounding Box Regression(BBR)兴起
  • 样本组织方式的变革

问题:

  • 高精度、全姿态时的速度问题
  • 小尺度、大遮挡、复杂光照情况下可能漏检

| 面部特征点定位技术

深度级联回归

基于多级DCNN实现f函数(CVPR2013)

基于多级Auto-encoder实现f函数(ECCV2014)

对遮挡鲁棒性地特征点定位方法(CVPR2016)

| 判别特征学习与匹配方法

在深度学习出现之前,和传统方法一致。(两步法)

  1. 人工(卷积)特征
  2. 特征变换

人脸识别测试集和性能的变迁

特别要提到的是学术界的里程碑(数据库):

ORL——FERET——FRGC v2.0——LFW

LFW人脸识别评测

LFW数据库来源于因特网上的数据,对于名人明星的图像进行识别。过去三年错误率从5%下降到0.4%。

在深度学习出现之后,直接从图像开始学习特征。

过去2年的新进展

最开始将深度学习应用到人脸特征提取的是Facebook的DeepFace,使用一个8层的神经网络,对4000人的440万图像进行训练学习。

Google的FaceNet则是使用800万人的2亿张图像进行训练学习,这个数据量是及其庞大的。

我们有理由相信这样一个网络在如此庞大数据量训练之后,它的人脸识别能力是比普通人要好的。

待解决问题

人脸识别应用现状

  • 1:N

配合照片检索应用,目前基本成熟

  • 1:1验证

配合用户,可以应用

  • 1:N+1

万级以上非配合用户,任重道远

| SeetaFace引擎

SeetaFace Detector

SeetaFace Alignment

SeetaFace Identification

| 总结

  • 人脸检测与识别不再具有特殊性
  • 深度模型(&大数据&高性能计算)极大推进了人脸识别能力,在一些(用户配合的)任务上能超过人眼
  • 万人规模的黑名单视频监控场景尚不成熟
  • SeetaFace为大家提供了一个不错的baseline

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2016-10-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5455
来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

2339
来自专栏菩提树下的杨过

SqlTransaction事务使用示例

using System; using System.Data; using System.Data.SqlClient; using System.Co...

1858
来自专栏码匠的流水账

聊聊spring cloud的AbstractLoadBalancingClient

本文主要研究一下spring cloud的AbstractLoadBalancingClient

832
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

23610
来自专栏跟着阿笨一起玩NET

C# 通过HttpWebRequest在后台对WebService进行调用

http://www.cnblogs.com/macroxu-1982/archive/2009/12/23/1630415.html

2772
来自专栏DT乱“码”

简单的考勤系统

连接数据库类 package com.lianrui.it; import java.sql.Connection; import java.sql.Driv...

3489
来自专栏互联网开发者交流社区

WinForm之窗体应用程序

1853
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2278
来自专栏c#开发者

jquery easyui datagrid mvc server端分页排序筛选的实现

1自定义一个ModelBinder public class filterRule { public string field { g...

4189

扫码关注云+社区