人脸识别打卡项目(2)
目录
1 人脸图像质量检测
人脸图像的质量关系到人脸识别的效果,尽可能将人脸清晰、无遮挡、正面、本人近期的人脸照片入 库。在人脸入库时,在设计阶段,需要制定入库规则来过滤质量不佳、格式不规范的人脸图像。
入库规则可以根据需要包含以下内容的部分或全部去定义:
图片的颜色:可支持彩色及灰度的图片,最低要求256灰度图片;
图片的格式:各类主流图片格式,例如 bmp/jpg/png等,图片命名格式统一,如常用的命名“姓名_ 证件号”;
图片像素:双眼中心之间的距离大于30像素;
图片尺寸:尺寸大于70X80以上;
人脸角度:人脸左右偏转30度以内,上下偏转20度以内;
入库图片大小建议几十KB~几百KB之间为宜,但也不能太大,超过1M,会影响入库和识别的速度。
人脸图像质量检测,可通过在人脸检测的请求参数中添加quality字段,然后基于返回结果quality中,以下 字段及对应阈值,进行质量检测的判断,以保证人脸质量符合后续业务操作要求,可以从以下几个维度去判断。
1 人脸遮挡
人脸遮挡通常用作判断头发、墨镜、口罩等遮挡脸部的情况。可通过返回结果的occlusion字段判断遮挡情 况,取值范围[0~1],0为无遮挡,1是完全遮挡;同时还包含多个具体子字段,表示脸部多个部位,如左右侧眼睛和脸颊、鼻子、嘴巴以及下巴等。实际使用中可根据表7-1中推荐设置不同部位阈值。

2 模糊度
图像采集设备在拍摄过程中,很容易因为抖动或者焦距问题,造成图像模糊,影响图像识别效果。可通 过返回结果的blur字段判断模糊情况,取值范围[0~1],0是最清晰,1是最模糊;如表所示,推荐数值的界限值为0.7。

3 光照情况
光照变化是影响人脸识别性能的最关键因素,有实验表明,光照对人脸识别的影响大于不同人脸间相似 度对人脸识别的影响。可通过返回结果的illumination字段判断光照情况,表示脸部光照的灰度值,取值范 围[0~255],0表示光照不好。如表所示,推荐数值的界限值为40。

4 姿态角度
实际应用中,姿态变化是另外一个影响人脸识别性能重要的因素。姿态问题涉及头部在三维垂直坐标系中 绕三个轴的旋转造成的面部变化,其中垂直于图像平面的两个方向的深度旋转会造成面部信息的部分缺 失,使得姿态问题成为人脸识别的一个技术难题。在使用过程中,可通过表中所示的返回结果的Pitch、 Roll、Yaw字段判断姿态角度情况。

5 人脸完整度
人脸完整度主要是检测采集到的人脸是否溢出图像边界,不完整的人脸图像,往往得不到的识别结果。 可通过返回结果的completeness字段判断完整度情况,取值为0或1,0为人脸溢出图像边界,1为人脸都 在图像边界内。推荐数值视业务逻辑判断。

6 人脸大小
图像采集过程中,人脸距离摄像头的远近,会直接影响采集到的人脸大小,人脸过小或过大,都会影响 识别效果。根据返回结果的长宽进行判断,如表所示。

2 人脸库管理介绍
简单来讲,人脸库就是人脸数据的储存管理中心,能够为人脸识别提供比对模板,为抓拍人脸数据提供 管理空间,为人脸算法检测提供测试样本。人脸识别项目是建立在人脸库的基础之上,所以人脸识别的 首要任务便是是建立人脸库。
人脸库按照用途可分为人脸比对库、人脸抓拍库、人脸数据集,如图所示,不同类型人脸库的组 成、结构、作用也有所不同,本章节主要介绍人脸比对库。

人脸比对库主要用于人脸1:N识别,如下图,人脸1:N是将人脸抓拍照片的人脸特征与人脸库中所有人 脸特征进行逐一比对。人脸识别过程主要包括以下四个步骤:
1. 输入人脸
2. 计算人脸特征
3. 逐一从库中获取人脸特征
4. 对比人脸特征
如图所示。

人脸比对库主要由人脸库管理、人脸数据、人脸库属性描述三部分组成,如图所示。

我们介绍了人脸库的基础内容,包括人脸库支持的接口及其功能、人脸库的结构等。本 章节将重点介绍各接口的使用方法,帮助我们实现对人脸库的管理。
1 人脸注册
人脸注册是向人脸库中添加人脸数据,接口地址为https://aip.baidubce.com/rest/2.0/face/v3/faceset/ user/add,人脸注册完毕后,生效时间一般为5s以内,之后便可以进行人脸搜索或认证等操作。其请求参 数如表所示。

返回参数含义如表所示。

