编辑 | blame | 历史 | 原始文档

基于DLIB的人脸识别服务-手工部署说明

1. 简介

DLIB是一个现代C++工具包,包含机器学习算法和工具,用于创建复杂的软件以解决现实世界中的问题。它在计算机视觉领域尤为出色,尤其是在面部识别任务中表现优异。DLIB的人脸识别功能基于深度学习技术,能够高效地检测和识别人脸。
本程序利用DLIB的强大功能,提供一个基于Python的简单人脸识别服务。用户可以通过HTTP请求上传图像,服务将返回图像中检测到的人脸信息。

2. 环境准备

在开始之前,请确保您的系统满足以下要求:

  • 操作系统:Linux(推荐使用Ubuntu)
  • Python版本:3.10及以上
  • 必要的Python库:dlib, Flask, numpy, opencv-python
  • CMake(用于编译dlib)
  • 编译工具链(如g++)

3. 安装步骤

3.1 安装依赖项

首先,确保系统包是最新的:

sudo apt-get update
sudo apt-get upgrade

安装必要的依赖项:

sudo apt-get install build-essential cmake libboost-all-dev libx11-dev libopenblas-dev liblapack-dev python3.12-venv

3.2 创建Python虚拟环境

创建并激活一个新的Python虚拟环境:名称为face-dt
bash python3 -m venv face-dt source face-dt/bin/activate

3.3 安装Python库

先在项目根目录创建一个requirements.txt文件,内容如下:

dlib>=19.22.0
numpy>=1.19.0
opencv-python>=4.5.0
Pillow>=8.0.0
scikit-image>=0.18.0
pandas>=1.2.0
simplejson>=3.17.0
fastapi>=0.104.0
uvicorn>=0.24.0
python-multipart>=0.0.6

然后运行以下命令安装这些库:
bash pip install -r requirements.txt
系统会自安装程序所需要的所有依赖库,其中,dlib的安装可能需要一些时间,请耐心等待,不要中途终止。
根据计算机的配置不同,dlib的安装时间可能会有所不同,通常在几分钟到十几分钟不等。
![](https://qncdn.tairongkj.com/docs/images/20250929103043.png)
安装完成后如下图所示:
![](https://qncdn.tairongkj.com/docs/images/20250929103931.png)

3.4 下载项目所需要的库与文件

先创项目所需要的目录,在项目的根目录下运行:
```bash
mkdir -p data/data_dlib
mkdir -p data/db
mkdir -p data/data_faces_from_camera

sudo chmod -R 777 ./**

然后下载所需要的文件:

cd data/data_dlib

下载人脸关键点预测模型

wget https://datacdn.data-it.tech/faceRec/face-dt/shape_predictor_68_face_landmarks.dat

下载人脸识别模型

wget https://datacdn.data-it.tech/faceRec/face-dt/dlib_face_recognition_resnet_model_v1.dat


然后,回到项目根目录内,下载本项目的代码文件::

回到项目根目录

cd ../../
wget https://datacdn.data-it.tech/faceRec/face-dt/FaceRecognitionServer_fastapi.py

### 3.5 运行服务
在项目根目录下,运行以下命令启动人脸识别服务:

uvicorn FaceRecognitionServer_fastapi:app --host 0.0.0.0 --port 12316 --workers 1
```

去行以上命令,人脸识别服务就启动成功了,默认监听12316端口。

3.6 以服务方式运行

可以使用nohup命令让服务在后台运行,即使关闭终端,服务也不会停止:

nohup uvicorn FaceRecognitionServer_fastapi:app --host 0.0.0.0 --port 12316 --workers 1 &

这样,服务将继续在后台运行,日志信息将被写入nohup.out文件中。

3.7 停止服务

如果需要停止服务,可以使用ps命令找到服务的进程ID,然后使用kill命令终止它:

ps aux | grep uvicorn
kill <PID>

<PID>替换为实际的进程ID。

3.8 以services方式运行

也可以将人脸识别服务配置为系统服务,以便更方便地管理它
创建一个新的服务文件,例如/etc/systemd/system/facerec.service,内容如下:

[Unit]
Description=Face Recognition Service
After=network.target
[Service]
User=your_username
WorkingDirectory=/path/to/your/project
ExecStart=/path/to/your/project/face-dt/bin/uvicorn FaceRecognitionServer_fastapi:app --host 0.0.0.0 --port 12316 --workers 1
[Install]
WantedBy=multi-user.target

your_username替换为运行服务的用户,将/path/to/your /project替换为项目的实际路径。
然后,重新加载systemd以识别新的服务文件:

sudo systemctl daemon-reload

启动服务:

sudo systemctl start facerec.service

启用服务,使其在系统启动时自动运行:
bash sudo systemctl enable facerec.service
检查服务状态:
bash sudo systemctl status facerec.service
停止服务:
bash sudo systemctl stop facerec.service
重启服务:
bash sudo systemctl restart facerec.service

3.9 防火墙配置

如果服务器启用了防火墙,请确保允许12316端口的流量:
bash sudo ufw allow 12316 sudo ufw reload

3.10 访问服务

现在,您可以通过浏览器或API客户端访问人脸识别服务:
http://<your_server_ip>:12316
<your_server_ip>替换为服务器的实际IP地址。

4. 总结

通过以上步骤,您已经成功手动部署了基于DLIB的人脸识别服务。您可以根据需要进一步扩展和优化该服务,以满足特定的应用需求。