【保姆级教程】手把手带你搭建免费的人脸检测/识别系统,支持REST API,自托管,功能强大

前段时间,带大家搞了两台云服务器:

很多小伙伴问:到底能干什么?

于是猴哥继续肝了几篇分享:

今天继续给大家分享一个有趣的开源项目:免费的人脸检测/识别服务,无需任何机器学习基础,即可集成到任意应用中。

传送门:https://github.com/exadel-inc/CompreFace

1. 项目简介

CompreFace 是一个免费的开源人脸识别系统,支持 Docker 部署,同时具备网页客户端
和 RESTful API 服务。支持的功能包括:人脸识别、人脸验证、人脸检测、人脸关键点检测、面具检测、头部姿势检测、年龄和性别识别等。

相比市面上已有的人脸识别解决方案,CompreFace 的优势在:

  • 完全免费开源
  • 支持 CPU, 无需昂贵的 GPU 资源
  • docker 一键部署,云端和本地都支持
  • 基于最领先的人脸算法
  • 自托管,确保隐私数据安全

接下来,我们一起来实操一下~

2. 服务部署

CompreFace 提供了 docker-compose 一键部署。

首先下载配置文件:

mkdir compreface
cd compreface
wget -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

如果国内下载失败,可参考:一行命令实现 Github 国内下载加速

然后,一键启动:

docker-compose up -d

如果镜像拉取失败,需要配置镜像加速器。

服务启动后,可以打开宝塔面板进行查看:

状态是运行中,意味着服务已经正常启动,web 界面的端口号是8000。

浏览器中打开:http://IP:8000,例如:http://101.33.210.xxx:8000/。


注册一个账号并进行登录,开始试玩吧。

3. 服务测试

进来以后,首先是创建一个应用。

然后,在应用中创建服务,服务类型包括三个:

  • 人脸检测
  • 人脸识别
  • 人脸验证

3.1 Web 端测试

创建好服务后,最右侧红色方框中,点击进行服务测试。

人脸识别服务测试:

首先需要采集人脸 - Face Collection。

上传你需要识别的人脸 ID,比如我这里新建一个 ID = face0,然后上传一张/多张人脸图片。

接下来,我们来测试一下,上传另一张图片,可以看到模型以 0.91 的相似度,成功命中 face0

人脸检测服务测试:

只需上传一张人脸图像:

人脸验证服务测试:

人脸验证:分别上传两张图像,验证是否是同一个人,如下图所示。

3.2 API 测试

API 文档:https://github.com/exadel-inc/CompreFace/blob/master/docs/Rest-API-description.md

细心的小伙伴,在 Web 端测试时,已经看到了每种服务的请求详细信息。

这里我们后端采用 Python 给大家展示一下,如何调用服务的 API,方便大家嵌入到自己的应用中。

人脸检测的 API 测试示例代码:

import request
def face_detect():
    # 定义 API 的 URL
    url = "http://129.150.63.xxx:8000/api/v1/detection/detect/"
    # 定义请求头
    headers = {
        # "Content-Type": "multipart/form-data",
        "x-api-key": "4e4b89b7-df58-4e45-b7c0-9a0003878a24"  # 替换为实际的服务 API 密钥
    }
    # 定义请求的参数
    params = {
        "face_plugins": "landmarks, gender, age, pose", # 是否返回额外信息 
        "det_prob_threshold": "0.5"  # 人脸检测阈值
    }
    # 定义请求的数据
    files = {'file': open('1.jpg', 'rb')}
    # 发送 POST 请求
    response = requests.post(url, headers=headers, params=params, files=files)
    if response.status_code == 200:
        print(response.json())
    else:
        print(response.status_code)

人脸验证的 API 测试示例代码:

