dlib 人脸检测器安装:conda / pip / 源码编译三条路
dlib 是什么,要不要装
dlib 是一个 C++ 写的机器学习库,CodeFormer 用它做人脸检测和 5 点 landmark 对齐:
- 可选:CodeFormer 默认用 YOLOv5-face(通过 facexlib),不装 dlib 也能跑
- 推荐场景:需要更精确的 landmark 对齐时、批量处理预先裁好的人脸时
如果用 conda install -c conda-forge dlib 一次成功,那就装;如果折腾半小时还失败,放弃 dlib 就行,不影响主要功能。
方案一:Conda(最推荐)
conda activate codeformer
conda install -c conda-forge dlib
Conda-forge 提供了预编译好的 wheel,Linux/Mac/Windows 都有。正常情况下这行命令 5 分钟内装好,不需要 CMake 或 C++ 编译器。
如果 conda-forge 没有你的 Python 版本的包,跳到方案二或三。
方案二:Pip 预编译 wheel
pip install dlib
但 Python 3.8+ 在 Windows 上经常没有预编译 wheel,pip 会尝试源码编译——而 dlib 的源码编译在 Windows 上是出了名的难。
解决:找第三方预编译 wheel
去 [Gohlke 的 dlib wheel 集合](<URL> 下载对应你 Python 版本和位数的 .whl 文件(注意这个网站可能挂了),或者去 GitHub 找社区维护的 wheel。
下载后本地安装:
pip install dlib-19.24.0-cp38-cp38-win_amd64.whl
方案三:源码编译(最后手段)
如果你一定想从源码编译:
Windows 前置条件
- 安装 CMake ≥ 3.18(cmake.org/download)
- 安装 Visual Studio Build Tools(只需 C++ 桌面开发组件)
- 安装 boost(用 vcpkg 或 conda)
# 用 vcpkg 装 boost
git clone <仓库地址>
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg install boost
.\vcpkg integrate install
编译
# 在 codeformer 环境里
git clone -b v19.24.0 <URL>
cd dlib
python setup.py install --set DLIB_USE_CUDA=OFF
# DLIB_USE_CUDA=OFF 关 dlib 的 CUDA,省得和 PyTorch CUDA 冲突
常见编译错误
| 错误 | 原因 | 修复 |
|---|---|---|
CMake was unable to find a build program | 没装 VS Build Tools | 装 Visual Studio Build Tools,选 C++ 桌面开发 |
boost not found | vcpkg 没 integrate | vcpkg integrate install 后重开 PowerShell |
| 内存不足 | 编译 dlib 吃内存 | 关闭其他程序,或只编译 dlib 的 Python 绑定(cd dlib/python_examples 再编译) |
error C2471 | VS 版本太旧 | 用 VS 2019 或 VS 2022 |
安装验证
import dlib
print(f"dlib version: {dlib.__version__}")
detector = dlib.get_frontal_face_detector()
print("dlib 人脸检测器初始化成功")
放弃 dlib 的替代方案
如果 dlib 死活装不上,CodeFormer 默认的 YOLOv5-face 检测器(通过 facexlib)已经够好了。它的人脸检测精度不输 dlib,速度还更快。
只是 landmark 对齐的精度,dlib 的 68 点 landmark 比 YOLOv5 的 5 点更精细——对于大多数人脸修复场景,5 点足够。