# 基于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 安装依赖项 首先,确保系统包是最新的: ```bash sudo apt-get update sudo apt-get upgrade ``` 安装必要的依赖项: ```bash 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`文件,内容如下: ```plaintext 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 ./** ``` 然后下载所需要的文件: ```bash 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 ``` 然后,回到项目根目录内,下载本项目的代码文件:: ```bash # 回到项目根目录 cd ../../ wget https://datacdn.data-it.tech/faceRec/face-dt/FaceRecognitionServer_fastapi.py ``` ### 3.5 运行服务 在项目根目录下,运行以下命令启动人脸识别服务: ```bash uvicorn FaceRecognitionServer_fastapi:app --host 0.0.0.0 --port 12316 --workers 1 ``` 去行以上命令,人脸识别服务就启动成功了,默认监听12316端口。 ### 3.6 以服务方式运行 可以使用`nohup`命令让服务在后台运行,即使关闭终端,服务也不会停止: ```bash nohup uvicorn FaceRecognitionServer_fastapi:app --host 0.0.0.0 --port 12316 --workers 1 & ``` 这样,服务将继续在后台运行,日志信息将被写入`nohup.out`文件中。 ### 3.7 停止服务 如果需要停止服务,可以使用`ps`命令找到服务的进程ID,然后使用`kill`命令终止它: ```bash ps aux | grep uvicorn kill ``` 将``替换为实际的进程ID。 ### 3.8 以services方式运行 也可以将人脸识别服务配置为系统服务,以便更方便地管理它 创建一个新的服务文件,例如`/etc/systemd/system/facerec.service`,内容如下: ```ini [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以识别新的服务文件: ```bash sudo systemctl daemon-reload ``` 启动服务: ```bash 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://:12316 ``` 将``替换为服务器的实际IP地址。 ## 4. 总结 通过以上步骤,您已经成功手动部署了基于DLIB的人脸识别服务。您可以根据需要进一步扩展和优化该服务,以满足特定的应用需求。