笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师。CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术具体解释》电子工业出版社等。

CSDN视频网址:http://edu.csdn.net/lecturer/144

近期在公司负责人脸监測识别project开发,我们的技术也是运用了云人脸技术,因为是公司内部产品,技术处于保密状态,在3D人脸识别技术运用时选择了Unity3D引擎开发。利用Unity3D的跨平台技术能够同一时候在IOS和Android端研发产品,当然在AppStore上也有一款利用云人脸监測技术插件Cloud Face Detection,下载地址:https://www.assetstore.unity3d.com/en/#!/content/54489,在介绍怎样实现之前,先告诉大家怎样使用?

首先,先将插件下载下来而且导入到你新建的Unityproject中,效果例如以下所看到的:

其次,就须要设置云服务相关的设置了,打开网页:https://www.microsoft.com/cognitive-services/en-us/face-api。目的是获取一个Key值,这个Key值在插件中会用到。效果例如以下所看到的:

再次,点击上图中红色框标注的“Get started for free”。然后须要登录,同一时候它会通过你注冊的邮箱把激活的网址发到邮箱中。你点击网址即能够验证。

验证通过后,接下来要做的事情就是选择“Face - Preview”,然后点击最后一个button。进入最后的界面显演示样例如以下所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanh3MTY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

最后,就是通过“Show 或者Copy”把key值复制粘贴到project中。打开Scene中的框中效果例如以下所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanh3MTY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

看标记的红色框,在最右边就是将你网页中复制的Key值粘贴上,这样就完毕了云的验证工作,解析来就能够执行程序了,效果例如以下所看到的:

该插件很有趣,在左上方显示的是摄像头。左下方是拍照后的效果,绿色框表示的是监測到的人脸。右方显示的是监測到的角色性别,年龄,以及微笑占的百分比,当然它也实现了监測多人脸技术。

以上是关于插件的使用以及功能,接下来就给读者分析一下该插件的技术实现。它的框架设计例如以下所看到的:

它的照片处理是在server中运算处理的,在client这块的主要代码例如以下所看到的:

public IEnumerator DetectFaces(Texture2D texImage)
{
if (texImage != null)
{
byte[] imageBytes = texImage.EncodeToJPG ();
yield return DetectFaces (imageBytes);
}
else
{
yield return null;
}
} /// <summary>
/// Detects the faces in the given image.
/// </summary>
/// <returns>List of detected faces.</returns>
/// <param name="imageBytes">Image bytes.</param>
public IEnumerator DetectFaces(byte[] imageBytes)
{
faces = null; if(string.IsNullOrEmpty(faceSubscriptionKey))
{
throw new Exception("The face-subscription key is not set.");
} string requestUrl = string.Format("{0}/detect? returnFaceId={1}&returnFaceLandmarks={2}&returnFaceAttributes={3}",
ServiceHost, true, false, "age,gender,smile,facialHair,glasses"); Dictionary<string, string> headers = new Dictionary<string, string>();
headers.Add("ocp-apim-subscription-key", faceSubscriptionKey); headers.Add("Content-Type", "application/octet-stream");
headers.Add("Content-Length", imageBytes.Length.ToString()); WWW www = new WWW(requestUrl, imageBytes, headers);
yield return www; // if (!string.IsNullOrEmpty(www.error))
// {
// throw new Exception(www.error + " - " + requestUrl);
// } if(!CloudWebTools.IsErrorStatus(www))
{
//faces = JsonConvert.DeserializeObject<Face[]>(www.text, jsonSettings);
string newJson = "{ \"faces\": " + www.text + "}";
FacesCollection facesCollection = JsonUtility.FromJson<FacesCollection>(newJson);
faces = facesCollection.faces;
}
else
{
ProcessFaceError(www);
}
}

它是通过协程处理图片以及上传云server的,效果也很有趣。当然核心技术是在云server上的,可是能够方便开发人员在此基础上开发一些有趣的东西。

相对于开发人员来说,人脸识别技术已经不存在技术门槛了。网上也有许多开源的代码以及许多SDK。比方Face++的SDK,这些都对开发人员特别是高速的开发产品很有利。

