拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

计算机视觉环境搭建:Anaconda+PyCharm+OpenCV+PyTorch安装YOLOv5

计算机视觉环境搭建:Anaconda+PyCharm+OpenCV+PyTorch安装YOLOv5

写这篇博客的起因很简单:自己刚接触计算机视觉时,为了把 PyCharm、OpenCV、Anaconda、PyTorch、YOLOv5 这一整套环境折腾明白,前前后后重装了不知道多少次系统,踩坑踩到怀疑人生。现在回头看,其实这套环境配置的脉络非常清晰,只要理解了每个工具的角色定位和它们之间的协作关系,完全可以在一个小时内从零搭好,并且在同一个环境里跑通 YOLOv5 目标检测和 Harris/SIFT 角点检测两个经典实验。这篇文章就是想把这条完整的路线图整理出来,给正在入门 CV 的同学一条直路,避免再走我当年那些弯路。

这套组合解决的核心问题只有一个:怎么用最短的时间,在本地搭建一套足够支撑深度学习实验和传统图像处理实验的 Python 环境。整个链条的底座是 Anaconda,它负责管理 Python 版本和第三方库的依赖关系,相当于给你装了一个干净整洁的"软件管家";PyCharm 是写代码和调试代码的前端窗口,负责把你写的 Python 脚本和 Anaconda 里的环境对接起来;OpenCV 是图像处理的基础库,Harris 角点检测和 SIFT 特征提取这类经典算法都封装在里面;PyTorch 是深度学习框架,YOLOv5 就运行在它之上。把这四层关系理清了,后面所有的安装和配置过程就有了清晰的逻辑指引。

先说一个总结性的经验,也是整篇文章最重要的一个判断:凡是环境配置搞到一半进行不下去的,八成是版本之间互相打架,而不是操作步骤有问题。所以下面所有步骤里,我会特别强调版本组合的选择,这一点一定要留意。

1. 整体设计思路:为什么用 Anaconda 作为全链路底座

很多新手一开始接触这套环境配置时,最容易犯的错误是直接去 Python 官网下载 Python 解释器,然后在 PyCharm 里配置这个全局 Python 来装各种包。这个流程对于只写简单脚本的程序来说没有问题,但一旦涉及 OpenCV、PyTorch、YOLOv5 这种依赖关系很重的库,全局 Python 环境很快就会变成一团乱麻。

我自己第一次配环境时就遇到过这样的情况:为了装 PyTorch,用 pip 命令安装,结果把系统里原有的某个库给升级了,导致另一个项目里的 OpenCV 直接无法导入,报了一堆底层依赖的错误,最后只能重装系统才恢复干净状态。后来我彻底转向了 Anaconda 的方案,这个坑就再也没踩过。

1.1 每个工具在整个体系中的角色定位

先理清这条链路上每个工具干了什么活:

  • Anaconda:不是 Python 本身,而是一个 Python 发行版加环境管理工具。它自带 conda 命令,可以创建多个相互隔离的 Python 虚拟环境,每个环境里可以有不同的 Python 版本和不同的库版本,互相不干扰。这就像给你的电脑装了好几个独立的"运行沙箱"。

  • PyCharm:只是代码编辑器,它本身不运行 Python 代码,也不能直接安装第三方库。它真正的作用是提供一个好用的图形界面,让你写代码、调试、查看变量、运行脚本。它需要知道"该用哪个 Python 解释器来执行你的代码",这个解释器就可以指向 Anaconda 创建的那个虚拟环境。

  • OpenCV:C++ 写的图像处理库,Python 里通过 cv2 这个包名来导入。各种传统图像处理算法(包括 Harris 角点检测、SIFT 特征提取)都在这一个库里。

  • PyTorch:深度学习框架,负责神经网络的构建、训练和推理,YOLOv5 的模型结构和 forward 过程都构建在 PyTorch 的张量计算之上。

  • YOLOv5:基于 PyTorch 实现的目标检测算法,是一整套包含代码、模型权重、训练脚本、推理脚本的项目代码。

