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

简介

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

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

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

安装

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

go 复制代码
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo 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

# 安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

接下来安装 CompreFace

go 复制代码
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.zip
docker-compose up -d


CompreFace

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

go 复制代码
# 关闭
docker-compose stop

# 启动
docker-compose start

使用

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


CompreFace

先点击 Try Demo 来体验一下


CompreFace

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


CompreFace

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


CompreFace

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

go 复制代码
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 类似这样

go 复制代码
{
  "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


CompreFace

给应用取个名字


CompreFace

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


CompreFace

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


CompreFace

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


CompreFace

接下来,添加图片数据库


CompreFace

填写 Subject Name 即人名


CompreFace

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


CompreFace

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


CompreFace


CompreFace

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

go 复制代码
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


CompreFace

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


CompreFace

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


CompreFace

参考资料

相关推荐
qw9494 分钟前
SpringMVC
java·后端
customer0823 分钟前
【开源免费】基于SpringBoot+Vue.JS医疗报销系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
B站计算机毕业设计超人27 分钟前
计算机毕业设计SpringBoot+Vue.jst房屋租赁系统(源码+LW文档+PPT+讲解)
vue.js·spring boot·后端·eclipse·intellij-idea·mybatis·课程设计
m0_748248652 小时前
SpringBoot整合easy-es
spring boot·后端·elasticsearch
一个热爱生活的普通人2 小时前
golang的切片(Slice)底层实现解析
后端·go
红目香薰2 小时前
Trae——慧码速造——完整项目开发体验
后端
张有志_2 小时前
STL容器终极解剖:C++ vector源码级实现指南 | 从内存分配到异常安全的全流程避坑
c语言·c++·算法·开源·visual studio
美股研究社3 小时前
百度智能云AI收入增3倍,2025开源引流打赢生态战
人工智能·百度·开源
Vcats3 小时前
深入浅出:基于SpringBoot和JWT的后端鉴权系统设计与实现
java·spring boot·后端
~kiss~3 小时前
Rust~二刷异步逻辑
开发语言·后端·rust