花粉俱乐部  logo 花粉俱乐部  因为热爱
搜索 |
[交流分享]

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

[复制帖子标题和链接]

5235

莓夏文  版主  发表于 2018-12-27 09:31:58 来自:浏览器

最新回复 2 小时前

本帖最后由 莓夏文 于 2018-12-27 09:47 编辑

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

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

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

1.jpg


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

2.jpg

莓夏文  版主  发表于 2018-12-27 09:48:37 来自:浏览器
2.     接入准备

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

1.manifest配置文件增加如下配置:{"name":"system.ai"}。
2.导入AI模块,如:import ai from ´@system.ai或 var ai =require("@system.ai ")

莓夏文  版主  发表于 2018-12-27 09:50:30 来自:浏览器
本帖最后由 莓夏文 于 2018-12-27 09:55 编辑

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();
            }
       })
   },
(2)调用人脸朝向识别接口
//判断人脸朝向方法
   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(´handlingcomplete´);
            }
       })
    }
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´);
            }
       })
   }
开发者可以根据返回的人脸属性(性别)继续进行针对性的个性化美肤,本示例中没有进行个性化美肤,只是展示识别到的人脸属性(性别)结果。

莓夏文  版主  发表于 2018-12-27 09:50:58 来自:浏览器
4.     总结
至此,介绍快应用接入华为HiAI的人脸朝向识别以及人脸属性两个能力已经描述完了,继前两次人脸检测、五官特征检测以及人脸比对介绍,本次只介绍人脸朝向识别和人脸属性两个能力,后面将会继续将其他关于华为HiAI的能力依次介绍给大家,如:图像识别、自然语言处理等十几种能力。本次介绍的两个能力源码在github上有上传,大家可以根据文章开头提供的链接下载源码参考一下。
除此之外,华为还提供了Android端的HiAI,本次分享没有介绍,有兴趣的朋友可以去华为开发者网站看看关于Android端HiAI。

青丝柳叶抚琴  炉火纯青  发表于 2019-1-4 11:32:11 来自:荣耀V10 我AI的快
支持
开心就好我在这里  独步江湖  发表于 2 小时前 来自:华为Mate10 Pro
o(≧v≦)o~~好棒
您需要登录后才可以回帖 登录 | 立即注册

EMUI9.0

工具下载

  • 花粉客户端官方

    Make it Possible

华为软件专区

关注花粉俱乐部

苏ICP备17040376号-6| 增值电信业务经营许可证:苏B2-20130048号| 苏网文[2015]1599-026号| 苏公网安备 32011402010002号

Copyright © 2011-2019 华为软件技术有限公司 版权所有 保留一切权利

快速回复 返回顶部 返回列表