这五个工具的关系可以类比成一个餐厅:Anaconda 是后厨管理间,每个虚拟环境就是一间独立的厨房,PyCharm 是点菜和打包的窗口,OpenCV 是做传统菜的师傅,PyTorch 是深度学习这边的灶台,YOLOv5 是跑在 PyTorch 这个灶台上的一个标准化菜品。

1.2 为什么不用 pip 全局安装,非要用 conda 环境隔离

这里要给新手说清楚一个关键逻辑,也是后面所有操作的基础认知:Python 的第三方包之间是有相互依赖的,比如 PyTorch 某版本依赖 numpy 的某个版本范围,OpenCV 又依赖 numpy 的另一个版本范围。如果所有包都装在系统全局的 Python 环境里,就会出现"装 A 的时候把 B 的依赖改了,导致 B 不能用"的连锁反应。

conda 的核心价值就在于环境隔离。你可以为 YOLOv5 单独创建一个环境,在里面装 PyTorch、OpenCV、numpy 等库,这几个库怎么折腾都不会影响系统里其他 Python 项目的运行。我在实际工作中会对不同项目维护不同的 conda 环境,比如 cv_env 专门跑 OpenCV 和 YOLOv5,另一个 nlp_env 专门跑自然语言处理的库,两者平时老死不相往来,要用哪个就激活哪个。

2. Anaconda 安装与 conda 基础操作

这个章节是整个环境链路的地基,Anaconda 安装好了,后面的所有事情就顺理成章。

2.1 Anaconda 下载安装的详细流程

去 Anaconda 官网下载安装包,这里只提醒一点:下载页面会明确区分 Windows、macOS、Linux 三个平台,按照自己的操作系统选对应的安装包就行。Windows 下下载的是 .exe 可执行文件,安装过程基本上是"下一步、下一步"的傻瓜式操作,但有三个细节需要特别注意。

第一个细节是安装路径的选择。Anaconda 默认会装到用户目录下的 Anaconda3 文件夹,这个路径是正常的,不需要手动更改。但要注意整个路径中不能有中文或空格,否则后面 conda 命令可能会出错。

第二个细节是安装过程中的环境变量选项。在安装界面的 Advanced Options 页面,会询问是否将 Anaconda 添加到系统 PATH 环境变量,这个选项我建议勾选上(针对 Windows 用户)。虽然官方文档建议不勾选以免影响系统原有 Python,但既然你从一开始就是全新安装,勾选可以让后面所有命令行的使用更顺手。

第三个细节是装完后测试。安装完成后,打开命令行窗口(Windows 下按 Win + R,输入 cmd,回车),输入 conda --version,如果能正常输出版本号,说明 Anaconda 安装成功。如果提示找不到 conda 命令,通常是环境变量没有生效,重启命令行窗口一般就能解决。

安装完成后,建议立刻执行 conda update conda 把这个工具本身升级到最新版本,因为新版 conda 在解析依赖时速度更快、更不容易出错。我经历过老版本 conda 安装一个包要转圈十几分钟的情况,升级后快了很多。

2.2 创建独立的 CV 虚拟环境

这是整个环境配置里最关键的一步。我们要创建一个专门的虚拟环境,起名 cv_env(名字随意),指定 Python 版本为 3.9。

为什么指定 Python 3.9 而不是最新版本?这里有个非常现实的兼容性原因:PyTorch 和 YOLOv5 官方的预编译包对 Python 版本有严格的对应关系,Python 3.9 是目前兼容性最广的一个版本,无论是 PyTorch 还是 OpenCV 的预编译 wheel 包,都对 Python 3.9 有很好的支持。我自己试过在 Python 3.11 环境下装 PyTorch,虽然可以装上,但某些老版本的 YOLOv5 代码在运行时会出现依赖报错。

打开命令行,执行以下命令:

conda create -n cv_env python=3.9

