怎样用人脸识别技术实现明星脸检测
我们经常可以看到一些明星脸检测的软件,上传一张照片,然后告诉你长得像哪个明星。这其实是人脸识别中1:N技术的一种应用。本篇将告诉大家如何直接在线体验明星脸功能,如何自己开发明星脸应用。
自己不开发,就想体验明星脸
- 01
如果不准备自己开发,只是想在线体验明星脸功能。则只需访问EyeKey生物识别云平台官网 www.eyekey.com。点击技术体验——人脸识别,进入“体验中心”。
- 02
选择“相似搜索”功能体验,上传一张你的靓照,系统会自动列出最像的10位明星,并且还有相似度分值哦~ 小编传了一张自己的靓照,矮油,朴信惠、蒋欣、李小冉神马的……这就是伦家颜(chou)值(bu)爆(yao)表(lian)的证据呀!!!
就是要自己开发,看这里!
- 01
当然啦,对于无所不能的程序猿来说,自己动手开发神马的一个才是硬道理呀。 首先,你要有一个EyeKey的开发者账号,并且创建一个华丽丽的应用。详细攻略请参见小编的另一篇经验贴——《免费人脸识别API接口如何接入使用》
- 02
创建应用成功后,就可以着手开发(要认真看接口文档哦~)。既然是明星脸测试,那么,首先,你得有明星的脸。于是我们需要创建一个明星图片库,方法步骤如下——
- 03
检测人脸 选取明星照片,最好是正脸照片,图片不要超过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需要记住。
- 04
创建people 利用刚才接口返回的face_id,在自己的应用中创建一个people,把face_id绑定到这个people上。这里需要调用 http://api.eyekey.com/People/people_create 接口,调用时我们为people_name赋值, people_name=范冰冰。 如果事先收集过很多的明星脸,那么可以对其他明星重复以上两步(检测人脸和创建people)。
- 05
创建明星人群 在创建people的时候系统会为创建成功的明星分配people_id,现在调用 http://api.eyekey.com/Crowd/crowd_create 接口把这些people_id都加入到明星群crowd中,为crowd赋值 crowd = starcrowd
- 06
通过以上三步,我们初步建立了自己的明星脸库,接下来就是利用这个库完成相似明星脸的搜索了。 随便找一张人脸正面照,调用人脸检测的接口 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 就是返回当前明星名字。
- 07
以上就是明星脸应用,即人脸1:N识别应用的思路和步骤,没有详细列出代码和界面,每次的接口调用需要传入最开始创建应用时获取的app_id、app_key,以上供大家参考。