怎样用人脸识别技术实现明星脸检测
的有关信息介绍如下:我们经常可以看到一些明星脸检测的软件,上传一张照片,然后告诉你长得像哪个明星。这其实是人脸识别中1:N技术的一种应用。本篇经验将告诉大家如何直接在线体验明星脸功能,如何自己开发明星脸应用。
如果不准备自己开发,只是想在线体验明星脸功能。则只需访问EyeKey生物识别云平台官网 www.eyekey.com。点击技术体验——人脸识别,进入“体验中心”。
选择“相似搜索”功能体验,上传一张你的靓照,系统会自动列出最像的10位明星,并且还有相似度分值哦~
小编传了一张自己的靓照,矮油,朴信惠、蒋欣、李小冉神马的……这就是伦家颜(chou)值(bu)爆(yao)表(lian)的证据呀!!!
当然啦,对于无所不能的程序猿来说,自己动手开发神马的一个才是硬道理呀。
首先,你要有一个EyeKey的开发者账号,并且创建一个华丽丽的应用。详细攻略请参见小编的另一篇经验贴——《免费人脸识别API接口如何接入使用》
8免费人脸识别API接口如何接入使用
创建应用成功后,就可以着手开发(要认真看接口文档哦~)。既然是明星脸测试,那么,首先,你得有明星的脸。于是我们需要创建一个明星图片库,方法步骤如下——
检测人脸
选取明星照片,最好是正脸照片,图片不要超过3兆,太大会访问接口失败,从中选取一个明星照片,
在创建的应用程序中调用 http://api.eyekey.com/face/Check/checking接口,主要代码如下(c#):
//这里是提交接口需要的参数,注意img是经过base64编码的
string postString = "app_id=" + appid + "&app_key=" + appkey + "&img=" + HttpUtility.UrlEncode(base64string);
//接口访问地址
string url = http://api.eyekey.com/face/Check/checking;
byte[] data = Encoding.ASCII.GetBytes(postString);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
//提交数据
reqStream.Write(data, 0, data.Length);
}
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader reader = new StreamReader(res.GetResponseStream(), En
coding.Default);
//这里获取到检测结果在标签上显示出来
lblResult.Text = reader.ReadToEnd();
reader.Close();
接口调用过程中注意图片要以base64编码方式上传,返回的face_id需要记住。
创建people
利用刚才接口返回的face_id,在自己的应用中创建一个people,把face_id绑定到这个people上。这里需要调用 http://api.eyekey.com/People/people_create 接口,调用时我们为people_name赋值, people_name=范冰冰。
如果事先收集过很多的明星脸,那么可以对其他明星重复以上两步(检测人脸和创建people)。
创建明星人群
在创建people的时候系统会为创建成功的明星分配people_id,现在调用 http://api.eyekey.com/Crowd/crowd_create 接口把这些people_id都加入到明星群crowd中,为crowd赋值 crowd = starcrowd
通过以上三步,我们初步建立了自己的明星脸库,接下来就是利用这个库完成相似明星脸的搜索了。
随便找一张人脸正面照,调用人脸检测的接口 http://api.eyekey.com/face/Check/checking,获取到face_id,然后调用 http://api.eyekey.com/face/Match/match_identify 传入刚刚获取的 face_id,之前创建的明星脸人群 starcrowd,接口返回的结果中:similarity是相似度的分数,满分100,分数越高越像;people_id是身份标示,这里可以忽略了;people_name 就是返回当前明星名字。
以上就是明星脸应用,即人脸1:N识别应用的思路和步骤,没有详细列出代码和界面,每次的接口调用需要传入最开始创建应用时获取的app_id、app_key,以上供大家参考。