这里 -n 是 name 的意思,表示环境名称;python=3.9 表示在这个环境里安装 Python 3.9 解释器。执行过程中会提示是否确认安装,输入 y 回车等待完成即可。

创建完成后,激活这个环境:

conda activate cv_env

注意命令行前面会出现 (cv_env) 这样的提示符,说明当前正在这个虚拟环境中操作。后续所有的 pip 安装、Python 命令执行,都必须在这个激活状态下操作。

2.3 配置国内镜像源加速

这一点是给国内用户特别加的经验:Anaconda 官方源和 PyPI 官方源都在国外,直接下载依赖包的速度非常慢,经常卡在一个几十 MB 的包上下载到一半就断了。解决办法是配置国内镜像源。

对于 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 --set show_channel_urls yes

对于 pip 下载 Python 包,配置清华 PyPI 镜像:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

配置好后,后续安装包的速度会有质的提升。这里想特别多说一句:很多同学配置镜像这一步老是出问题,其实核心就一条,要注意镜像源的 https 地址不能写错,一个字母错了就完全没用。

3. PyCharm 安装与连接 Anaconda 环境

PyCharm 是整个开发流程里你待得最久的地方,它安装起来相对简单,真正容易卡住的是怎么把 PyCharm 和刚才创建的 conda 环境对接起来。

3.1 PyCharm 社区版与专业版怎么选

PyCharm 分为社区版(Community)和专业版(Professional)两个版本。社区版完全免费且开源,专业版是收费的商业版本。

对于计算机视觉这个方向的学习,社区版已经足够了,它的代码编辑、调试、Git 集成、Python 解释器配置等功能都完全可用。专业版的额外功能(比如远程开发、数据库工具、前端框架支持)在纯 Python 的 CV 项目中用不上太多。我的建议是:直接用社区版,完全免费,没有任何功能阉割的困扰。

3.2 下载安装与新建项目

在 PyCharm 官网下载对应系统的安装包,Windows 下是 .exe 文件。安装过程同样是下一步式的,其中有个 "Create Desktop Shortcut" 之类的选项,建议勾选上,方便后续打开。

装好后打开 PyCharm,选择 "New Project"。在弹出的创建窗口里,有一个非常重要的配置项:Location 是项目存放路径,这个随意;Interpreter 是解释器配置,这一步是关键中的关键。

第一次创建项目时,PyCharm 默认会使用系统自带的 Python 解释器,我们需要手动改成刚才创建的那个 cv_env 环境。点击解释器选项旁边的齿轮图标,选择 "Add Interpreter"(添加解释器),在弹出的窗口里选择 "Conda Environment",然后选择 "Existing Environment"(已有环境),下拉框中就能看到 cv_env 这个环境,选中它,确认即可。

配置完成后,在 PyCharm 底部或侧边栏可以看到环境信息,显示 Python 3.9 和 cv_env,这说明 PyCharm 已经和 Anaconda 的虚拟环境完成了对接。后面在这个项目里写的所有代码,都会用 cv_env 这个环境的 Python 解释器来运行,安装在这个环境里的所有库也都能在 PyCharm 中直接导入。

我遇到过不少同学卡在这一步:已经用 conda 创建好环境了,但 PyCharm 里导入 cv2 或 torch 还是提示找不到模块。这些问题绝大多数都不需要重装任何东西,只要检查一下右下角的解释器设置,是否真的指到了 cv_env 这个环境。PyCharm 有时会自动切换解释器,如果发现代码里 import cv2 报错,第一件事就是去查看解释器设置。

4. OpenCV 引入与 Harris / SIFT 角点检测实验

环境底座打好了,现在我们终于可以开始做第一个正式的计算机视觉实验了。

4.1 OpenCV 安装与版本选择

在激活了 cv_env 的命令行里,执行 pip 安装:

pip install opencv-python

安装完成后验证:

import cv2 print(cv2.__version__)

如果能在控制台输出类似 4.8.0 的版本号,说明 OpenCV 安装成功,可以正常导入了。

