ARTICLE DETAIL

资讯详情

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

Python 3.11 CPU环境配置YOLO v8/v11:零基础跑通目标检测

Python 3.11 CPU环境配置YOLO v8/v11:零基础跑通目标检测 很多朋友第一次接触 YOLO大概率是被网上满屏的 “CUDA”、“cuDNN”、“GPU 驱动” 给劝退的。对于手头只有一台普通办公电脑或者暂时没条件上显卡的同学来说难道就真的没法体验目标检测了吗当然不是。本文将以当前最主流的 Ultralytics 统一框架为例在Python 3.11 CPU环境下从零开始一步步带你配置好 YOLO v8 / v11 的完整运行环境并跑通你的第一次目标检测预测。这套环境不仅支持 v8Ultralytics 框架内后续的 YOLO 系列版本包括你在标题里看到的 v26 这类新分支都能做到无缝切换一次配置长期复用。1. YOLO 是什么为什么选择 v8/v11/v261.1 YOLO 目标检测算法简介YOLO全称 You Only Look Once是目标检测领域非常经典的 one-stage 算法。传统检测算法往往需要“先找候选区域再对每个区域分类”速度慢且流程复杂而 YOLO 的核心思想非常直接把整张图片直接喂进一个神经网络网络一次性输出所有目标的边界框坐标、类别和置信度。因为只需要“看一次”所以它的推理速度极快在工业界和学术界都拥有极高的普及率。为了方便理解你可以把 YOLO 想象成一个目光锐利的“监考老师”老师走进考场输入图片只看一眼就能瞬间指出谁在作弊目标位置、作弊类型是什么目标类别、以及他有多大把握置信度。不需要来回扫视所以效率非常高。1.2 为什么选择 Ultralytics 统一框架v8/v11/v26YOLO 的版本迭代非常快从 v5、v8 到 v11再到社区中衍生出的各种最新分支其核心网络结构和训练技巧都在不断演进。这里想特别说明一下版本号的问题。在 Ultralytics 官方仓库中目前最稳定、社区生态最完善的是YOLOv8和YOLO11。你可能会在各种资料里看到“YOLO26”之类的编号它更多是指社区对 YOLO 系列最新特性的一种统称或者是未来某个时间节点的版本号并非当前官方仓库里对应的某个具体模型。但好消息是这些版本都共用同一个Ultralytics框架环境配置方式完全一致。一次配置好环境你可以在 v8、v11 之间随意切换只需要改一行代码中的模型名称即可。这种统一的框架设计极大降低了学习成本也是本文选择从 Ultralytics 入手的原因。1.3 CPU 推理和 GPU 推理的区别很多新手会陷入一个误区没有 NVIDIA 显卡是不是就完全跑不了 YOLO其实不是。GPU 推理适合训练大型模型、处理高分辨率视频流和批量数据。GPU 拥有数千个计算核心并行计算能力强推理速度极快但需要额外配置 CUDA、cuDNN 等复杂环境。CPU 推理适合学习算法原理、验证项目流程、处理单张图片或小批量数据。CPU 适合通用计算虽然速度比 GPU 慢但对于跑通一个“首次预测”的 Demo 来说完全足够。本文聚焦 CPU 环境因为不是每个人都有高性能显卡而且对于零基础入门来说CPU 环境能帮你绕过显卡驱动、CUDA 版本匹配等一堆坑快速看到模型效果。等你后续需要训练大规模模型时再迁移到 GPU 或云服务器上即可。2. 环境准备与版本说明在开始安装之前建议先检查一遍自己的电脑环境避免后续出现版本不兼容的问题。2.1 操作系统与硬件要求操作系统Windows 10/11 或 Ubuntu 20.04/22.04 均可。本文以 Windows 10/11 为例Linux 下的命令差异很小我会在关键步骤处补充说明。CPU 要求需要支持 AVX 指令集。2011 年之后发布的 CPU 基本都支持如果你不确定可以先用 CPU-Z 工具查看一下或者直接往下装如果 PyTorch 加载时报“Illegal instruction”错误再回来排查。内存要求建议 8GB 及以上。CPU 推理时图像数据会放在内存中处理内存太小容易导致运行卡顿。硬盘空间至少预留 10GB 可用空间。PyTorch、Ultralytics 以及后续模型权重会占用不少空间。2.2 Python 版本选择这里特别强调一下请务必安装 Python 3.11。虽然 Python 3.12 已经发布但 PyTorch、Ultralytics 等深度学习库对 3.12 的预编译支持还不够完善。使用 Python 3.8 或 3.9 虽然也能运行但在一些新特性支持上不如 3.11。当前 Python 3.11 是兼顾稳定性和性能的最佳选择。如果你电脑上已经安装了 Python 3.8 或 3.10建议你还是单独安装一个 Python 3.11并在后续操作中创建独立的虚拟环境来隔离项目避免污染系统全局环境。2.3 安装包管理器 pipPython 3.11 安装完成后会自带 pip 包管理器。你可以在命令行工具CMD 或 PowerShell中输入以下命令验证python --version pip --version如果能正常输出版本号说明 Python 环境已就绪。2.4 IDE 推荐对于新手我强烈推荐使用PyCharm Community Edition社区版免费。它的项目结构和虚拟环境管理非常直观Debug 功能对理解代码执行过程很有帮助。当然如果你喜欢轻量级编辑器VS Code配上 Python 扩展也是不错的选择但需要自己多折腾一下配置。本文的示例代码不依赖 IDE 特有功能你用记事本写然后命令行运行也可以但用 PyCharm 的体验会好很多。3. 安装深度学习框架 PyTorchCPU 版3.1 为什么要先安装 PyTorchUltralytics YOLO 框架的底层是基于 PyTorch 构建的。PyTorch 是当前学术界和工业界最流行的深度学习框架之一。你可以把 PyTorch 理解为“发动机”而 YOLO 模型是“整车”只有装好发动机车才能跑起来。3.2 安装 CPU 版本 PyTorch为了避免发生 CUDA 环境冲突我们这里只安装 CPU 版本。打开命令行工具执行以下命令pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu这里拆解一下这条命令的含义torch是 PyTorch 主库负责张量计算和神经网络搭建。torchvision是 PyTorch 的视觉扩展库提供图像数据集、预处理方法和一些经典网络结构。--index-url https://download.pytorch.org/whl/cpu表示从 PyTorch 官方源下载 CPU 版本的预编译包避免了默认源可能装到 GPU 版的问题。如果你在 Linux 环境下命令完全一致无需额外安装 CUDA 工具包。3.3 验证 PyTorch 安装是否成功安装完成后在命令行输入以下命令验证python -c import torch; print(torch.__version__)如果输出类似2.5.1cpu的版本号说明 PyTorch 已经成功安装且明确是 CPU 版本。你也可以再验证一下是否能正常做张量计算import torch # 创建一个 2x2 的随机张量 x torch.rand(2, 2) print(x) # 判断是否支持 GPU这里应该输出 False因为我们装的是 CPU 版 print(torch.cuda.is_available())如果你看到输出了一个 2x2 的随机矩阵并且torch.cuda.is_available()返回False说明一切正常。4. 安装 Ultralytics 包YOLO 统一框架4.1 什么是 UltralyticsUltralytics 是一个开源的计算机视觉框架它把 YOLO 系列模型的训练、验证、预测和导出功能都集成在了一起。开发者不需要关心底层复杂的网络搭建细节只需要通过简单的 Python API 或命令行就能调用 YOLO v8、v11 等模型。4.2 安装命令确保 PyTorch 安装成功后打开命令行工具执行以下命令pip install ultralytics这个安装过程会稍微慢一些因为 Ultralytics 会自动拉取一些依赖库主要包括numpyPython 数值计算库。opencv-python图像处理库用于图片的读取、缩放、绘制检测框等。matplotlib绘图库用于可视化预测结果。pandas数据分析库用于处理标签和结果数据。pyyaml解析 YAML 配置文件。4.3 验证 Ultralytics 安装是否成功安装完成后执行以下命令验证python -c from ultralytics import YOLO; print(Ultralytics OK)如果输出Ultralytics OK说明环境已经全部配置完成可以进入实战环节了。5. 零基础跑通首次预测核心实战5.1 创建项目结构在桌面或你喜欢的目录下新建一个项目文件夹命名为yolo_test。在yolo_test文件夹下新建两个子文件夹和一个 Python 文件最终结构如下yolo_test/ ├── main.py └── images/ └── bus.jpg其中images文件夹用于存放待检测的图片。你可以找一张自己拍摄的照片或者从网上下载一张包含多个物体的图片比如街景、宠物合照放到images文件夹下并改名为bus.jpg便于统一管理。5.2 编写核心推理代码用 PyCharm 打开yolo_test项目编辑main.py文件输入以下代码# 文件路径yolo_test/main.py from ultralytics import YOLO # 加载 YOLOv8 预训练模型 # 首次运行时会自动从 GitHub 下载 yolov8n.pt 权重文件 # n 代表 nano是参数量最小的版本速度最快适合 CPU 环境 model YOLO(yolov8n.pt) # 指定待检测图片路径 image_path images/bus.jpg # 执行预测 # 参数说明 # source: 图片路径 # conf: 置信度阈值只有置信度大于 0.5 的检测结果才会保留 # save: 是否保存检测结果图片True 表示保存 results model.predict(sourceimage_path, conf0.5, saveTrue) # 遍历每一张图片的检测结果 for result in results: # 获取检测框信息 boxes result.boxes # 打印检测到的物体总数 print(f检测到 {len(boxes)} 个物体) # 逐个输出每个检测框的信息 for box in boxes: # 类别 ID cls_id int(box.cls[0]) # 置信度保留两位小数 conf float(box.conf[0]) # 边界框坐标格式为 [x1, y1, x2, y2]左上角点和右下角点 xyxy box.xyxy[0].tolist() # 打印结果 print(f类别ID: {cls_id}, 置信度: {conf:.2f}, 坐标: {xyxy})5.3 运行与验证在 PyCharm 中直接点击运行按钮或者在命令行中进入yolo_test目录后执行python main.py。首次运行需要下载权重文件yolov8n.pt如果网络比较慢你可以手动从官方 GitHub Releases 页面下载该文件放到yolo_test目录下代码会默认在当前目录查找。正常运行后你会看到类似下面的输出0: 480x640 3 persons, 1 bus, 1 tie, 135.8ms Speed: 6.0ms preprocess, 135.8ms inference, 1.2ms postprocess per image at shape (1, 3, 640, 480) 检测到 5 个物体 类别ID: 0, 置信度: 0.89, 坐标: [100.5, 200.3, 300.7, 400.2] ...5.4 结果说明上面输出的第一行是不带格式的原始日志它告诉我们0: 480x640表示图片 ID 和模型输入尺寸。3 persons, 1 bus, 1 tie表示模型识别出了 3 个人、1 辆公交车和 1 条领带。135.8ms表示这张图片在 CPU 上的推理耗时。同时因为我们在代码里设置了saveTrueUltralytics 会在项目目录下自动生成一个runs/detect/predict文件夹里面保存了绘制好检测框的结果图片。你可以打开这张图片直观地看到模型圈出的每个物体位置。如果你同时安装了 v11只需要把代码中的model YOLO(yolov8n.pt)改成model YOLO(yolo11n.pt)就可以体验新版模型的检测效果了。Ultralytics 框架会自动帮你处理模型结构的差异。6. 常见问题与排查思路6.1 常见问题对照表在实际操作过程中新手最容易遇到以下几类问题我将它们整理成了一张表方便你快速对照排查。问题现象常见原因解决思路ModuleNotFoundError: No module named torchPyTorch 未安装或当前 Python 环境不是刚才安装 PyTorch 的环境检查当前激活的虚拟环境重新执行pip install torch torchvision --index-url https://download.pytorch.org/whl/cpuImportError: DLL load failed while importing torch缺少 Microsoft Visual C Redistributable 运行库或 CPU 不支持 AVX 指令集安装 VC 2019/2022 运行库如果 CPU 过于老旧考虑使用 Python 3.8 早期版本 PyTorchpip install ultralytics速度极慢默认访问的是国外 PyPI 源使用国内镜像源pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple首次运行提示下载yolov8n.pt失败网络无法访问 GitHub 等境外资源手动下载权重文件放置到项目根目录代码会自动读取本地文件运行过程中电脑内存飙升输入的图片分辨率过高导致图像张量占用内存太大在model.predict()中传入imgsz640参数限制输入尺寸出现Illegal instruction (core dumped)CPU 指令集过于老旧不支持 PyTorch 所需的 AVX 指令更换 CPU 或电脑如果只是学习可以尝试使用云服务器 CPU 环境6.2 环境混乱问题深度排查很多新手习惯在全局 Python 环境中直接安装各种包这会导致不同项目依赖冲突。比如你之前装过 TensorFlow它可能把numpy降级到了 1.x而 Ultralytics 需要numpy2.x就会报语法错误。建议严格按照以下流程处理在项目目录下创建虚拟环境python -m venv venv激活虚拟环境Windowsvenv\Scripts\activateLinux/macOS 使用source venv/bin/activate在激活的虚拟环境中重新执行 PyTorch 和 Ultralytics 的安装命令。在 PyCharm 中记得把项目解释器指向venv目录下的 Python。这样能保证你的项目环境是干净封闭的出问题时直接删掉venv文件夹重建即可不会影响系统全局环境。7. 最佳实践与工程建议7.1 使用虚拟环境隔离项目如上文所述创建虚拟环境是 Python 项目开发的基本素养。建议所有 YOLO 项目都独立创建虚拟环境并定期执行pip freeze requirements.txt将依赖导出方便后续在其他机器上快速复现环境。7.2 固定依赖版本在项目工程化交付时建议不要使用pip install ultralytics这类不对版本做约束的安装方式否则未来 Ultralytics 做重大升级后你的历史代码可能无法运行。推荐在requirements.txt中固定版本例如ultralytics8.3.0 torch2.5.1 torchvision0.20.1 numpy2.1.0固定版本后新环境执行pip install -r requirements.txt即可完整复现统一环境。7.3 推理时的资源控制CPU 推理虽然可以跑通 Demo但资源占用不可忽视。传递给model.predict()的参数可以显著影响性能imgsz640限制输入图片尺寸尺寸越大计算量越大推理越慢。conf0.5提高置信度阈值可以过滤掉很多低置信度的误检框让结果更干净。batch1CPU 环境下批量处理不会带来明显加速反而可能因为内存不足导致卡死保持默认或设置为 1 即可。7.4 当前环境的学习边界需要明确的是在 CPU 环境下适合做的是模型推理而不是模型训练。如果你尝试用 CPU 训练 YOLO 模型一个几万张图片的数据集可能需要数十天才能跑完。因此建议你后续学习训练时优先考虑以下方案使用 Google Colab 免费 GPU。租用云服务器 GPU 实例。在自己电脑上安装 NVIDIA 显卡并配置 CUDA 环境。在 CPU 环境下专注推理和预测能帮你快速理解目标检测的业务闭环但不要陷入“本地训练”的泥潭。7.5 深入学习建议在你成功跑通首次预测后下一步可以这样走阅读ultralytics官方文档了解predict、train、val、export四种核心模式的用法。自己标注一批数据用 YOLO 格式整理好尝试训练一个自定义检测器。学习如何将训练好的模型导出为 ONNX 格式再借助 ONNX Runtime 部署到 Web 端或移动端这是目前工业落地最常用的链路之一。8. 总结与下一步学习路线到这里你已经在Python 3.11 CPU的环境下成功地把 YOLO 环境配置完成并跑通了第一次目标检测预测。整个过程听起来简单但其中其实涉及了 Python 版本选择、PyTorch CPU 版安装、Ultralytics 框架调用、权重文件下载等多个环节。任何一个环节出错都可能让新手卡住半天所以你现在已经比刚打开这篇文章时强了不少。接下来你可以找一张更复杂的图片比如街景、多人合照或者动物图片重新跑一遍代码观察不同置信度阈值下检测结果的变化。你换用yolo11n.pt对比一下和 v8 的差异看看在 CPU 上的推理速度有没有变化。这些动手实验能帮助你建立起对目标检测模型的直观感受。如果你在学习过程中遇到了文章里没有提到的问题欢迎在评论区描述你的操作步骤和报错信息我会尽量帮你排查。如果这篇文章对你有帮助也可以把它收藏备用下次遇到环境问题可以直接翻出来对照解决。
返回列表