从零到一:在Ubuntu 20.04上源码编译部署DAMOYOLO-S全记录

从零到一:在Ubuntu 20.04上源码编译部署DAMOYOLO-S全记录 从零到一在Ubuntu 20.04上源码编译部署DAMOYOLO-S全记录最近有不少朋友在尝试部署一些新的目标检测模型比如DAMOYOLO-S但往往卡在了第一步——环境搭建上。尤其是在Ubuntu系统上从驱动到框架再到源码编译每一步都可能遇到各种依赖和版本问题。网上的教程要么太零散要么版本对不上照着做很容易出错。今天我就把自己在Ubuntu 20.04上从一张白纸开始成功编译部署DAMOYOLO-S的完整过程记录下来。这不仅仅是一份操作清单更是一个“排雷”指南我会把每一步的原理、可能遇到的坑以及解决办法都讲清楚。无论你是刚接触Linux的新手还是有一定经验但被环境问题困扰的开发者跟着这篇指南走都能少走很多弯路。我们的目标很明确在一台干净的Ubuntu 20.04机器上搭建起一个能跑DAMOYOLO-S的完整深度学习环境并成功编译运行其源码。1. 万事开头难准备你的Ubuntu 20.04系统工欲善其事必先利其器。一个稳定、干净的系统是后续所有工作的基石。如果你已经有一个现成的Ubuntu 20.04系统可以跳过这一步。但如果你是全新安装或者想在虚拟机上尝试这部分内容能帮你打好基础。1.1 获取与安装Ubuntu 20.04首先你需要从Ubuntu官网下载20.04 LTS版本的镜像文件。LTS代表长期支持意味着这个版本会更稳定社区支持也更久非常适合用来做开发环境。下载完成后你可以选择多种安装方式实体机安装这是性能最好的方式。你需要准备一个U盘使用RufusWindows或dd命令Linux/Mac制作成启动盘然后从U盘启动电脑进行安装。虚拟机安装对于学习和测试来说非常方便。你可以使用VMware Workstation或VirtualBox。在创建虚拟机时建议分配至少4核CPU、8GB内存和50GB的硬盘空间这样跑起深度学习代码来会更顺畅。安装过程基本上是图形化点击下一步但有几个关键点需要注意分区如果你是新手可以选择“清除整个磁盘并安装Ubuntu”让安装程序自动分区。如果想自己控制可以手动分区通常需要/根目录30GB以上、swap交换分区大小约等于内存和/home用户目录剩余空间。用户名和密码记住你设置的密码后续很多操作都需要用到。安装时下载更新这个选项可以勾选但如果你网络不好也可以先不选等系统装好后再更新。安装完成后第一件事就是更新系统软件包。打开终端快捷键CtrlAltT输入以下命令sudo apt update sudo apt upgrade -ysudo是获取管理员权限apt update是更新软件源列表apt upgrade是升级所有已安装的软件包。-y参数表示自动回答“yes”省去确认步骤。1.2 安装必要的编译工具和依赖深度学习框架和模型的源码编译离不开一系列基础开发工具。我们先一次性把它们装好。sudo apt install -y build-essential cmake git wget curl pkg-config sudo apt install -y libopencv-dev python3-opencv sudo apt install -y libssl-dev libffi-dev简单解释一下这些包是干什么的build-essential包含了GCC编译器、make等核心编译工具。cmake一个跨平台的编译配置工具很多C项目用它来管理编译过程。git版本控制工具用来下载源码。wget,curl命令行下载工具。pkg-config帮助编译器找到库文件位置的工具。libopencv-dev,python3-opencvOpenCV计算机视觉库的开发版和Python绑定。libssl-dev,libffi-dev一些加密和外部函数接口的开发库Python环境可能会用到。安装完这些你的系统就有了编译大多数开源项目的基础能力。2. 搭建深度学习的引擎NVIDIA驱动与CUDA这是整个过程中最关键也最容易出问题的一步。我们的目标是让系统识别并正确使用NVIDIA显卡来进行加速计算。2.1 安装NVIDIA显卡驱动Ubuntu系统自带的“开源驱动”nouveau无法用于CUDA计算我们必须安装NVIDIA官方闭源驱动。方法一通过系统仓库安装推荐给新手这种方法最简单适合大多数常见显卡。# 首先检查你的显卡型号和推荐的驱动版本 ubuntu-drivers devices # 通常会列出几个可选的驱动版本选择带有“recommended”标记的进行安装 sudo apt install nvidia-driver-525 -y # 这里的525是示例版本号请替换为推荐版本安装完成后必须重启电脑才能使驱动生效。sudo reboot重启后在终端输入nvidia-smi。如果看到类似下面的显卡信息表格而不是“command not found”恭喜你驱动安装成功了这个命令也是你日后查看显卡状态、显存使用情况的利器。方法二从NVIDIA官网下载安装适合需要特定版本或最新版本如果仓库里的版本太旧或者你需要某个特定版本可以去NVIDIA官网下载.run文件手动安装。这个过程稍微复杂一点需要先禁用系统自带的nouveau驱动进入文本模式安装这里就不展开讲了网上有很详细的教程。2.2 安装CUDA ToolkitCUDA是NVIDIA推出的并行计算平台和编程模型PyTorch等框架依赖它来调用GPU进行计算。我们选择安装CUDA 11.7这是一个比较稳定且被广泛支持的版本。前往NVIDIA CUDA Toolkit存档页面找到11.7.0的Linux版本安装指令。对于Ubuntu 20.04你可以用以下命令安装wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run sudo sh cuda_11.7.0_515.43.04_linux.run运行安装程序后会出现一个文本界面。这里有个重要注意事项在安装选项页面看到“Driver”那一项时记得按空格键取消勾选因为我们之前已经装好驱动了这里再装一次可能会引起冲突。只安装CUDA Toolkit本身即可。安装完成后需要将CUDA添加到系统环境变量中这样终端才能找到它的命令和库。编辑你的shell配置文件如果你用的是bash通常是~/.bashrcnano ~/.bashrc在文件末尾添加以下几行export PATH/usr/local/cuda-11.7/bin${PATH::${PATH}} export LD_LIBRARY_PATH/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}保存退出在nano编辑器里是按CtrlX然后按Y确认再按回车。让配置立即生效source ~/.bashrc最后验证CUDA是否安装成功nvcc -V这个命令会输出CUDA编译器的版本信息如果显示是11.7那就没问题了。2.3 安装cuDNNcuDNN是NVIDIA深度神经网络加速库可以理解为CUDA的“补强包”专门优化了深度学习中的卷积等操作。你需要先在NVIDIA官网注册一个账号免费然后下载对应CUDA 11.7的cuDNN版本比如8.5.x。下载下来通常是一个.tgz压缩包。安装cuDNN其实就是把它的头文件和库文件复制到CUDA的安装目录里# 假设你下载的压缩包叫 cudnn-linux-x86_64-8.x.x.x_cuda11-archive.tar.xz tar -xvf cudnn-linux-x86_64-8.x.x.x_cuda11-archive.tar.xz sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda-11.7/include/ sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda-11.7/lib64/ sudo chmod ar /usr/local/cuda-11.7/include/cudnn*.h /usr/local/cuda-11.7/lib64/libcudnn*这样深度学习引擎的三件套驱动、CUDA、cuDNN就全部就位了。3. 创建专属的Python工作环境系统自带的Python环境最好不要乱动。我们使用Conda来创建一个独立、干净的Python环境专门用于这个项目。这样不同项目之间的库版本就不会互相打架了。3.1 安装MinicondaMiniconda是Anaconda的轻量版只包含Conda和Python没有预装那么多科学计算包更简洁。wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh安装脚本运行后一直按回车阅读许可协议输入yes同意然后选择安装路径直接回车用默认路径就行。最后脚本会问你是否要初始化Conda选择yes。这样每次打开终端Conda的基础环境就会自动激活。关闭当前终端再打开一个新的你会发现命令行前面多了一个(base)这表示你已经在Conda的base环境里了。3.2 为DAMOYOLO-S创建独立环境我们新建一个叫damoyolo的环境并指定Python版本为3.8这是一个兼容性很好的版本。conda create -n damoyolo python3.8 -y conda activate damoyolo激活后命令行提示符会从(base)变成(damoyolo)表示你已经在这个新环境里了接下来安装的所有包都只属于这个环境。3.3 安装PyTorch及其依赖这是核心的一步。我们需要安装与CUDA 11.7匹配的PyTorch版本。前往PyTorch官网根据你的配置Linux、Conda、CUDA 11.7生成安装命令。对于PyTorch 1.13版本命令可能如下conda install pytorch1.13.1 torchvision0.14.1 torchaudio0.13.1 pytorch-cuda11.7 -c pytorch -c nvidia这个命令会安装PyTorch、TorchVision和TorchAudio并且确保它们都支持CUDA 11.7。安装过程可能需要一点时间。安装完成后强烈建议写一个简单的Python脚本来验证GPU是否可用# test_gpu.py import torch print(fPyTorch version: {torch.__version__}) print(fCUDA available: {torch.cuda.is_available()}) if torch.cuda.is_available(): print(fCUDA version: {torch.version.cuda}) print(fGPU device: {torch.cuda.get_device_name(0)})在终端里运行python test_gpu.py。如果一切正常你会看到CUDA可用并且打印出你的显卡型号。看到这个心里就踏实一大半了。最后在这个环境里安装一些常用的工具包pip install opencv-python pillow matplotlib tqdm scipy4. 攻克核心堡垒编译DAMOYOLO-S环境终于准备好了现在可以开始对付主角了。4.1 获取源码与准备首先把DAMOYOLO-S的代码仓库克隆到本地。git clone https://github.com/IDEA-Research/damoyolo.git cd damoyolo仔细阅读项目根目录下的README.md和requirements.txt文件。README会告诉你项目的概况和基本用法requirements.txt则列出了所需的Python依赖。我们可以用pip来安装它们pip install -r requirements.txt很多视觉模型会用到一些C扩展比如Deformable Convolution, NMS等来提升速度这些需要单独编译。DAMOYOLO-S很可能也包含这样的模块。4.2 编译C扩展关键步骤这是源码编译部署中最具挑战性的一步版本冲突、依赖缺失等问题经常在这里爆发。通常这类项目会提供一个setup.py文件或者一个Makefile来指导编译。你需要找到编译指令在README或代码目录里寻找类似python setup.py build_ext --inplace或make的说明。处理依赖编译过程可能会报错提示缺少某个头文件.h或库文件.so。例如常见的错误是找不到Python.h这通常是因为缺少Python开发包sudo apt install python3-dev如果提示CUDA相关错误请再次确认你的CUDA_HOME环境变量是否正确指向了CUDA 11.7的安装路径。可以在终端输入echo $CUDA_HOME查看如果没有设置可以像之前设置PATH一样在~/.bashrc中添加export CUDA_HOME/usr/local/cuda-11.7。耐心排错将终端报错信息完整地复制到搜索引擎里大概率能找到解决方案。常见的坑包括GCC编译器版本过高或过低、CUDA架构不匹配通过设置TORCH_CUDA_ARCH_LIST环境变量指定例如export TORCH_CUDA_ARCH_LIST7.5对应RTX 20系列等。假设你最终成功运行了编译命令并且没有报错那么在项目目录下应该会生成一些.soLinux动态库文件这标志着编译成功。4.3 下载预训练权重并试运行模型训练好的参数叫做权重文件.pth。项目通常会在README或模型库如Model Zoo中提供预训练权重的下载链接。假设你下载了一个叫damoyolo_s.pth的权重文件把它放在项目里一个合适的目录比如weights/。然后找一个简单的测试脚本或者Demo来验证整个流程是否跑通。这可能是一个推理脚本tools/demo.py或者一个简单的测试文件。运行它并指定你下载的权重文件和一张测试图片python tools/demo.py --config config/damoyolo_s.py --checkpoint weights/damoyolo_s.pth --input_image path/to/your/test.jpg --output_dir outputs/如果一切顺利你会在outputs/目录下看到一张画了检测框的图片。看到这个结果就意味着你从零开始成功搭建了系统配置了环境编译了代码并运行了一个先进的目标检测模型。这个过程虽然繁琐但走通一遍你对深度学习项目部署的理解会上一个大台阶。5. 总结回顾这一趟从零到一的旅程我们一步步走过了系统安装、驱动配置、CUDA环境搭建、Python虚拟环境管理直到最后攻克源码编译。其中最花时间的往往不是按照步骤操作而是解决那些突如其来的版本冲突和依赖错误。我的建议是一定要理解每一步在做什么而不仅仅是复制命令。这样当遇到问题时你才能有的放矢地去搜索和排查。这次我们搭建的环境Ubuntu 20.04 CUDA 11.7 PyTorch 1.13是一个比较经典的组合稳定性有保障。成功运行DAMOYOLO-S之后你可以在这个坚实的基础上去尝试更多的模型和任务或者用自己的数据去微调模型探索深度学习的更多可能。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。