文档开发者中心
我的

快速接入华为HiAI Engine(4)-人脸朝向识别和人脸属性

“HiAI体验”快应用源码在github(https://github.com/Huawei/Consumer/tree/master/HiAI-quickapp-demo)开源了,一步步带你快速在快应用中接入华为HiAI Engine,让你的快应用变得更智能。


1. 引言

华为HiAI Engine提供了免费的人脸朝向识别、人脸属性(性别)等多种AI能力,而且还可以在快应用中使用,您可以轻松将多种AI能力和APP或快应用相结合,让您的APP或快应用更加智能强大。最重要的是华为的HiAI Engine是离线的,用户的数据始终都在他们自己的手机上面,不需要担心隐私泄露的问题,可以放心使用。

本次介绍的是HiAI Engine的人脸朝向识别和人脸属性两项能力。人脸朝向识别可以检测平面内人脸朝上、朝右、朝下、朝左、无人脸共五个类别信息,可应用于判断有人和无人、以及有人情景下人脸的朝向等应用场景,本次实现效果图如下所示。


(4) 1.png




人脸属性可对图片中人脸进行属性识别并返回人脸性别,如:{'sex':'female'},可应用于APP个性化美肤等应用场景。本次实现效果图如下所示:

2. 接入准备

人脸朝向识别和人脸属性两个接口在快应用中使用很简单,只需要开发者在华为快应用官网下载华为快应用IDE,然后就可以根据华为HiAI开发指南进行开发了。目前使用华为快应用IDE开发HiAI的能力只需完成一下两步即可开始代码编写,具体如下:

1) manifest配置文件增加如下配置:{'name': 'system.ai'}。

2) 导入AI模块,如:import ai from '@system.ai或 var ai = require('@system.ai ')。

3. 代码实现

代码编写先是完成界面部分,然后实现HiAI接口功能,界面实现可以参考快应用开发指南,这里详细介绍一下HiAI中人脸朝向识别、人脸属性接口的实现,具体如下:

1、人脸朝向识别

本接口可检测图片中的人脸,并返回人脸朝上、朝右、朝下、朝左、无人脸共五个类别信息,具体步骤如下:

第一步:获取图片资源uri。

第二步:调用AI中人脸朝向识别接口。

(1) 获取图片资源uri有两种方式,一种是获取手机相册图片uri,另一种是通过手机相机拍照获取图片uri,实现方法如下:

//获取图片资源

selectMedia: function (e) {

var that = this;

//判断是拍照获取资源,调用takePhoto方法

if (e === 'takePhoto') {

that.takePhoto();

}

//判断是从相册中选择图片,调用selectOneImage方法

else if (e === 'selectImage') {

that.selectOneImage();

}

else {

that.cancel();

}

},

//拍摄照片

takePhoto: function () {

var that = this;

that.isShow = '';

//调用media库中takePhoto方法

media.takePhoto({

success: function (data) {

that.imageUri = data.uri;

that.detectHeadPose();

}

})

},

//从手机相册中选择第一张图片

selectOneImage: function () {

var that = this;

that.isShow = '';

//调用media库中pickImage方法

media.pickImage({

success: function (data) {

that.imageUri = data.uri;

that.detectHeadPose();

}

})

},

(3)调用人脸朝向识别接口

//判断人脸朝向方法

detectHeadPose: function () {

var that = this;

that.result_list = [];

//调用ai库中人脸朝向识别接口

ai.detectHeadPose({

uri: that.imageUri,

success: function (data) {

var headPose = '';

var confident = '';

//根据返回结果,显示人脸朝向信息

if(data.headpose === 0){

headPose = '人脸朝向: ' + '无人脸';

}

else if(data.headpose === 1){

headPose = '人脸朝向: ' + '人脸朝上';

}

else if(data.headpose === 2){

headPose = '人脸朝向: ' + '人脸朝右';

}

else if(data.headpose === 3){

headPose = '人脸朝向: ' + '人脸朝下';

}

else if(data.headpose === 4){

headPose = '人脸朝向: ' + '人脸朝左';

}

confident = '置信度: ' + data.confidence;

that.result_list.push(headPose);

that.result_list.push(confident);

},

fail: function (data, code) {

var co = 'errorCode: ' + errCodeList[code];

that.result_list.push(co);

},

complete: function (msg) {

console.log('handling complete');

}

})

}

2、人脸属性

本接口可以根据输入的图像uri进行人脸属性识别,返回人脸性别,具体实现步骤如下:

第一步:先获取图片资源uri。

第二步:调用AI中人脸属性接口。

其中第一步代码实现和人脸朝向识别一样,可以参考上面人脸朝向识别的代码,下面主要介绍一下人脸属性接口的实现,代码实现如下:

(1) 调用人脸属性接口

//判断人脸属性(性别)方法

detectFaceAttributes: function () {

var that = this;

that.result_list = [];

//调用ai中人脸属性detecFaceAttributes接口

ai.detectFaceAttributes({

uri: that.imageUri,

success: function (data) {

var sex = '性别: ' + data.sex;

that.result_list.push(sex);

},

fail: function (data, code) {

var co = 'errorCode: ' + errCodeList[code];

that.result_list.push(co);

},

complete: function () {

console.log('handling complete');

}

})

}

开发者可以根据返回的人脸属性(性别)继续进行针对性的个性化美肤,本示例中没有进行个性化美肤,只是展示识别到的人脸属性(性别)结果。

4. 总结

至此,介绍快应用接入华为HiAI的人脸朝向识别以及人脸属性两个能力已经描述完了,继前两次人脸检测、五官特征检测以及人脸比对介绍,本次只介绍人脸朝向识别和人脸属性两个能力,后面将会继续将其他关于华为HiAI的能力依次介绍给大家,如:图像识别、自然语言处理等十几种能力。本次介绍的两个能力源码在github上有上传,大家可以根据文章开头提供的链接下载源码参考一下。

除此之外,华为还提供了Android端的HiAI,本次分享没有介绍,有兴趣的朋友可以去华为开发者网站看看关于Android端HiAI。



点赞
收藏
回复
分享
举报
浏览3097 编辑于2019-07-09 09:36未知归属地
全部评论
最多点赞
最新发布
最早发布
暂无评论
暂无评论
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。