基于Unity3D云人脸监測技术的更多相关文章

  1. OpenFace库(Tadas Baltrusaitis)中基于Haar Cascade Classifiers进行人脸检測的測试代码

    Tadas Baltrusaitis的OpenFace是一个开源的面部行为分析工具.它的源代码能够从 https://github.com/TadasBaltrusaitis/OpenFace 下载. ...

  2. spring boot2 基于百度云apiface实现人脸检测与认证1

    原理介绍: 基于百度云的人脸资料库(用户上传),调用本地摄像头抓拍的图像,与百度云的用户图像做比对,实现人脸认证. 主要步骤如下: 1. 创建百度去账号 2. 在百度云控制台中创建人脸识别的应用,并记 ...

  3. 基于 HTML5 的人脸识别技术

    基于 HTML5 的人脸识别技术 https://github.com/auduno/headtrackr/

  4. 基于国内某云的 Domain Fronting 技术实践

    发布时间:2019-12-16 11:30:53 一.简介 Domain Fronting,中文译名 “域前置” 或 “域名前置”,是一种用于隐藏真实C2服务器IP且同时能伪装为与高信誉域名通信的技术 ...

  5. 基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一

    [摘要]仓储管理存在四大细分场景:出入库管理.盘点.分拣和货物跟踪.本系列将介绍利用华为云IOT全栈云服务,端侧采用华为收发分离式RFID解决方案,打造端到端到IOT智慧仓储解决方案的最佳实践. 仓储 ...

  6. 基于QT和OpenCV的人脸检測识别系统(1)

    人脸识别分为两大步骤 1.人脸检測 这个是首要实现的.你得实现人脸显示的时候把人脸框出来,当然算法非常多,另一些人眼检測鼻子检測什么的 主要用的是这个 const char *faceCascadeF ...

  7. 【从零学习openCV】IOS7下的人脸检測

    前言: 人脸检測与识别一直是计算机视觉领域一大热门研究方向,并且也从安全监控等工业级的应用扩展到了手机移动端的app,总之随着人脸识别技术获得突破,其应用前景和市场价值都是不可估量的,眼下在学习ope ...

  8. Viola-Jones人脸检測

    OpenCV中有一个基于树的技术:Haar分类器,它建立了boost筛选式级联. 它能够识别出人脸和其它刚性物体. 对于检測"基本刚性"的物体(脸,汽车,自行车,人体等)这类识别任 ...

  9. 基于Unity3D 的Vuforia SDK开发基础教程

    最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents   ------------------------------------------ ...

随机推荐

  1. [SimpleOJ233]a xor b

    题目大意: 给你一个数列,求所有区间最大值和次大只异或的最大值. 思路: 很容易想到一个O(n^2)的暴力. O(n)的单调栈做法似乎也很好想,不过考场上没想出来. 对于数列上的某一个数,我们维护在它 ...

  2. 【manacher】模板

    考试竟然写错了manacher!太耻辱了!所以赶快又敲了一遍模板!!一定不能错了aaaa #include<iostream> #include<cstdio> #includ ...

  3. bzoj 2286

    第一道"虚树"题目(好吧,我也不知道这是不是虚树,但和虚树的思想肯定是一样的,都是简化树结构) 这一类算法核心思想都是简化树结构,只取我们必须的节点和一些信息,然后在简化后的树结构 ...

  4. hihocoder1310 岛屿

    hihocoder1310 岛屿 题意: 中文题意 思路: dfs,面积和数量都很好求,问题在岛屿形状上,感觉让人比较麻烦,用vector保存各个点,只要两个岛之间每个点距离一样就好了,这里的形状的定 ...

  5. ROS知识(3)----功能包package编译的两种方式

    ROS的包编译有两种方法(我知道的),一种是用rosmake,这种方法简单:另一种是用catkin_make,这种方法更方便包的管理和开发.这两种方法都是先建立工作空间workspace(类似于vs下 ...

  6. ECMAScript5严格模式

    ECMAScript5引入了严格模式(strict mode)的概念,IE10+开始支持.严格模式为JavaScript定义了一种不同的解析和执行模型,在严格模式下,ECMAScript3中的一些不确 ...

  7. 在pcDuino上使用蓝牙耳机玩转音乐

    1.资源 pcDuino板子一个.HDMI to VGA线一条.电源线一条.USB hub一个.显示器.鼠标.键盘.蓝牙适配器.蓝牙耳机. 2.资源已经到位,让我们开始吧 1.在ubuntu上安装蓝牙 ...

  8. Ext NumberField使用

    Ext.onReady(function(){ Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget="side"; v ...

  9. apache 与 iis共存

    先装上了apache ,再装iis会出现错误.所以先关闭apache,再进行iis安装.iis安装完后修改iis80端口为8080端口, 同时使用命令 cd C:\Inetpub\AdminScrip ...

  10. x-requested-with 请求头 区分ajax请求还是普通请求

    在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数 1.传统同步请求参数 accept  t ...