在 Conda 环境中快速上手 Ultralytics YOLOv10:环境搭建、安装与推理实战指南
【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10
本指南以 docs/en/guides/conda-quickstart.md 为核心脉络,系统讲解如何在本仓库(YOLOv10: Real-Time End-to-End Object Detection, NeurIPS 2024)项目中使用 Conda 创建隔离的深度学习环境、从 conda-forge 安装基于 Ultralytics 的 YOLOv10、处理 CUDA 依赖冲突,并借助 Docker 的 Conda 镜像一键进入可运行环境。读完本文,你将掌握一套可复现、可迁移的 Conda 环境搭建流程,并能直接运行 YOLOv10 的推理与训练。
为什么选择 Conda 来运行 YOLOv10
Conda 是一款开源的包与虚拟环境管理系统,与pip相比,它的核心优势在于环境隔离:每个环境拥有独立的 Python 解释器与依赖树,互不干扰,非常适合深度学习这类依赖繁重(PyTorch、CUDA 运行时、OpenCV、NumPy 等)且版本敏感的场景。
本仓库官方 README 在 Installation 一节也明确推荐使用 conda 虚拟环境:
conda create -n yolov10 python=3.9 conda activate yolov10 pip install -r requirements.txt pip install -e .这套推荐流程与下文讲解的 conda-forge 安装方式互为补充:前者适合从源码开发本仓库(需要requirements.txt中的固定版本依赖),后者适合直接以成品包方式使用 Ultralytics 及其 YOLOv10 集成。两套路径都值得掌握。
前置条件
开始之前,请确保系统已安装Anaconda或Miniconda。Miniconda 更轻量,只包含 conda 本体与少量基础包,对深度学习项目更为推荐。若尚未安装,请先自行完成 Anaconda/Miniconda 的安装,并确认终端中可以正常执行conda命令。
创建并激活 Conda 环境
基础创建命令
打开终端,执行以下命令创建一个全新的环境,并指定 Python 版本:
conda create --name ultralytics-env python=3.8 -y参数说明:
--name ultralytics-env(可简写为-n):环境名称,可自定义;python=3.8:指定解释器版本。注意,pyproject.toml 中声明requires-python = ">=3.8",即 3.8 及以上版本均可;本仓库 README 示例使用 Python 3.9,生产环境建议至少使用 3.9~3.11;-y:跳过交互式确认,直接执行。
创建完成后激活环境:
conda activate ultralytics-env激活后,终端提示符前会出现环境名(如(ultralytics-env)),此后所有安装与 Python 命令都将运行在该隔离环境中。
验证环境
激活后可以执行以下命令确认环境状态:
python --version conda env list # 列出所有环境,当前环境带 * 标记通过 conda-forge 安装 Ultralytics 包
在激活的环境中执行以下命令,从 conda-forge 频道安装 Ultralytics:
conda install -c conda-forge ultralytics-c conda-forge指定包源频道。conda-forge 社区维护的ultralytics配方会自动带入核心依赖,包括 pyproject.toml 中声明的基础依赖(如torch>=1.8.0、torchvision>=0.9.0、opencv-python>=4.6.0、matplotlib、pyyaml、scipy、pandas、seaborn、tqdm等)。安装完成后,可通过以下命令验证导入是否正常:
python -c "import ultralytics; print(ultralytics.__version__)"本仓库所基于的代码版本在 ultralytics/init.py 中声明为8.1.34,并且从顶层导出YOLOv10类:
from ultralytics.models import RTDETR, SAM, YOLO, YOLOWorld, YOLOv10这意味着安装完成后即可直接通过from ultralytics import YOLOv10使用本仓库的核心模型。
CUDA 环境下的安装建议
如果你在 CUDA 环境中工作,直接安装ultralytics可能与预装的 PyTorch/CUDA 运行时产生依赖冲突。官方建议将ultralytics、pytorch、pytorch-cuda一并安装,让 conda 的求解器统一解析版本:
conda install -c pytorch -c nvidia -c conda-forge pytorch torchvision pytorch-cuda=11.8 ultralytics要点解读:
-c pytorch -c nvidia -c conda-forge:依次声明 PyTorch 官方频道、NVIDIA 频道与 conda-forge 频道,确保能同时解析 PyTorch、CUDA 运行时与 Ultralytics 包;pytorch-cuda=11.8:显式指定 CUDA 11.8 运行时,这是本仓库 Docker 镜像中采用的版本(见下文),具体取值应与你显卡驱动支持的 CUDA 版本匹配;- 一次安装三个包而非逐个安装,可让 conda 在解析阶段就消除底层
libcudnn、cudatoolkit等二进制库的版本冲突。
本仓库的 docker/Dockerfile-conda 也采用了同样的组合安装策略:
RUN conda config --set solver libmamba && \ conda install pytorch torchvision pytorch-cuda=11.8 -c pytorch -c nvidia && \ conda install -c conda-forge ultralytics mkl其中额外安装了mkl,用于规避推理时可能出现的OSError: libmkl_intel_lp64.so.2: cannot open shared object file这类 MKL 动态库缺失问题——这也是在 conda 环境运行 Ultralytics 时常见的坑之一。
首次运行:用 YOLOv10 完成图像推理
安装完成后即可开始使用目标检测等能力。基于本仓库代码,推荐使用YOLOv10类完成推理:
from ultralytics import YOLOv10 # 从 Hugging Face 加载预训练权重(n/s/m/b/l/x 六种规格任选) model = YOLOv10.from_pretrained('jameslahm/yolov10n') # 或加载本地权重文件 # model = YOLOv10('yolov10n.pt') results = model.predict(source='path/to/image.jpg') # 执行推理 results[0].show() # 显示第一张图的标注结果指南原文档中给出的通用 Ultralytics 写法同样可用:
from ultralytics import YOLO model = YOLO('yolov8n.pt') # 初始化模型 results = model('path/to/image.jpg') # 执行推理 results[0].show() # 显示第一张图的结果在推理底层,本仓库的 ultralytics/models/yolov10/predict.py 中的YOLOv10DetectionPredictor.postprocess实现了关键差异:由于 YOLOv10 是端到端(end-to-end)检测模型,推理时不再依赖非极大值抑制(NMS),而是调用ops.v10postprocess直接输出"一对一"预测结果,从而显著降低后处理延迟。这也是本仓库的核心特性(NeurIPS 2024 论文主题),在 Conda 环境安装完成后即可直接体验。
快速试跑仓库自带 Demo
本仓库还自带一个 Gradio 可视化 Demo(app.py),可以交互式体验图像/视频推理。在激活的 Conda 环境中执行:
python app.py # 浏览器访问 http://127.0.0.1:7860启动后可在界面中选择yolov10n/s/m/b/l/x六种模型、调整输入尺寸(320~1280)与置信度阈值(0.0~1.0),Demo 内置了 ultralytics/assets/bus.jpg 与 ultralytics/assets/zidane.jpg 两张示例图片可直接体验。
从源码安装本仓库(README 推荐路径)
如果你希望直接基于本仓库源码开发或复现论文实验,README 提供了另一套 conda 流程,依赖版本以 requirements.txt 为准:
conda create -n yolov10 python=3.9 conda activate yolov10 pip install -r requirements.txt # 安装固定版本依赖(torch==2.0.1、torchvision==0.15.2 等) pip install -e . # 以可编辑模式安装本仓库其中pip install -e .依赖 pyproject.toml 的 setuptools 配置,安装后会注册yolo与ultralytics两个命令行入口(ultralytics.cfg:entrypoint),随后即可使用 CLI 训练、验证与导出:
yolo predict model=jameslahm/yolov10n # 推理 yolo val model=jameslahm/yolov10s data=coco.yaml # 验证 yolo detect train data=coco.yaml model=yolov10n.yaml epochs=500 batch=256 imgsz=640使用带 Conda 环境的 Docker 镜像
如果你偏好 Docker 而非本地管理 conda,Ultralytics 提供了内置 Conda 环境的官方镜像。本仓库的 docker/Dockerfile-conda 展示了该镜像的构建方式:基于continuumio/miniconda3:latest,预装libgl1(OpenCV 运行所需)、Arial字体(用于绘制中文/Unicode 标注),并通过libmamba求解器安装 PyTorch 与ultralytics。
拉取并运行镜像:
# 设置镜像名变量 t=ultralytics/ultralytics:latest-conda # 从 Docker Hub 拉取镜像 sudo docker pull $t # 以 GPU 支持方式运行(全部 GPU) sudo docker run -it --ipc=host --gpus all $t # 指定 GPU 设备(如 2、3 号卡) sudo docker run -it --ipc=host --gpus '"device=2,3"' $t参数说明:
-it:以交互模式进入容器终端,进入后即为激活的 Conda 环境;--ipc=host:共享宿主进程间通信命名空间,可规避 PyTorch DataLoader 多进程在容器中的共享内存问题;--gpus all/--gpus '"device=2,3"':向容器暴露 GPU(需要 NVIDIA Container Toolkit 支持)。
如需在容器内访问宿主机数据集,可挂载本地目录:
sudo docker run -it --ipc=host -v "$(pwd)"/datasets:/usr/src/datasets $t用 libmamba 加速 Conda 安装
深度学习环境的依赖解析(尤其涉及 PyTorch、CUDA 这类大型二进制包时)在默认求解器下可能非常缓慢。libmamba是 Conda 的替代求解器,采用 C++ 实现,具备跨平台、依赖感知(dependency-aware)且显著更快的解析速度。
启用步骤:
安装求解器包(Conda 4.11 及以上版本已内置
libmamba,可跳过此步):conda install conda-libmamba-solver将默认求解器切换为
libmamba:conda config --set solver libmamba
完成以上两步后,后续所有conda install/conda create都将使用libmamba求解,大型依赖环境的创建与安装耗时通常会有明显改善。本仓库的 docker/Dockerfile-conda 在构建镜像时同样执行了conda config --set solver libmamba,说明这是官方推荐的加速做法。
结语
通过本文,你已经掌握了三条相互衔接的路径:一是用 conda-forge 安装 Ultralytics 成品包并处理 CUDA 依赖;二是按 README 推荐流程从源码安装本仓库进行开发与复现;三是借助 Docker 的 Conda 镜像快速获得开箱即用的运行环境,同时可以用libmamba大幅缩短依赖解析时间。接下来可以深入本仓库的 docs/en/index.md 与 ultralytics/models/yolov10 源码,继续探索 YOLOv10 的端到端检测、训练与导出等更多能力。
【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考