DLIB是一个现代C++工具包,包含机器学习算法和工具,用于创建复杂的软件以解决现实世界中的问题。它在计算机视觉领域尤为出色,尤其是在面部识别任务中表现优异。DLIB的人脸识别功能基于深度学习技术,能够高效地检测和识别人脸。
本程序利用DLIB的强大功能,提供一个基于Python的简单人脸识别服务。用户可以通过HTTP请求上传图像,服务将返回图像中检测到的人脸信息。
在开始之前,请确保您的系统满足以下要求:
首先,确保系统包是最新的:
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
创建并激活一个新的Python虚拟环境:名称为face-dtbash python3 -m venv face-dt source face-dt/bin/activate
先在项目根目录创建一个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的安装时间可能会有所不同,通常在几分钟到十几分钟不等。

安装完成后如下图所示:

先创项目所需要的目录,在项目的根目录下运行:
```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端口。
可以使用nohup命令让服务在后台运行,即使关闭终端,服务也不会停止:
nohup uvicorn FaceRecognitionServer_fastapi:app --host 0.0.0.0 --port 12316 --workers 1 &
这样,服务将继续在后台运行,日志信息将被写入nohup.out文件中。
如果需要停止服务,可以使用ps命令找到服务的进程ID,然后使用kill命令终止它:
ps aux | grep uvicorn
kill <PID>
将<PID>替换为实际的进程ID。
也可以将人脸识别服务配置为系统服务,以便更方便地管理它
创建一个新的服务文件,例如/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
如果服务器启用了防火墙,请确保允许12316端口的流量:bash sudo ufw allow 12316 sudo ufw reload
现在,您可以通过浏览器或API客户端访问人脸识别服务:http://<your_server_ip>:12316
将<your_server_ip>替换为服务器的实际IP地址。
通过以上步骤,您已经成功手动部署了基于DLIB的人脸识别服务。您可以根据需要进一步扩展和优化该服务,以满足特定的应用需求。