1. 项目概述:为什么从YOLOv5开始?
如果你对计算机视觉感兴趣,想亲手体验一下让机器“看见”并识别物体的魅力,那么目标检测绝对是一个绝佳的起点。而在众多目标检测模型中,YOLOv5(You Only Look Once version 5)以其出色的平衡性——速度快、精度高、生态友好——成为了无数新手入门和工业部署的首选。我见过太多朋友,包括刚接触编程的同学,被“环境配置”这道门槛劝退,卡在各种各样的报错里,最终热情被消磨殆尽。这太可惜了。
所以,这篇内容就是为你准备的。它不假设你有任何深度学习或Python基础,我们将从零开始,一步一步,手把手地搭建一个能跑通YOLOv5目标检测的环境。我会把每一步操作背后的逻辑、可能遇到的坑以及我踩过之后总结的“避坑指南”都讲清楚。我们的目标很简单:让你在完成所有步骤后,能顺利运行YOLOv5的官方示例,看到摄像头或图片中的物体被一个个框出来并打上标签。这不仅仅是配置一个环境,更是为你打开一扇通往AI视觉世界的大门。相信我,当你第一次看到程序准确地识别出你面前的“人”或“键盘”时,那种成就感是无与伦比的。
2. 环境配置前的核心思路与工具选型
在动手敲命令之前,我们先花几分钟理清思路。深度学习环境配置之所以让人头疼,核心在于“依赖”和“版本”。Python本身、各种功能包(库)、深度学习框架(PyTorch)、以及CUDA(用于GPU加速)之间,存在着严格的版本匹配关系。一步错,步步错。我们的策略是:自上而下,锁定版本,隔离环境。
2.1 为什么选择Anaconda作为环境管理器?
对于小白来说,最怕的就是把系统自带的Python环境搞乱,导致其他项目无法运行。Anaconda(或者更轻量化的Miniconda)的核心价值就在于“环境隔离”。你可以把它想象成在电脑里创建多个独立的“小房间”(虚拟环境),每个房间里有自己的一套Python和工具包。你在YOLOv5的“房间”里随便折腾,安装任何版本,都不会影响到其他“房间”或系统本身。项目做完,直接把“房间”删除,系统依然干净如初。这是保证实验可复现、管理多项目的基础,也是专业开发者的标配习惯。
2.2 PyTorch与CUDA版本匹配:成败的关键
YOLOv5是基于PyTorch框架构建的。PyTorch是一个强大的深度学习框架,而CUDA是NVIDIA显卡的并行计算平台,能让PyTorch的运算速度在GPU上提升数十倍。这里有个关键点:你必须根据自己电脑的显卡型号和已安装的显卡驱动,来确定可以安装的CUDA版本,进而确定PyTorch版本。
这个链条是:显卡硬件 -> 显卡驱动版本 -> 支持的最高CUDA版本 -> 与之匹配的PyTorch版本。很多人在这一步直接去PyTorch官网复制安装命令,结果因为CUDA版本不匹配导致安装失败或无法调用GPU。别担心,下面我们会有一个详细的步骤来查清自己的“家底”。
2.3 代码仓库:为什么是Ultralytics的官方版本?
YOLOv5的原始作者是Ultralytics公司,他们维护的GitHub仓库是最权威、更新最及时、社区最活跃的版本。我们将直接从官方仓库克隆代码。这保证了我们获得的是经过充分测试、文档齐全、并且拥有海量预训练模型(可以直接用来检测人、车、动物等常见物体)的版本。使用官方源能避免很多因代码修改导致的诡异问题。
3. 超详细实操步骤:从零到一的完整过程
接下来,我们进入实战环节。请严格按照顺序操作,我会解释每一步在做什么。
3.1 第一步:检查你的“装备”——显卡与驱动
首先,确认你的电脑是否有NVIDIA独立显卡,并查看其驱动支持的CUDA版本。
- 打开命令行(Windows下按
Win+R,输入cmd回车;macOS/Linux打开终端)。 - 输入以下命令并回车:
nvidia-smi - 如果这个命令能运行,你会看到一个表格。找到右上角的“CUDA Version”一项。例如,显示“CUDA Version: 12.1”,这说明你的显卡驱动最高支持CUDA 12.1。记下这个数字(比如12.1)。
- 如果提示“
nvidia-smi不是内部或外部命令”:这说明你的系统没有安装NVIDIA显卡驱动,或者没有独立显卡。如果是后者,那么你只能使用CPU模式运行YOLOv5,速度会慢很多,但流程依然可以走通。如果是前者,你需要去NVIDIA官网下载并安装适合你显卡型号的驱动。
- 如果提示“
注意:
nvidia-smi显示的CUDA版本是你的驱动支持的最高版本,不代表你已经安装了该版本的CUDA Toolkit(我们下一步才会安装)。你可以安装等于或低于此版本的CUDA。
3.2 第二步:安装Anaconda/Miniconda
- 访问Anaconda官网或Miniconda镜像站。对于新手,我推荐安装Anaconda,因为它自带了很多常用的科学计算包和一个图形化管理界面,省去不少麻烦。
- 下载对应你操作系统(Windows/macOS/Linux)的安装包。Windows用户下载.exe文件,macOS用户下载.pkg文件。
- 安装过程基本一路“Next”即可,但请注意这两个关键点:
- 安装路径:不要安装在中文或带有空格的路径下!例如,
C:\Software\Anaconda3是好的,C:\用户\我的软件\Anaconda是坏的。 - 添加环境变量:安装程序通常会询问“Add Anaconda to my PATH environment variable”。一定要勾选上!这能让你在任意命令行窗口中使用conda命令。如果安装时忘了,后续需要手动添加,对新手比较麻烦。
- 安装路径:不要安装在中文或带有空格的路径下!例如,
安装完成后,重新打开命令行窗口,输入conda --version,如果显示出版本号(如conda 24.5.0),说明安装成功。
3.3 第三步:创建专属的虚拟环境
我们将创建一个名为yolov5的Python虚拟环境,并指定Python版本为3.8。Python 3.8是一个在深度学习领域兼容性极广的版本。
在命令行中输入:
conda create -n yolov5 python=3.8回车后,conda会解析依赖并提示你将安装一些包,输入y确认。等待几分钟,环境就创建好了。
激活环境:
- Windows:
conda activate yolov5 - macOS/Linux:
conda activate yolov5
激活后,你会发现命令行的提示符前面变成了(yolov5),这表示你已经进入了这个独立的“小房间”。之后所有操作都在这个环境下进行。
3.4 第四步:安装匹配的PyTorch和Torchvision
这是最关键也最容易出错的一步。我们不使用conda自带的PyTorch,而是去PyTorch官网获取最准确的安装命令。
- 打开浏览器,访问 PyTorch 官网。
- 找到“Get Started”部分的安装配置器。你需要根据你的情况选择:
- PyTorch Build: 选择Stable (稳定版)。
- Your OS: 选择你的操作系统。
- Package: 选择Conda(因为我们用conda管理环境)。
- Language: 选择Python。
- Compute Platform: 这里就是选择CUDA版本的地方。
- 如果你有显卡,且
nvidia-smi显示的CUDA版本 >= 11.7,这里可以选择CUDA 11.7或CUDA 11.8。我推荐选择CUDA 11.8,因为它被广泛支持且稳定。 - 如果你没有显卡,或者想先确保环境能通,选择CPU。后续可以再安装GPU版本。
- 如果你有显卡,且
- 选择完毕后,官网会生成一行命令,例如:
重要:复制这行命令,回到你的命令行(确保已激活conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidiayolov5环境),粘贴并运行。这个过程会下载数百MB甚至上GB的文件,请保持网络通畅,耐心等待。
实操心得:有时官网的conda命令下载速度很慢或卡住。一个备选方案是使用pip安装。在配置器中选择“Package”为“Pip”,会生成pip命令,如
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118。pip的源通常更快。你可以先尝试conda,如果太慢,就conda uninstall pytorch卸载,再用pip命令安装。
3.5 第五步:验证PyTorch和GPU是否可用
安装完成后,我们需要验证PyTorch安装成功,并且能正确识别GPU。
在激活的yolov5环境中,启动Python交互界面:
python然后,在出现的>>>提示符后,依次输入以下代码并回车:
import torch print(torch.__version__) # 打印PyTorch版本 print(torch.cuda.is_available()) # 检查CUDA(GPU)是否可用如果第一行输出了版本号(如2.1.0),第二行输出了True,那么恭喜你,PyTorch和GPU环境配置完美成功!如果第二行是False,说明PyTorch是CPU版本,或者CUDA驱动匹配有问题。请返回3.4步检查你的选择。
输入exit()退出Python交互界面。
3.6 第六步:克隆YOLOv5官方代码并安装依赖
- 在你喜欢的位置(比如
D:\Projects\)打开命令行,或者用cd命令切换过去。确保仍在yolov5环境中。 - 克隆代码仓库:
如果提示没有git命令,你需要先安装Git。或者,你也可以直接在GitHub页面点击“Code” -> “Download ZIP”,下载后解压到一个英文路径。git clone https://github.com/ultralytics/yolov5 - 进入克隆下来的
yolov5文件夹:cd yolov5 - 安装项目所需的其他依赖包。YOLOv5很贴心地准备了一个
requirements.txt文件,里面列出了所有必需的库。使用pip一键安装:
这个命令会自动安装OpenCV-Python(图像处理)、Matplotlib(画图)、Pandas(数据处理)等几十个库。等待其完成。pip install -r requirements.txt
4. 运行你的第一个目标检测程序
环境全部就绪,现在让我们来点激动人心的——真正运行YOLOv5,看看它的效果。
4.1 使用预训练模型进行图片检测
YOLOv5自带了好几个不同大小和速度的预训练模型(如yolov5s.pt, yolov5m.pt等)。‘s’代表small(小),速度快但精度稍低;‘l’代表large(大),速度慢但精度高。我们从最小的yolov5s.pt开始,它会自动从网上下载。
在yolov5目录下,执行以下命令:
python detect.py --source data/images/bus.jpg --weights yolov5s.pt我来解释一下这个命令:
python detect.py: 运行检测脚本。--source data/images/bus.jpg: 指定检测源。这里用的是YOLOv5自带的示例图片(一辆巴士)。你也可以换成你自己的图片路径,例如--source my_photo.jpg。--weights yolov5s.pt: 指定使用的模型权重文件。第一次运行会自动下载。
运行后,你会看到命令行里滚动很多信息,最后会显示类似“Results saved toruns/detect/exp”的字样。打开yolov5文件夹下的runs/detect/exp目录,就能找到处理后的图片bus.jpg。打开它,你应该能看到巴士、行人等物体都被彩色框准确地框了出来,并打上了“bus”、“person”的标签和置信度分数。
4.2 进行实时摄像头检测
这更酷!让你的电脑摄像头实时识别画面中的物体。
python detect.py --source 0 --weights yolov5s.pt这里--source 0通常代表电脑的第一个摄像头(默认摄像头)。运行后,会弹出一个窗口,显示摄像头画面。你拿一些物品(比如水杯、手机、键盘)在镜头前晃动,看看它能不能实时识别出来。按键盘上的Esc键可以退出程序。
注意事项:第一次运行摄像头检测时,可能会提示你安装一些与视频编解码相关的包(如
pycocotools-windows),按照提示安装即可。如果摄像头打不开,可以尝试将--source 0改为--source 1试试其他摄像头索引。
5. 常见问题与排查技巧实录
即使步骤再详细,每个人的电脑环境千差万别,遇到问题很正常。这里我整理了新手最常遇到的几个“坑”及其解决方案。
5.1 问题一:ImportError: DLL load failed while importing ...或类似的动态链接库错误
- 问题描述:在导入PyTorch或其他库(如OpenCV)时,报错找不到某个
.dll文件(Windows)或.so文件(Linux/macOS)。 - 排查思路:这几乎是Windows平台的特有问题,根本原因是Visual C++ Redistributable运行时库缺失或版本不对。
- 解决方案:
- 访问微软官网,下载并安装最新版本的 Microsoft Visual C++ Redistributable。通常需要同时安装x86和x64版本。
- 重启电脑,再尝试导入。
- 如果问题依旧,考虑使用conda重新安装有问题的包,conda有时会连带解决运行时依赖。例如:
conda install opencv -c conda-forge。
5.2 问题二:运行检测时速度极慢,且GPU利用率显示为0%
- 问题描述:程序能跑,但检测一张图要几十秒,任务管理器里GPU(NVIDIA显卡)使用率几乎为0%。
- 排查思路:这明确说明程序正在使用CPU进行计算,没有调用GPU。
- 解决方案:
- 首先,用3.5节的方法确认
torch.cuda.is_available()是否为True。如果是False,回到PyTorch安装步骤。 - 如果是
True,检查你的PyTorch版本是否真的是CUDA版本。在Python中执行print(torch.version.cuda),如果有输出(如11.8),说明安装的是GPU版。 - 确保你的代码没有强制指定设备为CPU。在YOLOv5的detect.py中,默认会自动选择可用的设备。你也可以在命令中显式指定:
python detect.py --source ... --weights ... --device 0,其中0代表第一块GPU。
- 首先,用3.5节的方法确认
5.3 问题三:pip install -r requirements.txt安装某些包失败(如pycocotools)
- 问题描述:安装依赖时,某个包(特别是需要编译的包)反复失败,报错信息里常有“error: Microsoft Visual C++ 14.0 or greater is required”。
- 排查思路:这些包需要本地编译环境,而你的电脑缺少C++编译器。
- 解决方案:
- 最佳方案:安装
Visual Studio Build Tools。去微软官网,下载“Visual Studio 2022”的生成工具,安装时务必勾选“使用C++的桌面开发”工作负载。 - 替代方案:寻找预编译的wheel文件。对于
pycocotools,可以尝试安装pycocotools-windows这个替代包:pip install pycocotools-windows。对于其他包,可以去这个网站根据你的Python版本和系统寻找对应的.whl文件下载后手动安装。
- 最佳方案:安装
5.4 问题四:克隆或下载速度慢
- 问题描述:
git clone或pip install下载速度只有几KB/s,甚至超时。 - 解决方案:配置国内镜像源。
- Git克隆加速:将GitHub地址替换为国内镜像站地址。例如,使用Gitee镜像:
git clone https://gitee.com/mirrors/YOLOv5.git(注意:镜像可能有延迟,但代码是一样的)。 - Pip加速:在pip install命令后加上
-i参数指定镜像源。例如:
常用的国内源还有阿里云、腾讯云等。pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
- Git克隆加速:将GitHub地址替换为国内镜像站地址。例如,使用Gitee镜像:
5.5 问题速查表
| 问题现象 | 可能原因 | 快速检查/解决方案 |
|---|---|---|
nvidia-smi命令无效 | 无NVIDIA显卡或驱动未安装 | 检查设备管理器/安装显卡驱动 |
torch.cuda.is_available()返回 False | PyTorch安装的是CPU版本;CUDA与驱动不匹配 | 检查PyTorch官网安装命令的选择;更新显卡驱动 |
| 导入PyTorch报DLL错误 | 缺少VC++运行库 | 安装最新版 Microsoft Visual C++ Redistributable |
| 安装依赖包失败(编译错误) | 缺少C++编译环境 | 安装 Visual Studio Build Tools 或寻找预编译包 |
| 运行检测无任何输出,程序卡住 | 模型文件下载失败 | 检查网络,可手动下载yolov5s.pt放到项目根目录 |
| 摄像头检测打不开 | 摄像头索引错误或被占用 | 尝试--source 1;关闭其他占用摄像头的软件 |
环境配置是深度学习实践的第一步,也是最磨练心性的一步。遵循清晰的步骤,理解每一步的目的,遇到问题时耐心根据错误信息搜索,你一定能跨过这道坎。当你成功运行起第一个检测程序后,后续的学习——比如在自己的数据集上训练模型、修改网络结构、部署到其他平台——都将建立在这个稳定可靠的环境之上。这个环境就是你探索AI视觉世界的起点站,现在,它已经准备就绪了。