icyface api 使用指南

icyface 是一个开源的人脸识别系统,提供人脸检测和人脸对比服务,大家可以在github上找到两个工程:

  1. icyface_offline
  2. icyface_api

这两个工程分别是icyface的模型训练部分和restful api 部分,也可以在 icyface官网 先体验一下demo,如果实在没有条件搭建自己的模型,我们也提供restful api:

功能 接口 参数 返回json字段
人脸检测 http://face.icybee.cn/face/face_detect img:base64格式图片 boxes: 二维数组,n * 4维,第一维代表人脸个数,第二维有4个元素,分别是人脸的left,top,right,bottom 的像素值。errcode:错误码
人脸对比 http://face.icybee.cn/face/face_recognize img1:base64格式图片,img2:base64格式图片 box1,box2 分别是人脸的位置,格式同人脸检测接口,vec1,vec2 分别是两个人脸的特征向量,160维,可以用于搜索,聚类的用途 ,errcode:错误码

具体调用接口demo见:https://github.com/bupticybee/icyface_api/blob/master/test_faceservice.py ,下面也会把python版本的api调用demo列出来,需要其他语言的自行翻译,接口返回值的可视化可以在 icyface官网 上直观看到,这里就不列举了。

import json
from PIL import Image
from scipy import misc
import base64
import argparse
import sys
import cStringIO
import requests

def file2base64(imdir):
    img = Image.open(imdir)
    buffer = cStringIO.StringIO()
    img.save(buffer, format="JPEG")
    img_str = base64.b64encode(buffer.getvalue())
    return img_str

def test_recognize(args):
    imdetect = args.detect
    im1 = args.im1
    im2 = args.im2

    payload = {'img':file2base64(imdetect)}
    import numpy as np
    imarr = np.array(misc.imread(imdetect))
    r = requests.get("http://face.icybee.cn/face/face_detect", data=payload)
    print(json.loads(r.text)['boxes'][0])
    box = json.loads(r.text)['boxes'][0]
    box = [int(i) for  i in box]
    misc.imsave('sample.jpg',imarr[box[1]:box[3],box[0]:box[2],:],)

    payload = {
            'img1':file2base64(im1),
            'img2':file2base64(im2)
            }
    r = requests.get("http://face.icybee.cn/face/face_recognize", data=payload)
    print(r.text)
    #print(json.loads(r.text)['dist'])



if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('detect',type=str,help='detect image')
    parser.add_argument('im1',type=str,help='detect image1')
    parser.add_argument('im2',type=str,help='detect image2')
    args = parser.parse_args(sys.argv[1:])
    test_recognize(args)

icyface的接口调用大概就是这样的,有问题邮件 icybee@yeah.net ,欢迎询问 && pr