当前位置: 首页 > news >正文

从零到跑通YOLOv5:我的Ubuntu 20.04深度学习环境搭建全记录(含Anaconda虚拟环境管理)

从零构建YOLOv5实战环境:Ubuntu 20.04深度学习开发全栈指南

当第一次在终端看到YOLOv5实时识别视频中快速移动的物体时,那种震撼感至今难忘。作为计算机视觉领域最具影响力的目标检测框架之一,YOLOv5以其惊人的速度和精度重新定义了实时检测的边界。本文将完整记录如何在Ubuntu 20.04系统上,从裸机开始搭建支持CUDA加速的PyTorch环境,最终成功运行YOLOv5模型的全部过程。不同于简单的命令罗列,这里会重点分享环境配置中的"为什么"和"怎么办"——那些官方文档很少提及却至关重要的实战细节。

1. 基础系统准备:打造高效开发环境

刚安装好的Ubuntu 20.04就像一张白纸,我们需要先配置符合开发者习惯的工作环境。从个人经验来看,合理的基础设置能显著提升后续深度学习开发的效率。

终端增强是首要任务。默认的GNOME终端功能有限,建议安装Terminator:

sudo add-apt-repository ppa:gnome-terminator sudo apt-get update sudo apt install terminator

安装完成后,可以通过右键拆分窗口实现多面板操作,这对需要同时监控训练进程和系统资源的情况特别有用。

中文输入法选择Fcitx框架配合开源引擎:

sudo apt install fcitx-googlepinyin

安装后需要在系统设置的Language Support中将键盘输入法系统改为fcitx。遇到输入法切换问题,通常重启后即可解决。

开发工具链的安装也不容忽视:

sudo apt install build-essential cmake git curl wget

这些基础工具在后续安装CUDA、编译Python包时都是必需的。曾经因为漏装build-essential导致PyTorch编译失败,浪费了两小时排查时间。

2. Anaconda环境配置:Python生态的基石

Anaconda是管理Python环境的瑞士军刀,但直接从官网下载速度可能很慢。推荐使用清华镜像:

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.11-Linux-x86_64.sh bash Anaconda3-2021.11-Linux-x86_64.sh

安装完成后,立即配置conda国内镜像源加速后续操作:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge conda config --set show_channel_urls yes

创建专为YOLOv5的虚拟环境(Python 3.8在兼容性和新特性之间取得了良好平衡):

conda create -n yolo python=3.8 conda activate yolo

虚拟环境就像独立的沙箱,不同项目可以使用不同版本的库而不会相互干扰。曾经因为在一个环境里混用TensorFlow和PyTorch导致依赖冲突,最终不得不重建环境。

3. GPU驱动与CUDA工具链配置

深度学习训练离不开GPU加速,正确的驱动安装是关键。Ubuntu 20.04提供了相对简单的驱动安装方式:

  1. 打开"软件和更新"应用
  2. 切换到"附加驱动"标签页
  3. 选择专有驱动(推荐使用最新稳定版)
  4. 应用更改并重启

验证驱动安装:

nvidia-smi

正常情况应该显示GPU信息和驱动版本。如果遇到"NVIDIA-SMI has failed"错误,可能需要禁用Secure Boot或使用DKMS重新安装驱动:

sudo apt install dkms sudo dkms install -m nvidia -v 驱动版本号

CUDA工具链建议选择11.3版本,这是目前PyTorch生态兼容性最好的版本之一。从NVIDIA官网下载对应版本的runfile安装包:

wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run sudo sh cuda_11.3.0_465.19.01_linux.run

安装时注意取消勾选驱动安装(我们已经单独安装了驱动)。完成后将CUDA加入环境变量:

echo 'export PATH=/usr/local/cuda-11.3/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc

验证CUDA安装:

nvcc -V

cuDNN是深度神经网络加速库,需要单独安装。下载与CUDA 11.3兼容的cuDNN 8.2.1版本,解压后复制到CUDA目录:

sudo cp cuda/include/cudnn*.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

4. PyTorch环境定制安装

在虚拟环境中安装PyTorch时,指定版本和CUDA版本至关重要。以下是经过验证的稳定组合:

conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch

安装完成后,运行以下测试脚本验证GPU是否可用:

import torch print(torch.cuda.is_available()) # 应该输出True print(torch.cuda.device_count()) # 显示可用GPU数量 print(torch.version.cuda) # 显示PyTorch使用的CUDA版本

如果发现PyTorch安装成了CPU版本,需要完全卸载后重新安装:

conda uninstall pytorch torchvision torchaudio conda clean --all

常见问题排查:

  • 版本不匹配:确保PyTorch、CUDA、cuDNN版本兼容
  • 环境污染:总是在虚拟环境中安装
  • 驱动问题:nvidia-smi能正常运行是前提

5. YOLOv5实战部署与问题解决

克隆官方YOLOv5仓库并安装依赖:

git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt

首次运行时可能会遇到几个典型问题:

字体文件缺失错误:修改utils/plots.py文件,注释掉check_font()调用:

# if RANK in (-1, 0): # check_font() # 注释掉这行

类型转换错误:当出现"Float can't be cast to long int"错误时,需要修改utils/loss.py:

# 原始代码 anchors = self.anchors[i] # 修改为 anchors, shape = self.anchors[i], p[i].shape

CUDA内存不足:减小batch-size参数:

python train.py --batch-size 8 # 根据GPU内存调整

测试预训练模型:

python detect.py --weights yolov5s.pt --source data/images/bus.jpg

成功运行后会在runs/detect/exp目录下看到检测结果。

6. 性能优化与生产部署

当模型训练完成后,可以考虑使用TensorRT进行加速。以下是在Ubuntu 20.04上安装TensorRT 8.0的基本步骤:

  1. 从NVIDIA开发者网站下载对应CUDA 11.3的TensorRT tar包
  2. 解压并添加库路径到环境变量:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/TensorRT-8.0.1.6/lib
  1. 安装Python wheel包:
cd TensorRT-8.0.1.6/python pip install tensorrt-8.0.1.6-cp38-none-linux_x86_64.whl

模型转换示例:

import torch model = torch.load('yolov5s.pt') model.eval() example_input = torch.rand(1, 3, 640, 640) traced_script_module = torch.jit.trace(model, example_input) traced_script_module.save("yolov5s_jit.pt")

实际项目中,建议使用Docker容器化部署环境,确保开发和生产环境的一致性。一个典型的Dockerfile示例:

FROM nvidia/cuda:11.3.0-base RUN apt-get update && apt-get install -y python3-pip COPY requirements.txt . RUN pip install -r requirements.txt COPY . /app WORKDIR /app CMD ["python", "detect.py"]

环境搭建过程中最深刻的体会是:文档版本与实际软件版本的对应关系至关重要。某个深夜因为PyTorch 1.8与CUDA 11.1的微妙不兼容问题调试了三小时,最终发现官方论坛的一条不起眼的评论才解决问题。这也让我养成了在安装任何组件前先查阅版本兼容性矩阵的习惯。

http://www.jsqmd.com/news/765636/

相关文章:

  • 2026奇点大会闭门议程泄露:AISMM在急诊分诊中的实时决策链路图谱(含3家区域医联体部署拓扑)
  • 告别手动调参!Patchwork++实战:在ROS2 Foxy上实现自适应LiDAR地面分割
  • BepInEx终极指南:5分钟快速上手Unity游戏插件开发框架
  • Grasscutter Tools:原神私服玩家的终极桌面助手,告别复杂命令行
  • AI 英语伴学 APP的开发技术
  • 手把手教你用Nuclei批量检测天融信TOPSEC命令执行漏洞(附POC)
  • 免费降AIGC的软件真的存在吗?2026实测4款工具数据汇总! - 我要发一区
  • 用PyTorch和DeepLabV3-ResNet50,从零开始打造你的专属‘猫片’分割器(附完整代码与数据集)
  • 视觉语言动作模型(VLAM)在智能导航中的应用与优化
  • 绍兴市目前专业的AI推广服务商
  • 2025届最火的五大降AI率平台推荐榜单
  • 如何在macOS上实现鼠标悬停自动窗口聚焦:AutoRaise终极配置指南
  • 免费降ai率工具哪个好?嘎嘎降AI 1000字试用先看效果再付费! - 我要发一区
  • vue基于springboot的旅行指南攻略游记系统的设计与实现
  • FPGA实现FIR滤波器的架构设计与优化
  • Docker 27网络沙箱深度解析:如何用5步实现进程级网络隔离+3层流量审计?
  • 从太阳镜到光纤传感:偏振光到底怎么用?手把手带你用Python模拟几种偏振态的变化
  • 高效智能小说下载器:一键离线阅读全网100+小说网站
  • Node-RED OPC UA节点配置避坑指南:从Softing客户端测试到批量订阅优化
  • 三步实现FF14国际服中文汉化:FFXIVChnTextPatch完全指南
  • JSON 数据格式
  • vue基于springboot的梦想校园快递代取系统
  • 免费降AI率工具怎么用?6步免费试用判断适配度攻略详解! - 我要发一区
  • AISMM模型到底怎么用?:3步拆解4大维度、9个一级指标与8类典型误用场景
  • 老外用 AI 日发100+条TK带货视频,推特40万人围观,我梳理了完整SOP并用Clipcat复现这套爆款复刻工作流
  • 新手入门教程使用curl命令直连Taotoken体验大模型对话
  • RAGFlow 系列教程 第24课:数据连接器与外部数据源 -- 从 Connector 架构到 MCP 动态工具集成
  • [具身智能-594]:为什么说现有的视觉感知到实时运动控制的算法和模型,离真正的通用具身智能还有不少的距离?即使LV3/4自动驾驶对环境的感知到自动控制离通用人形具身智能还有不少的距离?
  • 比话降AI 500字免费试用怎么用?答辩急救5步操作教程! - 我要发一区
  • 新手入门:跟快马学网络基础,从零编写你的第一个telnet端口检测脚本