第二章:开发环境与工具链——工欲善其事,必先利其器

说实话,我见过太多同学在算法上花了大把时间,最后却卡在环境配置上。有个学员曾经对着黑屏的终端折腾了整整两天,就为了装对CUDA版本。嗯,这章我们就来把这套东西捋清楚。

2.1 Python与Anaconda:你的算法实验室

Python现在几乎是视觉算法的默认语言了。为什么?说白了,生态太强了。你想想看,从数据读取到模型训练,再到部署上线,Python一条龙全包了。

我个人习惯用Anaconda来管理Python环境。为什么不用系统自带的Python?因为项目多了你就知道了——这个项目要Python 3.8,那个项目要3.10,还有的项目依赖包版本互相打架。Anaconda的虚拟环境就是干这个的。

安装步骤:

  1. 去Anaconda官网下载对应系统的安装包(建议选Python 3.9+版本)
  2. 安装时记得勾选"Add Anaconda to my PATH environment variable"
  3. 打开终端或Anaconda Prompt,输入 conda --version 验证

创建虚拟环境的命令很简单:

# 创建一个叫 cv_env 的环境,指定Python版本
conda create -n cv_env python=3.9

# 激活环境
conda activate cv_env

# 退出环境
conda deactivate

我在项目中遇到过最坑的事:有次在服务器上直接装了OpenCV到base环境,结果另一个项目需要旧版OpenCV,一升级把整个环境搞崩了。从那以后,每个项目我都单独建一个虚拟环境,互不干扰。

小技巧:conda list 查看当前环境装了哪些包,用 conda env export > environment.yaml 导出环境配置,方便复现。

2.2 OpenCV与Pillow:图像处理的双剑客

做视觉算法,图像读取和处理是基本功。OpenCV和Pillow是两大主流库,我两个都用,但场景不同。

OpenCV 功能强大,支持视频流、摄像头、各种图像变换。安装命令:

pip install opencv-python
pip install opencv-contrib-python  # 包含额外模块

Pillow 轻量简洁,适合做图像格式转换、缩略图生成。安装命令:

pip install Pillow
对比项 OpenCV Pillow
读取速度 快(C++底层) 中等
功能范围 图像处理、视频分析、机器学习 基础图像操作、格式转换
颜色通道 BGR(注意!) RGB
适用场景 实时处理、复杂算法 Web应用、简单处理

注意:OpenCV默认用BGR顺序,而Pillow用RGB。我曾经在项目里直接用OpenCV读图然后传给Pillow处理,结果颜色全乱了。记得用 cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 转换一下。

2.3 Jupyter Notebook与IDE:写代码的战场

我个人习惯分场景用不同的工具。探索阶段用Jupyter,开发阶段用IDE。

Jupyter Notebook 适合快速验证想法。安装:

pip install jupyter
jupyter notebook  # 启动

为什么我喜欢Jupyter?因为你可以一段一段地跑代码,中间插个Markdown写注释,还能直接看到图像输出。调试视觉算法时特别方便——读一张图,显示出来,看看效果,再继续下一步。

IDE推荐:

  • VS Code:轻量、插件丰富,我目前的主力工具
  • PyCharm:功能全面,适合大型项目
  • Spyder:Anaconda自带,界面类似MATLAB

嗯,这里要注意:Jupyter适合做实验记录,但正式项目还是用IDE。我见过有人把整个项目代码都写在Jupyter里,最后部署时到处报错——因为Jupyter的变量是全局的,很容易出现"在Notebook里能跑,换个环境就崩"的情况。

2.4 GPU环境搭建:让算法飞起来

做深度学习视觉算法,没有GPU基本等于骑自行车上高速。CUDA和cuDNN就是让GPU跑神经网络的驱动和加速库。

第一步:确认你的显卡

打开终端输入:

nvidia-smi

如果显示显卡信息,说明驱动已装。如果没有,先去NVIDIA官网下载对应驱动。

第二步:安装CUDA

CUDA版本要和你的显卡驱动匹配。我建议去NVIDIA官网查一下兼容性表。安装步骤:

  1. 下载CUDA Toolkit(推荐11.x或12.x,看你的框架要求)
  2. 运行安装程序,选择自定义安装
  3. 安装完成后,配置环境变量
# Linux下添加环境变量
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

第三步:安装cuDNN

cuDNN是NVIDIA的深度学习加速库。需要注册NVIDIA开发者账号才能下载。下载后解压,把文件复制到CUDA目录下:

# Linux示例
sudo cp cudnn-linux-x86_64-8.x.x.x_cuda11-archive/include/cudnn*.h /usr/local/cuda/include/
sudo cp cudnn-linux-x86_64-8.x.x.x_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

验证安装:

# 检查CUDA版本
nvcc --version

# 检查cuDNN版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

我曾经在配置GPU环境时踩过一个坑:CUDA版本和PyTorch版本不匹配。比如PyTorch 1.10需要CUDA 11.3,但我装了CUDA 12.0,结果训练时一直报错。后来我学乖了,先看框架的官方文档,再选CUDA版本。

避坑指南:如果你用conda,可以直接用 conda install pytorch torchvision cudatoolkit=11.3 -c pytorch 一键安装,conda会自动帮你配好CUDA。但要注意,这种方式装的CUDA是conda自带的,和系统CUDA不冲突。

嗯,环境配置这块确实琐碎,但这是每个视觉算法工程师的必修课。我建议你按照这个顺序一步步来:先装Anaconda,再装OpenCV和Pillow,然后配好Jupyter,最后搞定GPU。每一步都验证通过再往下走,别一口气全装完再调试——那样出了问题你都不知道是哪一步错了。

好了,环境搭好了,下一章我们就开始真正动手写代码了。