MogFace WebUI 部署教程(GPU 版)
MogFace 模型在 CVPR 2022 上表现优异,以其出色的侧脸、遮挡和暗光检测能力而闻名。本文介绍完整的 GPU 版部署流程,从零开始构建专业级人脸检测 Web 服务。
1. 部署前准备:环境检查与资源确认
1.1 硬件与系统要求
最低配置(能跑起来):
在 Linux 环境下部署 MogFace WebUI 人脸检测服务的完整流程。主要步骤包括安装 NVIDIA 显卡驱动、配置 CUDA Toolkit 和 cuDNN 深度学习环境、以及使用 Docker 拉取并运行镜像。通过验证 GPU 识别、测试 API 接口及编写测试脚本,确保服务正常运行。该方案适用于安全监控、照片分类等场景。
MogFace 模型在 CVPR 2022 上表现优异,以其出色的侧脸、遮挡和暗光检测能力而闻名。本文介绍完整的 GPU 版部署流程,从零开始构建专业级人脸检测 Web 服务。
最低配置(能跑起来):
推荐配置(流畅运行):
若使用 Windows 系统,建议通过 WSL2 安装 Ubuntu 进行部署。
# 1. 检查 GPU 是否存在
lspci | grep -i nvidia
# 2. 检查系统架构
uname -m
# 3. 检查 Python 版本
python3 --version
# 4. 检查 pip 是否安装
pip3 --version
sudo apt update
sudo apt install -y ubuntu-drivers-common
ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
# 或者指定版本
sudo apt install -y nvidia-driver-535
重启并验证:
sudo reboot
nvidia-smi
# 禁用 nouveau 驱动
sudo bash -c "echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo update-initramfs -u
sudo systemctl set-default multi-user.target
sudo reboot
# 下载驱动后执行
chmod +x NVIDIA-Linux-x86_64-*.run
sudo ./NVIDIA-Linux-x86_64-*.run
sudo systemctl set-default graphical.target
sudo reboot
推荐使用 CUDA 11.8:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-11-8
添加环境变量:
echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
验证:nvcc --version
# 假设已下载 deb 包
sudo dpkg -i cudnn-local-repo-ubuntu2204-*.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install -y libcudnn8 libcudnn8-dev
python3 -m venv mogface_env
source mogface_env/bin/activate
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
验证:
import torch
print(f'CUDA 可用:{torch.cuda.is_available()}')
# 安装 Docker
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
newgrp docker
# 安装 NVIDIA Container Toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
docker pull your-registry/mogface-webui:gpu
docker run -d \
--name mogface-webui \
--gpus all \
-p 7860:7860 \
-p 8080:8080 \
-v /path/to/your/data:/app/data \
your-registry/mogface-webui:gpu
浏览器访问 http://你的服务器 IP:7860 或 http://localhost:7860。
curl http://localhost:8080/health
curl -X POST -F "[email protected]" http://localhost:8080/detect
import requests
import cv2
import matplotlib.pyplot as plt
def test_face_detection(image_path):
url = "http://localhost:8080/detect"
with open(image_path, 'rb') as f:
response = requests.post(url, files={'image': f})
result = response.json()
if result['success']:
print(f"检测到 {len(result['data']['faces'])} 个人脸")
import torch
torch.cuda.set_per_process_memory_fraction(0.8)
torch.cuda.empty_cache()
使用 concurrent.futures.ThreadPoolExecutor 并行处理图片请求。
version: '3.8'
services:
mogface-webui:
image: your-registry/mogface-webui:gpu
container_name: mogface-webui
restart: unless-stopped
ports:
- "7860:7860"
- "8080:8080"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
启动:docker-compose up -d
成功部署需完成三个步骤:
常见问题排查:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online