这里需要说明一个 OpenCV 生态里的常见困惑:为什么有时候 pip install opencv-python 后,cv2.xfeatures2d.SIFT_create() 这个函数却不能用?

原因是 OpenCV 把一部分功能模块(包括 SIFT 和 SURF)放在了主库之外,需要用pip install opencv-contrib-python来安装带扩展模块的版本,SIFT 就是典型例子。所以,如果你打算做 SIFT 角点检测实验,请确认安装的是 opencv-contrib-python 而不是 opencv-python,或者两个都装上(contrib 版本已经包含核心功能,可以替代 opencv-python)。

我的建议是直接安装:

pip install opencv-contrib-python

这样核心功能和扩展功能都有了。另外不管装哪个版本,如果之前已经装过 opencv-python,建议先卸载(pip uninstall opencv-python),再安装 contrib 版本,避免两个包冲突导致导入报错。

4.2 角点检测实验 1:Harris 角点检测

Harris 角点检测是传统图像处理里最经典的角点检测算法,它的核心思想是:图像中角点所在的区域,在任意方向上进行微小移动时,灰度变化都非常明显。直白点说,平坦区域的灰度基本不变,边缘区域只在一个方向上变化明显,而角点区域在多个方向上都变化明显。

在 OpenCV 中调用 Harris 角点检测非常方便,完整的步骤是通过 cornerHarris 函数实现的。下面是完整的实验代码,我加了一些处理便于可视化:

import cv2 import numpy as np # 读取图片并转换为灰度图 img = cv2.imread('your_image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换为 float32 类型,因为 cornerHarris 需要这种类型 gray = np.float32(gray) # 调用 Harris 角点检测 # 参数解释:src 输入图像,blockSize 邻域大小,ksize Sobel 算子孔径大小,k 角点响应函数自由参数 dst = cv2.cornerHarris(gray, blockSize=2, ksize=3, k=0.04) # 膨胀角点结果,便于显示(让角点标记更大更明显) dst = cv2.dilate(dst, None) # 通过阈值筛选角点,在原图中标记出来 # 使用 0.01 * dst.max() 作为阈值,只显示响应值较强的角点 img[dst > 0.01 * dst.max()] = [0, 0, 255] # 显示结果 cv2.imshow('Harris Corners', img) cv2.waitKey(0) cv2.destroyAllWindows()

运行步骤非常简单:在 PyCharm 里新建一个 Python 文件,把上面的代码复制进去,把图片路径改成你自己准备好的图片(可以随便用手机拍一张有明显物体轮廓的图,或者是叉车、格子布这类角点较多的图片),然后运行。

这里想提醒一下理解原理的重要性:cornerHarris 里的 blockSize 参数表示计算角点响应时考虑的邻域范围,数值越大检测到的角点越稀疏;k 参数是经验值,影响角点检测的灵敏度,一般取 0.04 到 0.06 之间。如果你发现检测出的角点太多或者太少,优先调节这两个参数,而不是不调节就认为算法有问题。

4.3 角点检测实验 2:SIFT 特征检测

SIFT(Scale-Invariant Feature Transform,尺度不变特征变换)比 Harris 复杂得多,它的核心能力是检测出对尺度变化、旋转、光照变化都保持稳定的关键点,并且为每个关键点计算一个 128 维的特征描述子。简单说,Harris 能找到角点,SIFT 在能找到角点的同时,还能给出这个角点独一无二的数值"指纹",后续可以通过这些指纹做图像匹配。

在 OpenCV 中使用 SIFT 的代码非常简洁:

import cv2 # 读取图片并转换为灰度图 img = cv2.imread('your_image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 创建 SIFT 检测器 # 注意:在旧版本 OpenCV 中是 cv2.xfeatures2d.SIFT_create() # 新版本 OpenCV 中直接使用 cv2.SIFT_create() sift = cv2.SIFT_create() # 检测关键点并计算描述子 keypoints, descriptors = sift.detectAndCompute(gray, None) # 在图像上绘制关键点 # 参数解释:result_image 输出图像,keypoints 关键点,None 表示不绘制描述子特征邻域 img_with_keypoints = cv2.drawKeypoints(gray, keypoints, None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) # 显示结果 cv2.imshow('SIFT Keypoints', img_with_keypoints) cv2.waitKey(0) cv2.destroyAllWindows() # 打印关键点数量和描述子维度 print(f"检测到关键点数: {len(keypoints)}") print(f"描述子维度: {descriptors.shape if descriptors is not None else '未生成'}")

运行后,图像上会绘制出很多圆圈,每个圆圈的中心是一个关键点,圆圈的大小代表了该关键点的尺度(半径越大表示该特征能匹配更大范围的图像缩放),径向线表示这个关键点的主方向。

关于 cv2.SIFT_create() 和 cv2.xfeatures2d.SIFT_create() 的区别,很多老教程还在用后者,但如果你的 OpenCV 版本是 4.x,直接使用高版本的写法 cv2.SIFT_create() 就行。用旧用法会报 AttributeError 错误,因为 xfeatures2d 这个模块在新的 OpenCV 中不再默认暴露。

5. PyTorch 安装与 YOLOv5 环境搭建、实验运行

角点检测实验跑通了,说明传统图像处理环境已经扎实了。接下来进入深度学习的部分,安装 PyTorch 并运行 YOLOv5 目标检测。

5.1 PyTorch 安装:CPU 版还是 GPU 版

PyTorch 的安装是整个环境配置中最容易出现分歧的一步,因为要不要装 GPU 版本,完全取决于你的电脑有没有 NVIDIA 独立显卡,以及是否已经装好了对应的显卡驱动。

先看怎么判断自己的机器适不适合装 GPU 版本。Windows 下按下 Win + R,输入 cmd 回车,在命令行里执行 nvidia-smi,如果能正常输出显卡信息和驱动版本号,说明你的电脑有 NVIDIA 显卡且驱动已经装好,可以考虑装 GPU 版的 PyTorch。如果提示 nvidia-smi 不是内部或外部命令,说明没有 N卡或者驱动未装,那就老老实实装 CPU 版。

对于大多数入门用户和没有独显的同学,CPU 版的 PyTorch 完全够用。YOLOv5 用 CPU 跑推理确实会比 GPU 慢不少(一张普通图片可能要几秒到十几秒),但对于理解算法流程、跑通模型、做小规模实验来说没有任何问题。

安装 CPU 版本的 PyTorch 最简单的方法是:

pip install torch torchvision

这样默认会安装 CPU 版本(除非你的环境恰好在 Linux 且有 CUDA,否则默认基本是 CPU 版本,为了保险起见,我建议明确指定安装 CPU 版本,去 PyTorch 官网的 Get Started 页面选择对应配置,会给出具体的 pip 安装命令)。

判断是否安装成功,在 Python 命令行里执行:

import torch print(torch.__version__) print(torch.cuda.is_available())

如果 torch.version能正常输出版本号,说明 PyTorch 安装成功。torch.cuda.is_available() 输出 False 是正常的,说明当前使用的是 CPU 版本。如果输出 True,说明你的机器正以 GPU 模式运行 PyTorch。

这里要明确一个概念:说到底 PyTorch CPU 版本和 GPU 版本在代码层面没有任何区别,你的神经网络代码完全一样,区别只是底层计算时用的是 CPU 的张量运算还是 GPU 的 CUDA 张量运算。所以入门阶段直接装 CPU 版本,不会影响你学习任何 PyTorch 和 YOLOv5 的代码逻辑。

5.2 在同一个环境里验证 torch 和 cv2 协同工作

因为我们要用同一个 cv_env 环境跑所有实验,安装完 PyTorch 后,最好验证一下 torch 和 opencv 能不能同时在这个环境里正常导入。在 Python 中输入:

