免费开源人脸识别系统,支持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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot 多环境切换 方法

准备工作 假设系统中有以下几个yml文件: application.ymlapplication-dev.ymlapplication-prode.ymlapplication-test.yml 方法一:在Active Profiles:输入dev 启动效果: 方法二:在Environment variables: 输入spring.profile…

Dijkstra算法在《庆余年》中的应用:范闲的皇宫之旅

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

实现计时器

一、计时器 Java的标准库中,为我们提供了 计时器 的实现,让我们先来试着使用它. public static void main(String[] args) throws InterruptedException{Timer timer new Timer();timer.schedule(new TimerTask() {Overridepublic void run() {System.out.println("hell…

GPT‑4o普通账户也可以免费用

网址 https://chatgpt.com/ 试了一下,免费的确实显示GPT‑4o的模型,问了一下可以联网,不知道能不能通过插件出图 有兴趣的可以试试

【诚邀加入】obdiag SIG:共筑OceanBase敏捷诊断,让问题排查变得更快更容易!

亲爱的OceanBase用户、技术爱好者及专业人士: 我们怀着无比激动的心情,正式向您发出加入obdiag SIG(OceanBase敏捷诊断工具特别兴趣小组)的诚挚邀请!obdiag SIG 是一个专注于 OceanBase 敏捷诊断工具研发、推广及生态…

python 庆余年2收视率数据分析与可视化

为了对《庆余年2》的收视率进行数据分析与可视化,我们首先需要假设有一组收视率数据。由于实际数据可能无法直接获取,这里我们将使用模拟数据来演示整个过程。 以下是一个简单的步骤,展示如何使用Python(特别是pandas和matplotli…

Acrobat Pro DC 2024 Mac软件安装包下载PDF2024 Mac安装教程

安装 步骤 1,双击打开下载好的安装包。 2,选择acrobat dc installer.pkg双击启动安装程序。 3,点击继续。 4,点击继续。 5,点击继续。 6,点击安装。 7,输入电脑密码。 8,软件安装中…

“手撕”String类+练习题

一、什么是String类 简单讲:是一个类!创建字符串和字符串方法的类。 用 圈起来的叫字符,比如:a,b....里面只能有一个char类型的字符。 用" "圈起来的叫字符串,比如:"abc"..里面可以连…

【java】websocket对接微软语音实时识别

目录 1. pom依赖2. websocket接口3. 自定义输入流4. 自定义控制5. 自定义语音流6. 说明 1. pom依赖 <dependency><groupId>com.microsoft.cognitiveservices.speech</groupId><artifactId>client-sdk</artifactId><version>1.37.0</ve…

C# Stack用法

C#中的Stack&#xff08;堆栈&#xff09;是一种后进先出&#xff08;LIFO, Last In First Out&#xff09;的数据结构&#xff0c;用于在顶部添加和移除元素。Stack类位于System.Collections.Generic命名空间中&#xff0c;它允许存储特定类型的对象。以下是一些基本的Stack用…

如何搭建Sphinx文档

环境准备 Linux CentOS 7 方案 搭建一个文档网站&#xff0c;本文档使用的是tomcatsphinx。 Tomcat可以快速搭建出http服务&#xff0c;也可以使用apache httpd。 Sphinx作为文档网页自动生成工具&#xff0c;可以从reStructured文档转换为html文件。 Tomcat安装 创建/…

华为设备WLAN配置之AP上线

WLAN基础配置之AP上线 配置WLAN无线网络的第一阶段&#xff0c;AP上线技术&#xff1a; 实验目标&#xff1a;使得AP能够获得来自AC的DHCP地址服务的地址&#xff0c;且是该网段地址池中的IP。 实验步骤&#xff1a; 1.把AC当作三层交换机配置虚拟网关 sys Enter system view,…

PaddlePaddle----基于paddlehub的文字识别

识别的代码 要使用 PaddleHub 进行 OCR 文本识别&#xff0c;您可以使用 PaddleHub 提供的预训练模型 chinese_ocr_db_crnn_mobile。以下是一个示例 Python 代码&#xff0c;演示如何使用 PaddleHub 进行 OCR 文本识别&#xff1a; import paddlehub as hub import cv2# 加载预…

note-网络是怎样连接的1 浏览器内部

助记提要 常见浏览器使用的协议 4种HTTP方法 8种响应状态码类型 5种5种IP地址的含义域名查找的基本原理协议栈发送消息的4个阶段 第1章 浏览器生成消息 探索浏览器内部 1 浏览器输入的URL 常见协议 http(访问Web服务器)&#xff0c;ftp(从ftp服务器下载和上传)&#xff0c;f…

【XuperChain】一、搭建第一条区块链节点

一、准备环境&#xff1a; 下载git和golang即可 apt install git apt install golang二、拉取代码&#xff0c;编译XuperChain 通过此命令拉取XuperChain源码到本地 git clone https://github.com/xuperchain/xuperchain.git 拉取成功后&#xff0c;会代码保存到了xuperChain…

使用Python生成一束玫瑰花

520到了&#xff0c;没时间买花&#xff1f;我们来生成一个电子的。 Python不仅是一种强大的编程语言&#xff0c;用于开发应用程序和分析数据&#xff0c;它也可以用来创造美丽的艺术作品。在这篇博客中&#xff0c;我们将探索如何使用Python生成一束玫瑰花的图像。 准备工作…

【逻辑漏洞】重置/忘记密码安全问题

【逻辑漏洞】重置/忘记密码安全问题 密码重置令牌泄漏密码重置中毒电子邮件轰炸密码重置令牌生成方式太过简陋使用过期令牌用好的响应替换坏的响应尝试使用自己的重置令牌注销/密码重置中的会话失效 密码重置令牌泄漏 如果密码重置令牌包含在 URL 中&#xff0c;并且用户在请求…

野心是需要付出去达到的,而欲望就只是欲望

当你能分清楚自己的想法是野心还是欲望时&#xff0c;就没有那么焦虑了。 这是野心还是欲望&#xff1f; 理解这两者之间的区别&#xff0c;对于我们的情绪状态和生活决策有着重要的影响。本文将探讨如何区分野心与欲望&#xff0c;并分享如何通过这种理解来减少焦虑。 野心&a…

如何解决爬虫的IP地址受限问题?

使用代理IP池、采用动态IP更换策略、设置合理的爬取时间间隔和模拟正常用户行为&#xff0c;是解决爬虫IP地址受限问题的主要策略。代理IP池是通过集合多个代理IP来分配爬虫任务&#xff0c;从而避免相同的IP地址对目标网站进行高频次访问&#xff0c;减少被目标网站封禁的风险…

TransFormer学习之VIT算法解析

1.算法简介 本文主要对VIT算法原理进行简单梳理&#xff0c;下图是一个大佬整理的网络整体的流程图&#xff0c;清晰明了&#xff0c;其实再了解自注意力机制和多头自注意力机制后&#xff0c;再看VIT就很简单了 受到NLP领域中Transformer成功应用的启发&#xff0c;ViT算法尝…