第二章:环境搭建与工具链
说实话,环境搭建这事儿,看着简单,但坑是真不少。我见过太多同学在模型训练上花了两周,结果环境配了三天还没跑通第一个demo。这一章,我就把这几年的血泪经验掰开揉碎讲给你听。
2.1 Python环境配置
Python版本怎么选?我个人习惯用3.8或3.10。为什么?3.8最稳,几乎所有库都支持。3.10性能好一点,但有些老库可能报错。3.9?嗯,我建议跳过,它有点尴尬。
我的标准配置是这样的:
# 安装Miniconda(比Anaconda轻量多了)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 创建虚拟环境
conda create -n face_recognition python=3.8
conda activate face_recognition
# 升级pip
pip install --upgrade pip
为什么要用conda?说白了,它管理依赖比pip强太多了。尤其是后面装CUDA相关的包,conda能自动帮你解决版本冲突。我在项目中遇到过好几次pip装到一半报错,换成conda一次过。
2.2 CUDA/cuDNN安装
这部分是重头戏。你想想看,人脸识别模型动辄几百兆,没有GPU加速根本跑不动。CUDA就是NVIDIA给GPU开的"后门",让咱们能用显卡算矩阵。
先查你的显卡型号:
nvidia-smi
看到输出里的CUDA Version了吗?那就是你显卡支持的最高版本。我建议装低一个版本,比如显示12.4,你就装12.1。为什么?稳定!
| 显卡型号 | 推荐CUDA版本 | 对应cuDNN版本 |
|---|---|---|
| RTX 3090/4090 | 11.8 或 12.1 | 8.9.x |
| RTX 2080 Ti | 11.3 | 8.2.x |
| GTX 1080 Ti | 10.2 | 7.6.x |
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
cuDNN安装更简单,其实就是把几个文件复制到CUDA目录下:
# 下载cuDNN后
cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/include/cudnn*.h /usr/local/cuda/include/
cp cudnn-linux-x86_64-8.9.7.29_cuda12-archive/lib/libcudnn* /usr/local/cuda/lib64/
chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
2.3 PyTorch vs TensorFlow:怎么选?
这个问题我几乎每次讲课都会被问到。我的答案很直接:做人脸识别,首选PyTorch。
为什么?三个原因:
- 调试方便:PyTorch是动态图,你可以print中间结果。TensorFlow 2.x虽然也支持动态图,但总感觉有点别扭。
- 学术界主流:最新的ArcFace、CosFace这些论文,官方代码全是PyTorch写的。你用TensorFlow还得自己复现,何必呢?
- 部署生态好:PyTorch转ONNX、转TensorRT都很成熟。我最近做的项目就是从PyTorch训练,转ONNX,再用TensorRT推理,一条龙很顺畅。
当然,TensorFlow也有它的优势,比如TFLite在移动端部署确实强。但如果你刚入门,听我的,先学PyTorch。
# PyTorch安装(CUDA 12.1版本)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 验证安装
python -c "import torch; print(torch.cuda.is_available())"
# 输出True就对了
2.4 OpenCV与dlib安装
这两个库是人脸识别的"左右手"。OpenCV负责图像处理,dlib负责人脸检测和关键点定位。
OpenCV安装很简单:
pip install opencv-python opencv-contrib-python
这里有个坑:opencv-python是基础版,opencv-contrib-python包含了额外模块,比如人脸识别用的LBPH算法。我建议两个都装,省得到时候缺模块。
dlib就有点麻烦了。它依赖C++编译环境,Windows用户经常卡在这一步。我的建议是:
- Linux/Mac:直接pip install dlib,前提是你装了cmake和boost
- Windows:要么装Visual Studio Build Tools,要么直接用conda install -c conda-forge dlib
# 推荐安装方式
conda install -c conda-forge dlib
# 验证
python -c "import dlib; print(dlib.__version__)"
2.5 完整环境验证脚本
所有东西装完后,跑一下这个脚本,确保环境没问题:
import torch
import cv2
import dlib
import numpy as np
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")
print(f"OpenCV版本: {cv2.__version__}")
print(f"dlib版本: {dlib.__version__}")
# 测试GPU
if torch.cuda.is_available():
print(f"GPU型号: {torch.cuda.get_device_name(0)}")
print(f"显存: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.1f} GB")
# 测试OpenCV读取
img = np.zeros((100, 100, 3), dtype=np.uint8)
cv2.imwrite("test.jpg", img)
print("OpenCV读写测试通过")
# 测试dlib人脸检测
detector = dlib.get_frontal_face_detector()
print("dlib人脸检测器加载成功")
如果所有输出都正常,恭喜你,环境搭建完成了!
说实话,环境搭建是最枯燥但最重要的一步。我见过太多人在这上面浪费好几天,最后心态崩了。按照我上面的步骤来,半小时内肯定搞定。下一章我们就开始真正的人脸检测实战了,到时候你会感谢现在认真配环境的自己。