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

人脸属性可对图片中人脸进行属性识别并返回人脸性别,如:{'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。





































苏公安网备 32011402010933号