Sign inSign up

cnbbx/face-recognition

By cnbbx

•Updated 9 months ago

Dockerized Flask face recognition / Docker 化人脸识别 Flask 服务

Image
Web servers
0

974

cnbbx/face-recognition repository overview

⁠Face Recognition Service - Docker Image

基于 Python + OpenCV + dlib 构建的轻量级人脸识别服务,提供 REST API 接口实现人脸库管理和人脸识别功能。

⁠概述

该 Docker 镜像封装了一个 Flask 后端服务,具备以下核心功能:

  • 人脸注册/删除/查询(管理人脸库)
  • 单人脸检测与 128 维特征编码提取
  • 基于特征距离的人脸识别(阈值 0.6)
  • 支持跨域访问(CORS)
  • 数据持久化(人脸库文件映射到宿主机)

⁠快速开始

⁠1. 运行容器
docker run -d \
  --name cnbbx_facerecognition \
  --restart unless-stopped \
  -p 8080:8080 \
  -v /root/faces:/app/faces \
  cnbbx/face-recognition
⁠参数说明
参数说明
-d后台运行容器
--name cnbbx_facerecognition为容器命名,便于管理
--restart unless-stopped容器退出时自动重启(除非手动停止)
-p 8080:8080端口映射:宿主机 8080 端口 → 容器内 8080 端口
-v /root/faces:/app/faces目录挂载:宿主机 /root/faces 目录 → 容器内 /app/faces(人脸库持久化)
cnbbx/face-recognition镜像名称
⁠2. 验证服务

容器启动后,可通过以下命令检查服务状态:

# 查看容器日志
docker logs cnbbx_facerecognition

# 正常输出示例:
# 🔍 加载人脸库(Docker环境)...
# ✅ 共加载0个人脸
# 🚀 Docker版人脸识别服务启动:http://0.0.0.0:8080

访问 http://<服务器IP>:8080/faces 应返回:

{"faces": []}

⁠API 接口文档

⁠1. 人脸库管理
⁠接口地址

/faces

⁠请求参数
参数位置类型必填说明
idQueryString是人脸唯一标识ID
fileFormDataFile是(POST)人脸图片文件(JPG/PNG,单人脸)
⁠请求方法 & 响应示例
⁠🔹 查询所有人脸ID
  • 方法:GET
  • 请求示例:GET http://localhost:8080/faces
  • 成功响应(200):
    {"faces": ["user1", "user2"]}
    
⁠🔹 注册人脸
  • 方法:POST
  • 请求示例:POST http://localhost:8080/faces?id=user1(FormData 携带图片文件)
  • 成功响应(200):
    {"success": true, "msg": "人脸user1注册成功(Docker)"}
    
  • 失败响应(400):
    {"error": "未检测到人脸"}
    
⁠🔹 删除人脸
  • 方法:DELETE
  • 请求示例:DELETE http://localhost:8080/faces?id=user1
  • 成功响应(200):
    {"success": true, "msg": "人脸user1已删除"}
    
⁠错误码说明
状态码说明
400缺少参数/文件为空/人脸检测失败
⁠2. 人脸识别
⁠接口地址

/

⁠请求参数
参数位置类型必填说明
fileFormDataFile是待识别的人脸图片(JPG/PNG)
⁠请求方法 & 响应示例
  • 方法:POST
  • 请求示例:POST http://localhost:8080/(FormData 携带图片文件)
  • 成功响应(200):
    {
      "count": 1,
      "faces": [
        {"id": "user1", "distance": 0.45}
      ]
    }
    
  • 无匹配人脸响应(200):
    {
      "count": 1,
      "faces": []
    }
    
  • 失败响应(400):
    {"error": "检测到3张人脸,仅支持单人脸"}
    
⁠字段说明
字段说明
count图片中检测到的人脸数量
faces匹配到的人脸列表(distance ≤ 0.6 为匹配成功)
distance特征距离(值越小,相似度越高)

⁠故障排除

⁠1. 容器启动失败
  • 查看日志:docker logs cnbbx_facerecognition
  • 确认宿主机 8080 端口未被占用:netstat -tulpn | grep 8080
⁠2. 人脸检测失败
  • 确保上传的图片为清晰的正面人脸照
  • 图片中仅包含单个人脸(代码限制仅支持单人脸)
  • 图片格式为 JPG/PNG(其他格式不支持)
⁠3. 数据持久化问题
  • 确认挂载目录权限:chmod 777 /root/faces
  • 检查容器内目录:docker exec -it cnbbx_facerecognition ls /app/faces

⁠总结

  1. 核心运行命令通过 -v 参数实现人脸库持久化,确保容器重启后数据不丢失;
  2. 服务提供 GET/POST/DELETE /faces 管理人脸库,POST / 实现人脸识别,接口简洁易用;
  3. 人脸识别基于 dlib 的 128 维特征编码,特征距离 ≤ 0.6 判定为匹配成功,是行业通用阈值。

Tag summary

Content type

Image

Digest

sha256:3c9154538…

Size

388.6 MB

Last updated

9 months ago

docker pull cnbbx/face-recognition