免费开源人脸识别系统,支持RESTful API

开源 0

简介

CompreFace 是一个免费开源的人脸识别项目,您不需要具备机器学习技能就能安装设置和使用 CompreFace,官方提供了基于 docker 的部署方法,可以方便地部署在本地或者云端服务器上。

CompreFace 提供了 RESTful API,用于人脸识别、人脸验证、人脸检测、人脸关键点 landmark 检测、mask 检测、头部姿势检测、年龄和性别识别。除此之外,还具有一个角色管理系统,可让您轻松控制谁可以访问您的人脸识别服务。

CompreFace 同时支持 CPUGPU,非常易于扩展,人脸算法基于 FaceNetInsightFace 等。

安装

CompreFace 提供了基于 docker 的部署方法,我们首先去安装 docker,这里以 linux 平台为例

sudo apt-get updatesudo apt-get install ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.asc# 加入apt源echo /  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu /  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | /  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 更新源  sudo apt-get update# 安装dockersudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

接下来安装 CompreFace

wget -q -O tmp.zip 'https://github.com/exadel-inc/CompreFace/releases/download/v1.2.0/CompreFace_1.2.0.zip' && unzip tmp.zip && rm tmp.zipdocker-compose up -d

7cf7fe43c72e71d34fd364b2c360e895.jpeg

CompreFace

如果需要关闭或者启动服务,可以执行下面的命令

# 关闭docker-compose stop# 启动docker-compose start

使用

服务启动后,就可以在浏览器中访问 http://$ip:8000/login,这里的 ip 是运行 CompreFace 机器的 ip 地址

d2362b630198248c776e7f576bdf9ab4.jpeg

CompreFace

先点击 Try Demo 来体验一下

51cbc1d5b7f23343b3cb5cadf4d2a60a.jpeg

CompreFace

拖入测试图片,可以看到图片中的人脸被框出来了

eeca7564ae04ec7454e9181bea50975a.jpeg

CompreFace

下方的 RequestResponsecurl 请求的命令格式及服务端响应的 JSON 数据。

fff9a3ec2ca35edb21659d24fde34af2.jpeg

CompreFace

这就意味着,当你在 Terminal 中使用下面请求时,同样能够获得 JSON 数据,客户端请求

curl -X POST "http://172.25.10.115:8000/api/v1/recognition/recognize?face_plugins=landmarks, gender, age, pose" /-H "Content-Type: multipart/form-data" /-H "x-api-key: 00000000-0000-0000-0000-000000000002" /-F "file=@rs_600x600-200826161208-1200-prison-break-then-and-now-wentworth-miller-Dominic-Purcell-mp.jpeg"

得到的 Response 类似这样

{  "result": [ {      "age": {        "probability": 1,        "high": 32,        "low": 25      },      "gender": {        "probability": 0.9998852014541626,        "value": "male"      },      "pose": {        "pitch": 10.347200724641283,        "roll": 8.087814409337398,        "yaw": 25.8938720074166      },      "box": {        "probability": 0.99999,        "x_max": 1110,        "y_max": 643,        "x_min": 611,        "y_min": 67      },      "subjects": [ {          "subject": "Jared Leto",          "similarity": 0.70706        } ],      "landmarks": [ [ 742,          313 ],        [ 888,          305 ],        [ 776,          412 ],        [ 753,          500 ],        [ 871,          495 ] ]    },    {      "age": {        "probability": 0.999687910079956,        "high": 32,        "low": 25      },      "gender": {        "probability": 1,        "value": "male"      },      "pose": {        "pitch": 6.629633741562486,        "roll": -4.344288845360126,        "yaw": -14.0751115802405      },      "box": {        "probability": 0.99997,        "x_max": 551,        "y_max": 611,        "x_min": 135,        "y_min": 121      },      "subjects": [ {          "subject": "Regina King",          "similarity": 0.43778        } ],      "landmarks": [ [ 305,          331 ],        [ 438,          333 ],        [ 391,          420 ],        [ 322,          487 ],        [ 423,          487 ] ]    } ]}

下面去注册账号,可以体验完整的功能。首先创建应用 Create Application

ee8bfd282723aefe5fdb9319b43afc5b.jpeg

CompreFace

给应用取个名字

1c5d260004a16250b8bbf9c54029f854.jpeg

CompreFace

然后添加个服务,目前系统自带了3个服务,即 RECOGNITION (识别出是谁?)、DETECTION (检测出脸)、VERIFICATION (在一张图中验证该人脸是否出现?)。

d6c9245b68139a560e34e11498b1a391.jpeg

CompreFace

那我们就增加个人脸识别的服务

4a25801df39f361dbb8334c6c71292cb.jpeg

CompreFace

服务增添好后,可以看看几个重要的信息,NameAPI keyType

fc320c086b3b9722772bdd4327980c09.jpeg

CompreFace

接下来,添加图片数据库

6847efc4fb555842e212e76825d7926f.jpeg

CompreFace

填写 Subject Name 即人名

0d6f662321ecf9caa38a18e8deb421d0.jpeg

CompreFace

导入对应人名的图像,要求是单人图片

bdd918c9a146cf565f43d284c2612e97.jpeg

CompreFace

回到 Test 进行检测,导入测试图片,鼠标移动到人脸框位置,会出现相关人脸信息,显示人名、相似度、性别和大概的年龄。

5f0cacab12162b44b1fc08c330e77c6a.jpeg

CompreFace

49fa9386e8996304962c58e242633fa3.jpeg

CompreFace

Request 可以看到 curl 命令行中跟的 x-api-key 参数是我们创建 service 时生成的 API key

curl -X POST "http://172.25.10.115:8000/api/v1/recognition/recognize?face_plugins=landmarks, gender, age, pose" /-H "Content-Type: multipart/form-data" /-H "x-api-key: c2fcdce5-8c35-42c8-96c6-8c4b9d5acc7f" /-F "file=@rs_600x600-200826161208-1200-prison-break-then-and-now-wentworth-miller-Dominic-Purcell-mp.jpeg"

点击左侧下方的两个图标,还可显示出人脸的 landmarkpose

c35e4702623fffe0dbf883c926f74e2a.jpeg

CompreFace

接下来再体验一下人脸验证的功能,新增服务 VERIFICATION

222608384417fd75ed9f17a6de15d82c.jpeg

CompreFace

导入2张图片测试,左侧是单人图片也就是要在右侧图片中寻找左侧图片中的人脸,结果会显示相似度、性别和大概年龄。

40a8002eabdab9f7b76014fc5a9bc760.jpeg

CompreFace

参考资料

  • https://github.com/exadel-inc/CompreFace

也许您对下面的内容还感兴趣: