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

简介

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

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

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

安装

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/633569.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超详细的前后端实战项目(Spring系列加上vue3)(一步步实现+源码)前端篇(一)

最近想着一步步搭建一个前后端项目,将每一步详细的做出来。(如果有不足或者建议,也希望大佬们指出哦) 前端初始化 1.根据vue脚手架创建vue项目 这里可以用很多方法创建vue项目,大家看着创建吧,只要能创建…

C++、与C语言的一些变化、新增的一些函数类型、面向对象程序设计的基本特点

C 面向对象的编程思想 万物皆对象 类库: MFC Qt opencv opengl cout:标准输出流对象 endl:换行符 新的数据类型 bool型:逻辑真假—— true、false 变量的存储类型 auto:变量在定义时由编译器自动推到…

Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓 前言文件结构与基本概念配置网络接口的常用参数高级网络配置技巧实用工具与调试技巧实战案例与最佳实践 前言 在我们的日常生…

JVM(7):虚拟机性能分析和故障解决工具之jstat工具

1 jstat(JVM Statistics Monitoring Tool)作用 监视虚拟机各种运行状态信息,可以显示本地或者是远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据 2 命令格式 jstat [options vmid [interval[count]]] 参数解释 第一个参数:options 代…

谷歌插件编写

目录 manifest.json {"manifest_version": 3,"name": "Floating Ball","version": "1.0","description": "A floating ball on the right side of the webpage.","permissions": ["act…

C语言 数组——计算最大值的函数实现

目录 计算最大值 计算最大值的函数实现 应用实例:计算班级最高分​编辑​编辑 返回最大值所在的下标位置 返回最大值下标位置的函数实现​编辑 一个综合应用实例——青歌赛选手评分​编辑​编辑​编辑​编辑​编辑 计算最大值 计算最大值的函数实现 应用实例&…

hcia datacom学习(8):静态NAT、动态NAT、NAPT、Easy IP、NAT server

1.私网地址 在现实环境中,企业、家庭使用的网络是私网地址(内网),运营商维护的网络则是公网地址(外网)。私网地址是在局域网(LAN)内使用的,因此无法被路由,不…

多线程讲解(详解)

目录 什么是多线程? 为什么要使用多线程? 线程的创建 使用Thread实现 从以上代码我们梳理一下多线程创建步骤: 注意: 小示例 首先,引入依赖 然后,按照我们刚刚说的构建多线程的步骤进行构建&#…

【C++】牛客 ——NC138 矩阵最长递增路径

✨题目链接: NC138 矩阵最长递增路径 ✨题目描述 给定一个 n 行 m 列矩阵 matrix ,矩阵内所有数均为非负整数。 你需要在矩阵中找到一条最长路径,使这条路径上的元素是递增的。并输出这条最长路径的长度。 这个路径必须满足以下条件&#…

医学科技查新中对查新点的撰写方法!附案例讲解!

我国的科技查新工作最早是从医学领域开始的,始于1985年中国科学院医学情报所,后来逐步发展到工、农等其 他各个领域。医学科技查新包括立项查新和成果查新两个部分,其中医学立项查新,它是指在医学科研项目申报开题之前&#xff0c…

Wondershaper网络限制脚本源码分析一(下载速度限制篇)

Wondershaper 是一个简单的 Linux 命令行工具,用于自动管理和控制网络接口的上行和下行带宽,旨在为用户提供稳定的网络体验,尤其是在网络拥塞的情况下。它通过 Traffic Control (tc) 工具集实现这一功能,但与直接使用 tc 相比&…

python基础之开发工具配置

day01-Python基础 一、Python介绍 Python是一个计算编程语言,可以实现计算程序开发,也可以用于数据处理。SQL语言只能用于结构化数据的处理。Python的比SQL应用更广泛。 1990年推广Python,最初是应用于运维开发,随着不断更新迭代…

xxe漏洞--xml外部实体注入漏洞

1.xxe漏洞介绍 XXE(XML External Entity Injection)是一种攻击技术,它允许攻击者注入恶意的外部实体到XML文档中。如果应用程序处理XML输入时未正确配置,攻击者可以利用这个漏洞访问受影响系统上的敏感文件、执行远程代码、探测内…

PLC工程师按这个等级划分是否靠谱?

在工业自动化领域,PLC工程师扮演着至关重要的角色,他们负责构建、维护自动化系统,推动工业4.0进程的发展。成为一名优秀的PLC工程师需要经历不同境界的发展阶段,每个阶段都对应着不同的技能要求和责任。以下是PLC工程师的六种级别…

ffmpeg中AVCodec是否需要手动销毁?

在开发到退出一个视频播放功能时,看到对AVCodec*这个指针做了初始化,但是突然有一个好奇的疑问,这个AVCodec到底是否需要人工手动销毁? 我在初始化的时候这样用的: const AVCodec *v_codec NULL; AVCodecContext *v…

从零到一建设数据中台 - 应用场景及实施路径

从零到一建设数据中台 - 应用场景及实施路径 一、数据中台技术场景 异构数据源集成、交换场景:实现异构数据源的整合集中和交换共享数据治理场景:从元数据角度实现企业级数据目录管理、保证数据质量、数据安全,提供数据血缘、数据服务数仓、…

记录centos中操作(查找、结束、批量)进程以及crontab定时写法的知识

环境:vps,centos7,python3。 近期写了个python程序,用青龙面板在centos上运行。程序中有while无限循环,但是我在青龙中设置了定时任务(每隔半小时运行一次),于是造成了进程中有多个…

宁波财经学院第十三周李倩教学检查第一节课

好奇和满足好奇心的 0.简单的介绍额 1.李倩提到了如何导入jar包,这应该如何去导入呢? 2.波哥防区只获取了一个request的字段 获得文件内容和保存文件

[IMX6ULL驱动开发]-Linux对中断的处理(一)

目录 中断概念的引入 ARM架构中断的流程 异常向量表 Linux系统对中断的处理 ARM对程序和中断的处理 Linux进程中断处理 中断概念的引入 如何理解中断,我们可以进行如下抽象。把CPU看做一个母亲,当它正在执行任务的时候,可以看为是一个母…