跳转到主要内容HOME
KOLIKO / 20262026年06月08日 / 5 min read

CRNN 从 CPU 训练切换到 NVIDIA GPU 训练

本文解决实验四车牌识别中CRNN模型CPU训练缓慢的问题。通过检查NVIDIA驱动、卸载CPU版PyTorch并安装CUDA版PyTorch,成功将训练从CPU切换到GPU,显著缩短训练时间,并支持更大规模样本和更多轮次的模型训练。

2026年06月08日5 min read
PythonPyTorchCUDA计算机视觉

CRNN 从 CPU 训练切换到 NVIDIA GPU 训练

image-20260608185949604

本文记录实验四车牌识别中,如何将 YOLO+CRNN 方案的 CRNN 训练从 CPU 版 PyTorch 切换到 NVIDIA GPU 训练。

1. 问题现象

当前 CRNN 训练命令:

1.venv\Scripts\python.exe src\exp4_plate_recognition\main.py --train-crnn --crnn-samples 60000 --crnn-epochs 20 --crnn-batch 64

如果日志显示:

1[CRNN] start training: train=60000, val=8000, epochs=20, batch=64, device=cpu

说明当前训练使用的是 CPU。对于 60000 张样本、20 个 epoch 的 CRNN 训练,CPU 会比较慢,可能长时间才完成一个 epoch。

2. 检查 NVIDIA 驱动和显卡

先运行:

1nvidia-smi

如果能看到类似信息,说明系统可以使用 NVIDIA GPU:

1NVIDIA-SMI 596.36 2CUDA Version: 13.2 3NVIDIA GeForce RTX 5060

注意:nvidia-smi 能看到 CUDA 版本,只代表显卡驱动支持 CUDA;Python 虚拟环境里的 PyTorch 仍可能是 CPU 版。

3. 检查当前 PyTorch 是否支持 CUDA

在项目根目录运行:

1.venv\Scripts\python.exe -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda)"

如果输出类似:

12.5.1+cpu 2False 3None

说明当前安装的是 CPU 版 PyTorch,CRNN 训练无法使用 GPU。

4. 卸载 CPU 版 PyTorch

在项目根目录运行:

1.venv\Scripts\python.exe -m pip uninstall -y torch torchvision torchaudio

5. 安装 CUDA 版 PyTorch

本机驱动显示 CUDA 13.2,可以优先安装 PyTorch 的 CUDA 13.0 版本:

1.venv\Scripts\python.exe -m pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu130

如果 cu130 安装失败,可以改用 CUDA 12.8 版本:

1.venv\Scripts\python.exe -m pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu128

6. 验证 GPU 是否可用

安装完成后运行:

1.venv\Scripts\python.exe -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'no cuda')"

期望输出类似:

12.10.0+cu130 2True 313.0 4NVIDIA GeForce RTX 5060

只要 torch.cuda.is_available()True,实验四 CRNN 训练代码就会自动使用 GPU。

7. 重新运行 CRNN 训练

建议先跑中等规模,确认速度和效果:

1.venv\Scripts\python.exe src\exp4_plate_recognition\main.py --train-crnn --crnn-samples 30000 --crnn-epochs 10 --crnn-batch 64

如果日志显示:

1[CRNN] start training: train=30000, val=6000, epochs=10, batch=64, device=cuda

说明已经切换到 GPU 训练。

确认效果后,可以跑更大规模:

1.venv\Scripts\python.exe src\exp4_plate_recognition\main.py --train-crnn --crnn-samples 60000 --crnn-epochs 20 --crnn-batch 64

8. 训练完成后的输出

训练完成后会生成:

1models\exp4_plate_crnn.pt 2outputs\exp4\crnn_metrics.json

其中:

  • models\exp4_plate_crnn.pt 是 CRNN 模型权重;
  • outputs\exp4\crnn_metrics.json 记录训练样本数、验证样本数、loss、整牌准确率和字符准确率。

之后在 Streamlit 实验四页面选择:

1识别方案:YOLO+CRNN

即可使用训练好的 CRNN 模型。

9. 常见问题

训练日志仍然显示 device=cpu

说明 PyTorch 仍未识别 CUDA。重新检查:

1.venv\Scripts\python.exe -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda)"

如果还是 False,说明安装的仍是 CPU 版,或者 CUDA 版 PyTorch 没有安装到当前 .venv

pip 安装 CUDA 版 PyTorch 很慢或失败

可以先升级 pip:

1.venv\Scripts\python.exe -m pip install --upgrade pip

然后重新安装 CUDA 版 PyTorch。

显存不足

如果训练时报显存不足,可以降低 batch size:

1.venv\Scripts\python.exe src\exp4_plate_recognition\main.py --train-crnn --crnn-samples 30000 --crnn-epochs 10 --crnn-batch 32

10. 报告可写结论

实验四新增的 YOLO+CRNN 方案计算量明显高于传统 二值化 + 字符分割 + SVM 方案。初始环境使用 CPU 版 PyTorch,训练大规模 CBLPRD 数据时速度较慢。通过 nvidia-smi 确认本机具备 NVIDIA GPU 后,将 PyTorch 切换为 CUDA 版本,使 CRNN 训练从 device=cpu 切换为 device=cuda,可显著缩短训练时间,并支持更大样本规模和更多 epoch 的模型训练。