import cv2 import torch import numpy as np print("OpenCV version:", cv2.__version__) print("PyTorch version:", torch.__version__) # 用 torch 创建一个张量,转换后交给 OpenCV 做简单处理后显示大小 tensor_img = torch.rand(3, 224, 224) numpy_img = tensor_img.numpy() print("Tensor shape:", tensor_img.shape) print("Numpy array shape:", numpy_img.shape)

能正常打印出所有信息,说明 torch、cv2、numpy 三者在这个环境中已经形成了一个稳定的依赖体系。这一步验证非常有必要,比一个个单独装完就认为成功靠谱得多。

5.3 安装 YOLOv5 完整流程与踩坑记录

YOLOv5 的官方项目托管在 GitHub 上,安装分为四步:克隆项目代码、安装项目依赖、下载模型权重、运行推理脚本。

第一步,在命令行中激活 cv_env,然后进入你想放置项目的目录,执行:

git clone https://github.com/ultralytics/yolov5.git cd yolov5

如果没有安装 Git,可以去 Git 官网下载安装,或者直接在 GitHub 页面上下载 ZIP 压缩包,解压后进入目录。我个人更推荐用 git clone,因为后续如果想拉取项目更新会非常方便。

第二步,安装依赖:

pip install -r requirements.txt

这一步是 YOLOv5 安装过程中最容易出问题的一步。requirements.txt 文件里列出了所有依赖包,包括 torch、torchvision、opencv-python、matplotlib、pandas、seaborn 等一大堆。

因为我们已经先手动装好了 torch 和 torchvision,所以 requirements.txt 在执行时会检查并跳过已经安装好的依赖。但如果依赖版本之间有冲突,pip 会报错,此时最常见的解决思路是:先把 requirements.txt 里的 torch 和 torchvision 几行内容删掉,只安装剩下的依赖,因为这两个我们已经单独处理过了。

第三步,下载模型权重。YOLOv5 有多个不同大小的模型:yolov5s(最小最快)、yolov5m、yolov5l、yolov5x(最大最准)。入门推荐下载 yolov5s.pt,因为体积小(约 14MB),推理速度快,精度也够用。可以手动去 GitHub Releases 页面下载,也可以直接运行代码让 YOLOv5 自动下载。

第四步,运行推理。在 YOLOv5 项目目录下,执行:

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

这里 --source 指定输入图片,--weights 指定模型权重文件,--conf-thres 是置信度阈值,表示只有置信度高于 0.5 的检测结果才会显示。YOLOv5 项目自带的 data/images 目录里有一些测试图片,直接拿来验证非常方便。

运行完成后,检测结果图会保存在 runs/detect/exp 目录下,打开就能看到汽车、人、公交车等物体被画上了边界框,框的上方标注了类别名称和置信度。看到这张图,说明 YOLOv5 已经从安装到推理整个流程全部打通了。

5.4 尝试用 YOLOv5 检测自己的图片

官方测试图片跑通之后,顺手把 --source 参数改成自己的图片路径,就能检测你手头任意一张图片里的物体了:

python detect.py --source /path/to/your_image.jpg --weights yolov5s.pt --conf-thres 0.5

也可以直接改文件名和图片路径,放进 YOLOv5 项目目录后用相对路径指定即可。实测下来,YOLOv5s 模型对常见物体(人、车、猫、狗、手提包等 COCO 数据集里的 80 个类别)识别效果很有保障,照片里的物体只要有基本的轮廓和清晰度,基本都能框出来。

有个常见问题:如果 detect.py 报错,提示 No module named 'torchvision' 或者其他模块缺失,原因几乎可以断定是当前命令行没有激活 cv_env 环境。在命令行里先执行 conda activate cv_env,再重新运行 detect.py 就能解决。

6. 常见问题排查与避坑指南

到目前为止,整个环境链路已经全部打通。最后把这些年在各类论坛、答疑群和实际经验中积累的几个高频问题整理成一个速查表,方便读者对照解决。