def face_verify():
    # 定义 API 的 URL
    url = "http://129.150.63.184:8000/api/v1/verification/verify"
    # 定义请求头
    headers = {
        # "Content-Type": "multipart/form-data",
        "x-api-key": "435764a0-b581-45d2-8a9e-ab841b2afedf"  # 替换为实际的服务 API 密钥
    }
    # 定义请求的参数
    params = {
        "face_plugins": "landmarks, gender, age, pose", # 是否返回额外信息 
        "det_prob_threshold": "0.5"  # 人脸检测阈值
    }
    # 定义请求的数据
    files = {
        "source_image": open("1.jpg", "rb"),
        "target_image": open("2.jpg", "rb")
    }
    # 发送 POST 请求
    response = requests.post(url, headers=headers, params=params, files=files)
    print(response.json())

特别注意:headers 中不要加 'Content-Type': 'multipart/form-data',这是因为 requests 库会自动根据传递的文件数据创建适当的multipart请求,如果你在请求头中显式设置'Content-Type': 'multipart/form-data',可能会导致请求出现问题。

篇幅有限,我们这里只展示两个例子。更多功能,大家可参考上方的 API 调用文档。

当然,如果你觉得在你的应用中写这么多代码略显麻烦,官方还贴心地提供了 python-sdk,感兴趣的小伙伴可前往查看:

https://github.com/exadel-inc/compreface-python-sdk

写在最后

本文介绍了如何使用 CompreFace,一个免费的开源人脸识别系统,进行简单易用的服务部署和测试。非常适合没有任何机器学习基础的用户,搭建自己的人脸识别服务。

如果本文对你有帮助,欢迎点赞收藏备用!

感谢您的提问!以下是手把手教您搭建属于自己的PyQt5-YOLOv5目标检测平台的保姆教程: 1. 安装Anaconda 首先,您需要下载并安装Anaconda,Anaconda是一个 Python 数据科学平台,包含了许多常用的数据科学包,如Numpy、Pandas等。 2. 创建一个虚拟环境 在安装了Anaconda之后,您需要创建一个虚拟环境,以便隔离开发环境和系统环境。您可以在命令行中输入以下命令来创建一个名为yolov5的虚拟环境: ``` conda create -n yolov5 python=3.8 ``` 其中,“yolov5”是您的虚拟环境的名称,您可以根据自己的需要进行更改。 3. 激活虚拟环境 创建完虚拟环境之后,您需要激活它,以便在环境中进行开发。在命令行中输入以下命令来激活yolov5环境: ``` conda activate yolov5 ``` 4. 安装PyQt5和YOLOv5 在激活了虚拟环境之后,您需要安装PyQt5和YOLOv5。您可以在命令行中输入以下命令来安装它们: ``` pip install PyQt5 pip install yolov5 ``` 5. 创建PyQt5界面 在安装了PyQt5之后,您可以使用Qt Designer创建一个PyQt5界面。Qt Designer是一个可视化的界面设计工具,可以让您轻松地创建PyQt5界面。 6. 使用YOLOv5进行目标检测 在安装了YOLOv5之后,您可以使用它进行目标检测。您可以在Python脚本中使用以下代码: ```python import torch from yolov5.models.experimental import attempt_load from yolov5.utils.torch_utils import select_device device = select_device('cpu') model = attempt_load('yolov5s.pt', map_location=device) img = torch.zeros((1, 3, 640, 640), device=device) pred = model(img) print(pred) ``` 其中,“yolov5s.pt”是YOLOv5的预训练模型,您可以在YOLOv5的GitHub页面上下载它。 7. 将PyQt5界面与YOLOv5集成 最后,您需要将PyQt5界面与YOLOv5集成起来,以便您可以在界面上使用YOLOv5进行目标检测。您可以在Python脚本中使用以下代码: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtGui import QPixmap from yolov5.models.experimental import attempt_load from yolov5.utils.torch_utils import select_device class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('PyQt5-YOLOv5目标检测平台') self.setGeometry(100, 100, 800, 600) self.label = QLabel(self) self.label.setGeometry(50, 50, 640, 480) self.show() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec_()) ``` 这段代码创建了一个名为“PyQt5-YOLOv5目标检测平台”的窗口,并在窗口上添加了一个标签。您可以使用这个标签来显示检测到的目标。 以上就是手把手教您搭建属于自己的PyQt5-YOLOv5目标检测平台的保姆教程。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值