2. 开发环境搭建:Python环境配置、OpenCV安装、dlib库安装、face_recognition库安装、GPU环境配置(CUDA/cuDNN)

说实话,环境搭建这事儿,看着简单,但坑是真不少。我见过太多同学代码写好了,结果卡在环境上,一卡就是半天。所以这一章,咱们把每个步骤都捋清楚。

先看整体流程,心里有个谱:

人脸识别开发环境搭建流程 Python 3.8+ OpenCV dlib face_recognition CUDA Toolkit cuDNN 💡 有 GPU 就配 CUDA + cuDNN,推理速度能快 5-10 倍 没有 GPU 也能跑,只是慢一些,不影响学习

2.1 Python 环境配置

我个人习惯用 Anaconda 来管理 Python 环境。为什么?因为项目多了你就知道,依赖冲突有多烦人。Anaconda 能帮你隔离环境,一个项目一个环境,互不干扰。

推荐版本:Python 3.8 或 3.9。别追新,3.10 以上有些库还没完全适配。

安装步骤很简单:

  1. 去 Anaconda 官网下载对应系统的安装包
  2. 一路默认安装,记得勾选「Add Anaconda to my PATH」
  3. 打开终端(Windows 用 Anaconda Prompt),验证安装:
conda --version
python --version

然后创建一个专用环境:

conda create -n face_recognition python=3.8
conda activate face_recognition

嗯,这里要注意:环境名别用中文,有些库对路径里的中文支持不好。我之前有个学生用了中文名,结果 dlib 编译死活过不去,折腾了两小时才发现是这个问题。

2.2 OpenCV 安装

OpenCV 是人脸识别的眼睛。没有它,你连图片都读不进来。

安装方式有两种:

方式 命令 说明
pip 安装(推荐) pip install opencv-python 包含核心模块,够用
完整版 pip install opencv-contrib-python 包含扩展模块,功能更全

我个人建议先装核心版,等后面需要 SIFT、SURF 这些特征提取时再换完整版。别一开始就装个大包,没必要。

验证安装:

python -c "import cv2; print(cv2.__version__)"

如果输出了版本号,比如 4.8.0,那就成了。

常见坑:Windows 用户如果遇到 DLL 加载失败,多半是 Visual C++ 运行库没装。去微软官网下载「Visual C++ Redistributable」装一下就好。

2.3 dlib 库安装

dlib 这个库,怎么说呢,又爱又恨。爱的是它的人脸关键点检测确实准,恨的是它编译起来真能折腾人。

先试试最简单的安装方式:

pip install dlib

如果顺利,几秒钟就装好了。但如果你用的是 Windows,或者 Python 版本比较新,很可能会报错——因为 pip 上没有预编译的 wheel 包。

这时候怎么办?我教你两招:

  • 方法一:用 conda 装 conda install -c conda-forge dlib,conda 会帮你处理依赖
  • 方法二:从源码编译,但需要先装 CMake 和 Visual Studio Build Tools

我曾经在 Windows 上从源码编译 dlib,等了整整 20 分钟。那会儿我还以为是电脑死机了……后来发现它就是在老老实实地编译。

验证安装:

python -c "import dlib; print(dlib.__version__)"
小技巧:如果你实在装不上 dlib,可以用 pip install face_recognition 时让它自动装。face_recognition 依赖 dlib,安装过程会帮你处理。

2.4 face_recognition 库安装

这个库是 dlib 的上层封装,把很多复杂操作简化成了几行代码。说白了,它就是让你不用关心底层算法细节,直接调 API 就能做人脸识别。

安装命令:

pip install face_recognition

它会自动安装 dlib 和 numpy 等依赖。如果 dlib 已经装好了,这一步会很快。

验证安装:

python -c "import face_recognition; print('安装成功')"

我们来写个最简单的测试代码,看看能不能检测到人脸:

import face_recognition

# 加载一张图片
image = face_recognition.load_image_file("test.jpg")

# 检测人脸位置
face_locations = face_recognition.face_locations(image)

print(f"检测到 {len(face_locations)} 张人脸")

如果输出 检测到 1 张人脸 或者更多,那就说明环境完全 OK 了。

核心知识点:face_recognition 库底层用的是 dlib 的 HOG + 线性 SVM 检测器,准确率在 95% 以上。后面我们会讲到更深的原理。

2.5 GPU 环境配置(CUDA / cuDNN)

如果你有 NVIDIA 显卡,那一定要配 GPU 环境。为什么?我举个例子:用 CPU 处理一张 1080p 图片的人脸检测,大概需要 0.3 秒;用 GPU 的话,0.05 秒就搞定了。你想想看,要是做实时视频流,这差距就是能不能用的区别。

配置步骤:

  1. 检查显卡驱动:打开终端,输入 nvidia-smi,看有没有输出
  2. 安装 CUDA Toolkit:去 NVIDIA 官网下载对应版本,我推荐 CUDA 11.8 或 12.1
  3. 安装 cuDNN:需要注册 NVIDIA 开发者账号,下载后把文件复制到 CUDA 安装目录
  4. 配置环境变量:把 CUDA 的 bin 和 lib 路径加到 PATH 里

验证 CUDA 是否装好:

nvcc --version

验证 cuDNN 是否装好:

python -c "import torch; print(torch.cuda.is_available())"

如果输出 True,那就说明 GPU 环境配好了。

版本匹配很重要:CUDA、cuDNN、PyTorch 三者版本必须匹配。我见过有人装了 CUDA 12.0 却用 PyTorch 1.12,结果 GPU 根本用不了。去 PyTorch 官网看版本对应表,照着来。

最后,把 GPU 版本的 dlib 也装一下:

pip install dlib-gpu

或者从源码编译时加上 -DUSE_AVX_INSTRUCTIONS=ON -DDLIB_USE_CUDA=ON 选项。

我的建议:如果你只是学习,没有 GPU 也能跑通所有代码。但如果你要做产品,或者处理大量数据,那 GPU 就是必需品。别省这个钱。