6.1 高频报错的解决思路汇总

报错信息具体分析解决方案
No module named 'cv2'OpenCV 没装进当前环境,或当前 Python 解释器和安装 OpenCV 的环境不一致检查 PyCharm 解释器设置是否指向 conda 的 cv_env;在命令行执行 conda activate cv_env 再安装 opencv-contrib-python
No module named 'torch'PyTorch 未安装或环境不对在 cv_env 环境执行 pip install torch torchvision;确认当前命令行显示 (cv_env) 前缀
ModuleNotFoundError: No module named 'torchvision'YOLOv5 依赖中缺少 torchvision在 cv_env 中安装:pip install torchvision
AttributeError: module 'cv2' has no attribute 'xfeatures2d'OpenCV 版本过高或没有安装 contrib 版本安装 opencv-contrib-python,并把代码改为 cv2.SIFT_create()
运行 detect.py 报错,错误信息中包含 CUDA当前机器没有N卡驱动,但系统装到了带 CUDA 支持的 PyTorch 包重新安装 CPU 版本 PyTorch:pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
pip 下载很慢或卡住连接官方源慢导致配置国内 PyPI 镜像(清华、阿里云均可),详细命令见 2.3 节
conda 创建环境时卡在 Solving environment源连接慢或 conda 版本过旧先执行 conda update conda 更新到最新版,再配置国内 conda 镜像源后重试

6.2 YOLOv5 训练自己的数据集需要准备什么

很多同学跑通检测之后,下一步自然就想用自己的数据集来训练模型。这里提前给打一个预防针:训练是一个比安装配置复杂得多的工作,核心流程是:标注数据(用 LabelImg 或 Label Studio 画边界框并标注类别)→ 整理数据集格式(YOLO 格式的标注文件是 .txt 文件,每行表示一个目标,格式为:类别编号 x_center y_center width height,坐标值都是相对图片尺寸的归一化小数)→ 修改 YOLOv5 的 data 配置文件(指定数据集路径和类别名列表)→ 修改模型配置文件(调整类别数)→ 执行 train.py。

我没有在这里展开训练细节,因为只要你完整跑通了本文的内容,说明环境层面已经完全没有障碍了,后续训练时面对报错就能自然而然地排查,那才是真正进阶的开始。

6.3 我踩过最深的坑,希望你一步避开

最后分享两个自己在实际配置中印象最深的坑,都是把系统弄到几乎崩溃级别才总结出来的经验。

第一个坑是混用 conda 和 pip 安装大型库导致的底层依赖裂开。具体表现是:用 conda 装了 PyTorch,之后又用 pip 装了另一版本的 torch,两个版本在环境里互相覆盖,最后 import torch 直接报错。正确做法是:一个环境里安装大型框架,尽量固定在同一个包管理工具上来管理。我的习惯是:环境创建用 conda,环境内的包安装也优先用 conda;如果某个包只有 pip 版本(例如很多 GitHub 项目里的自定义包),再单独用 pip 装,但装之前先看清楚会不会动到已经装好的核心库。

第二个坑是没有养成"每装一个包就验证一次"的习惯。很多人一上来就把所有东西装完,然后一次性跑代码,报错时根本不知道是哪一步出了问题,只能全部卸载重装。我的做法是:每装完一个组件,就立刻写一行 import 语句验证能不能导入、能不能正常显示版本号。这样一个环节一个环节地确认,即使出了问题,也能在 5 分钟内定位到具体是哪个环节出了纰漏,而不是花上一天时间反复卸载重装整个系统。

这套环境配置流程,是我从零基础摸爬滚打到现在,认为最稳妥、最省心的一条路线。按着这个顺序走一遍,你得到的不仅是一个能跑的 YOLOv5 和两个角点检测实验,更是对 Python 环境管理、依赖关系、深度学习项目结构一次完整的系统认知。这种底层的环境搭建能力,在以后的每一个 CV 项目里都会派上用场。

返回列表