返回示例:
{
"face_token": "2fa64a88a9d5118916f9a303782a97d3",
"location": {
"left": 117,
"top": 131,
"width": 172,
"height": 170,
"rotation": 4
}
}
2 人脸更新
人脸更新用于对人脸库中指定用户,更新其下的人脸图像。针对一个user_id执行更新操作,新上传的人 脸 图 像 将 覆 盖 此 user_id 原 有 所 有 图 像 。 接 口 地 址 为 https://aip.baidubce.com/rest/2.0/face/v3/facese t/user/update,其请求参数和返回参数与人脸注册相关参数一致,可参照表和表所示内容。
返回示例:
{
"face_token": "2fa64a88a9d5118916f9a303782a97d3",
"location": {
"left": 117,
"top": 131,
"width": 172,
"height": 170,
"rotation": 4
}
}
3 人脸删除
人脸删除用于删除用户的某一张人脸,如果该用户只有一张人脸图片,则同时删除用户。接口地址为htt ps://aip.baidubce.com/rest/2.0/face/v3/faceset/face/delete,其请求参数如表所示。

可通过返回的error_code判断是否成功,如失败则查看error_msg获得具体错误信息。返回示例:
// 删除成功
{
"error_code": 0,
"log_id": 73473737,
}
// 删除发生错误
{
"error_code": 223106,
"log_id": 1382953199,
"error_msg": "face is not exist"
}
4 用户信息查询
用户信息查询主要用于获取人脸库中某个用户的信息(user_info信息和用户所属的组)。请求地址为http s://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get,其请求参数如表所示。

返回参数含义如表所示。

返回示例:
{
"user_list": [
{
"user_info": "user info ...",
"group_id": "gid1"
},
{
"user_info": "user info2 ...",
"group_id": "gid2"
}
]
}
5 获取用户人脸列表
获取用户人脸列表主要用于获取一个用户的全部人脸列表。接口地址为https://aip.baidubce.com/rest/ 2.0/face/v3/faceset/face/getlist,其请求参数如表所示。

返回参数的含义如表所示。

返回示例:
{
"face_list": [
{
"face_token": "fid1",
"ctime": "2018-01-01 00:00:00"
},
{
"face_token": "fid2",
"ctime": "2018-01-01 10:00:00"
}
]
}
6 获取用户列表
取用户列表用于查询指定用户组中的用户列表。接口地址为https://aip.baidubce.com/rest/2.0/face/ v3/faceset/group/getusers ,其请求参数如表所示。

返回参数含义如表所示。

返回示例:
{
"user_id_list":
[ "uid1",
"uid2"
]
}
7 复制用户
复制用户用于将已经存在于人脸库中的用户复制到一个新的组。这个过程并不是向一个指定组内添加用 户,而是直接从其它组复制用户信息 如果需要注册用户,需要直接使用人脸注册接口。接口地址为http s://aip.baidubce.com/rest/2.0/face/v3/faceset/user/copy,其请求参数如表所示。

可以通过返回结果中的error_code字段来判断是否成功,如失败则查看error_msg获得具体错误信息。返 回示例:
// 正确返回值
{
"error_code": 0,
"log_id": 3314921889,
}
// 发生错误时返回值
{
"error_code": 223111,
"log_id": 3111284097,
"error_msg": "dst group is not exist"
}
8 删除用户
删除用户用于将用户从某个组中删除。接口地址为https://aip.baidubce.com/rest/2.0/face/v3/faceset/ user/delete,其请求参数如表所示。

通过返回结果中的error_code判断是否成功,如失败则查看error_msg获得具体错误信息,返回参数含义 如表所示。

返回示例:
// 正确返回值
{
"error_code": 0,
"log_id": 3314921889,
}
// 发生错误时返回值
{
"error_code": 223103,
"log_id": 815967402,
"error_msg": "user is not exist"
}
9 创建用户组
创建用户组用于创建一个空的用户组,如果用户组已存在则返回错误。接口地址为https://aip.baidubc e.com/rest/2.0/face/v3/faceset/group/add,其请求参数如表所示。

通过返回结果中的error_code判断是否成功,如失败则查看error_msg获得具体错误信息,返回参数含义 如表所示。

返回示例:
// 正确返回值
{
"error_code": 0,
"log_id": 3314921889,
}
// 发生错误时返回值
{
"error_code": 223101,
"log_id": 815967402,
"error_msg": " group is already exist"
}
10 删除用户组
此接口用于删除用户组下所有的用户及人脸,如果组不存在则返回错误。 需要说明的是当组内的人脸数 量如果大于500条,会在后台异步进行删除。在删除期间,无法向该组中添加人脸。1秒钟可以删除20条 记录,相当于一小时可以将7万人的人脸组删除干净。接口地址为https://aip.baidubce.com/rest/2.0/fa ce/v3/faceset/group/delete,其请求参数如表所示。

通过返回结果中的error_code判断是否成功,如失败则查看error_msg获得具体错误信息,返回参数含义 如表所示。

返回示例:
// 正确返回值
{
"error_code":0,
"log_id": 3314921889,
}
// 发生错误时返回值
{
"error_code": 223100,
"log_id": 815967402,
"error_msg": " group is not exist"
}
11 组列表查
组列表查询主要用于查询用户组的列表。接口地址为https://aip.baidubce.com/rest/2.0/face/v3/faces et/group/getlist,其请求参数如表所示。

返回参数含义如表所示。

返回示例:
{
"group_id_list":
[ "gid1",
"gid2"
]
}
总结
本节课我们学习了人脸图像质量检测,人脸库管理介绍的相关内容。下节课我们将学习数据库结构介绍的相关内容。我会带着大家一起完成人脸识别打卡项目的所有内容。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)