YOLO-从环境配置到ONNX模型输出(超详细,纯小白向)

在这里插入图片描述
推荐阅读WIKI:
https://wiki.seeedstudio.com/real_time_yolo_object_detection_using_recamera_based_on_cpp/
Github源码库
https://github.com/Seeed-Studio/OSHW-reCamera-Series
内含超多AI Sensing相关资料,欢迎关注和讨论!将视觉检测算法真正部署于终端,将你的idea应用于生活。

在本地电脑上配置深度学习环境

一、配置Conda环境

使用虚拟环境进行任务运行是非常重要的,既能保护主机,又能避免不同的软件包之间冲突>

Windows 下载Anaconda

有两种下载方式一是官网下载,二是镜像下载。官网下载太慢一般都是用镜像下载
1.官网下载:conda官网(Download Anaconda Distribution | Anaconda)
https://www.anaconda.com/download
在这里插入图片描述

2.镜像下载:清华开源镜像
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
在这里插入图片描述

安装Anaconda

注意事项:
1.选择为所有用户授权
在这里插入图片描述

配置环境变量

将如下路径添加到系统path,这里的路径为前面anaconda的安装路径,我的安装路径为E:\anaconda3,如果不同替换为自己的安装路径即可

E:\ANACONDA
E:\ANACONDA\Scripts
E:\ANACONDA\Library\mingw-w64\bin
E:\ANACONDA\Library\bin

在系统搜索栏,搜索“系统属性”,选择系统变量path,点击编辑,点击新建

在这里插入图片描述
在这里插入图片描述

检查是否配置成功

win+r 然后输入cmd打开终端页面,输入下边几条指令
conda --version
conda info

在这里插入图片描述

Linux 下载Anaconda

在Linux系统上安装完整的Anaconda(而不是Miniconda)的步骤如下:

  1. 下载Anaconda安装脚本
    在这里插入图片描述

访问 Anaconda官方下载页面 获取最新的Linux安装脚本链接,或者直接使用以下命令下载.官网的最新版本可以向下兼容低等级的Python,如果想下载旧版本可以前往上文的清华源镜像站。

wget https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-x86_64.sh

请根据你的需求选择合适的版本。

  1. 运行安装脚本
    下载完成后,运行安装脚本:
bash Anaconda3-2025.06-0-Linux-x86_64.sh
  1. 阅读并接受许可协议
    安装脚本会显示许可协议,按 Enter 键滚动阅读,然后输入 yes 接受协议。

  2. 选择安装路径
    安装程序会提示你选择安装路径。默认路径是 ~/anaconda3,你可以按 Enter 使用默认路径,或指定其他路径。

  3. 初始化Anaconda
    安装完成后,安装程序会询问是否要初始化Anaconda。输入 yes,这样Anaconda会自动将路径添加到你的 ~/.bashrc 文件中。
    Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no] [no] >>> yes

  4. 激活Anaconda
    为了使更改生效,你需要重新加载 ~/.bashrc 文件:

source ~/.bashrc
  1. 验证安装
    你可以通过以下命令验证Anaconda是否安装成功:
conda --version

如果安装成功,会显示Conda的版本号。

二、配置CUDA环境

创建虚拟环境

创建虚拟环境:

conda create --name tensorflow python=3.11

tensorflow可以改成你想要的名字
Python的版本也可以修改

查看环境列表:

conda env list

激活环境:

conda activate (输入你的环境名字)

之后的环境配置统一进入虚拟环境再按 conda install 来下载

Pytorch,CUDA,Python版本兼容表

在这里插入图片描述


CUDA配置

在下载CUDA与Torch之前,先查看显卡驱动
终端输入:

nvidia-smi

在这里插入图片描述

进入英伟达官网选择适合的版本
https://developer.nvidia.com/cuda-toolkit-archive

Windows CUDA

在这里插入图片描述

之后执行exe文件安装就好

在这里插入图片描述

选择安装位置 接着下一步,默认即可,但是要记住这个地址,下面手动配置环境变量要用到。
在这里插入图片描述

之后在系统配置环境变量
在这里插入图片描述

终端输入来检测是否安装成功

nvcc -V

在这里插入图片描述

Linux CUDA

在Nvidia Toolkit官网下载时选择Linux runfile选项

在这里插入图片描述

执行下面两行代码,进行下载与运行

wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo sh cuda_12.4.0_550.54.14_linux.run

终端输入来检测是否安装成功

nvcc -V

在这里插入图片描述

三、配置Pytorch环境

进入pytorch官网选择合适的版本下载(查看前面的版本对照图)
官网地址:https://pytorch.org/
我们选用合适自己电脑配置的指令进行下载,我使用的是Python3.11, CUDA 12.4 所以要转到先前版本里面下载。

在这里插入图片描述
在这里插入图片描述

# Windows 与 Linux 通用
# CUDA 11.8
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1  pytorch-cuda=11.8 -c pytorch -c nvidia
# CUDA 12.1
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.1 -c pytorch -c nvidia
# CUDA 12.4
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia
# CPU Only
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 cpuonly -c pytorch

查看版本 以下图为例,torch版本为2.1.2+cu121,cu121即表示支持cuda12.1的torch版本

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

在这里插入图片描述

四、配置YOLO环境

此章节以Yolov8为例进行讲解,但适应于所有yolo算法,只需修改指令命令行指向的模型即可。

#启动虚拟环境 查看环境配置
conda activate yolov8 (yolov8换成你的环境名字)
conda list

Yolov8所需的函数库如下:
对照自己缺少的库,进行conda install 进行安装。

# Ultralytics requirements
# Usage: pip install -r requirements.txt

# Base ----------------------------------------
matplotlib>=3.2.2
numpy>=1.22.2 # pinned by Snyk to avoid a vulnerability
opencv-python>=4.6.0
pillow>=7.1.2
pyyaml>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.64.0

# Logging -------------------------------------
# tensorboard>=2.13.0
# dvclive>=2.12.0
# clearml
# comet

# Plotting ------------------------------------
pandas>=1.1.4
seaborn>=0.11.0

# Export --------------------------------------
# coremltools>=6.0,<=6.2  # CoreML export
# onnx>=1.12.0  # ONNX export
# onnxsim>=0.4.1  # ONNX simplifier
# nvidia-pyindex  # TensorRT export
# nvidia-tensorrt  # TensorRT export
# scikit-learn==0.19.2  # CoreML quantization
# tensorflow>=2.4.1  # TF exports (-cpu, -aarch64, -macos)
# tflite-support
# tensorflowjs>=3.9.0  # TF.js export
# openvino-dev>=2023.0  # OpenVINO export

# Extras --------------------------------------
psutil  # system utilization
py-cpuinfo  # display CPU info
# thop>=0.1.1  # FLOPs computation
# ipython  # interactive notebook
# albumentations>=1.0.3  # training augmentations
# pycocotools>=2.0.6  # COCO mAP
# roboflow

安装完配置文件在安装一下yolov8在python>=3.8版本必要安装包

pip install ultralytics

在Ultralytics官网下载模型权重文件
https://docs.ultralytics.com/zh/models/yolov8/

下载训练模型,推荐yolov8s.pt或者yolov8n.pt,模型小,下载快,下载完成后,将模型放在主文件夹下,

YOLOv8 可以在命令行界面(CLI)中直接使用,使用yolov8自带经典图片进行测试:首先cd进入yolov8主文件夹下,运行下面命令

#可以选择直接从Github下载yolo项目库,不下载,如果依赖库齐全,模型文件齐全也能执行检测,缺少的部分会自动下载
git clone https://github.com/ultralytics/ultralytics.git

无显卡驱动
yolo predict model=yolov8n.pt source='ultralytics/assets/bus.jpg' device=cpu

有显卡驱动(看扩展的部分,安装gpu版本torch才能运行)
yolo predict model=yolov8n.pt source='ultralytics/assets/bus.jpg' device=0
#可以修改source成你想检测的图片

我的结果保存在runs\detect\predict4中,你们的看Results saved to 存放地址,结果如下图

在这里插入图片描述
在这里插入图片描述

如果出现上面图片即成功

在本地电脑上训练YOLO模型

首先在yolov8主文件夹内创建data文件夹,创建一个data.yaml文件:

train: ../train/images  #//xxx/xxx为训练集图片根目录地址
val: ../valid/images
test: ../test/images

nc: 3 #标签数量
names: ['Chair', 'Sofa', 'Table'] #标签名称

conda在主文件夹下运行下面命令:
关于如何制作自己的数据集,请移步"数据集制作"教程

yolo train data=data/data.yaml model=yolov8s.pt epochs=300 imgsz=640 batch=8 workers=0 device=cpu

data为yaml配置文件
model为下载的模型,放在主文件下
epochs为训练轮数
imagez为训练时ai看到的图片大小,检查大图片建议使用640,小图片可以320 越大越吃性能
batch为一轮训练中每一次放入图片数量,越大越快效果越好,但是对性能要求越高
device为使用的设备,使用cpu练就写cpu,使用显卡大多数都是0,多显卡就0,1,2,3,...多少显卡往后写多少

运行出现下面效果即为成功
在这里插入图片描述

得到的模型权重文件地址在输出日志中会显示出来,我的是 runs/detect/train/weights/best.pt

训练完成后转化成onnx模型

执行以下Python代码将训练好的YOLOv8模型导出为ONNX格式,并修改IR版本为8,opset版本为17,同时进行性能测试:

from ultralytics import YOLO

import onnx

# 加载PyTorch模型
model = YOLO("yolov8_best.pt")

# 2. 导出ONNX模型(使用Ultralytics支持的参数)
model.export(
    format="onnx",
    opset=17,          # 指定Opset版本
    simplify=True,     # 启用模型简化
    imgsz=640,         # 固定输入尺寸
    dynamic=False,     # 禁用动态维度
    batch=1            # 单批次推理
)

# 3. 后处理修改IR版本
def set_onnx_ir_version(onnx_path, ir_version=8):
    model = onnx.load(onnx_path)
    model.ir_version = ir_version
    onnx.save(model, onnx_path)

# 4. 修改导出的ONNX文件的IR版本
set_onnx_ir_version("yolov8_best.onnx")

# Load the exported ONNX model
#onnx_model = YOLO("yolov8_best.onnx")

# Run inference
#results = onnx_model("https://ultralytics.com/images/bus.jpg")


'''
from ultralytics import YOLO
'''
# 加载模型(显式指定任务类型)
onnx_model = YOLO("yolov8_best.onnx", task="detect")  # 关键修改:添加task参数

# 运行本地图片推理(自动保存+显示)
results = onnx_model(
    "test_chair.jpg",  # 改为你的本地图片
    save=True,         # 自动保存结果到runs/detect/exp
    show=True,         # 弹出结果窗口
    conf=0.3,          # 调低置信度阈值提高召回率
    imgsz=640,         # 指定推理尺寸(与导出时一致)
    device='cpu'      # 强制使用CPU(如需GPU改为0)
)

运行后会在当前目录下生成一个名为 yolov8_best.onnx 的文件,这就是转换后的ONNX模型。

<think>好的,用户之前询问了两个模型在树莓派上的性能表现,现在他们想了解这两个模型的学习成本和部署难度,尤其是针对零基础的小白。我需要从之前的回答中提取相关信息,并结合零基础用户的视角来分析。 首先,回顾之前的回答,轻量级方案是OpenCV 4.5.5 + YOLOv5s,高性能方案是OpenCV 4.7.0 + YOLOv8n。两者的部署复杂度和学习成本应该有所不同。 用户提到“小白零基础”,所以需要强调学习过程中可能遇到的难点,比如环境配置、依赖项安装、模型获取等。同时,布置难度可能涉及编译OpenCV、处理依赖冲突,以及运行时的资源占用问题。 轻量级方案在之前的回答中部署简单,使用预编译包,而高性能方案需要从源码编译OpenCV,这对新手来说可能比较困难。需要详细说明两者的步骤差异,以及可能出现的错误,比如编译时的NEON支持问题。 学习成本方面,YOLOv5s和YOLOv8n的使用是否需要编程基础?可能需要Python的基本知识,但社区支持好的话,可能有更多教程。OpenCV的API使用是否友好,是否有足够的文档和示例代码。 还需要考虑用户的实际操作步骤,比如安装Python、配置虚拟环境,使用pip安装依赖,这些对新手来说是否容易上手。预训练模型的获取方式,是否需要自己训练,或者可以直接下载ONNX模型。 可能用户没有提到的深层需求是希望有一个简单易懂的指南,或者是否需要额外的硬件设备(比如散热装置),以及遇到问题时的求助渠道,比如社区论坛、文档支持等。 总结下来,回答需要分点比较两个方案的学习成本和布置难度,突出各自的优缺点,并给出针对小白的建议,比如推荐从轻量级方案入手,遇到问题如何解决,是否需要额外支持等。同时,语言要尽量通俗,避免技术术语过多,必要时提供具体的命令示例和解决常见问题的方法。</think>以下是从零基础用户角度对两个方案的学习成本与部署难度的详细分析,结合实际操作路径和常见问题说明: --- ### **一、轻量级方案:OpenCV 4.5.5 + YOLOv5s(ONNX)** #### **学习成本分析** 1. **核心知识要求** - **最低门槛**:了解Python基础语法(能运行`.py`文件即可)。 - **关键技能**: - 使用`pip`安装包(如`pip install opencv-python`)。 - 理解“模型下载→加载→推理”的基本流程(复制代码即可)。 - **典型代码段**: ```python import cv2 net = cv2.dnn.readNetFromONNX("yolov5s.onnx") ``` 2. **学习资源友好度** - 社区教程丰富(GitHub/YOLOv5官方提供现成ONNX导出教程)。 - 报错解决方案易搜索(例如“OpenCV加载ONNX模型失败”有明确修复指引)。 #### **部署难度详解** 1. **步骤拆解** - **Step 1**:安装系统基础环境(Ubuntu预装Python 3.10) ```bash sudo apt update && sudo apt install python3-pip ``` - **Step 2**:安装OpenCV轻量版(无需编译) ```bash pip install opencv-python==4.5.5.64 ``` - **Step 3**:下载YOLOv5s预训练ONNX模型(官方直接提供) ```bash wget https://github.com/ultralytics/yolov5/releases/download/v6.2/yolov5s.onnx ``` 2. **小白易踩的坑** - **问题1**:`ImportError: libGL.so.1`缺失 **修复命令**: ```bash sudo apt install libgl1 ``` - **问题2**:ONNX模型与OpenCV版本不兼容 **解决方案**:使用YOLOv5官方推荐的`opencv-python>=4.5.4`。 --- ### **二、高性能方案:OpenCV 4.7.0 + YOLOv8n(ONNX Runtime)** #### **学习成本分析** 1. **核心知识要求** - **进阶门槛**:需理解Linux编译流程(CMake/Make工具链)。 - **关键技能**: - 处理依赖冲突(如卸载旧版OpenCV)。 - 调试编译错误(需阅读CMake日志)。 2. **学习曲线陡峭点** - 编译OpenCV需配置`-D`参数(如`-DWITH_OPENMP=ON`)。 - YOLOv8的输出层解析逻辑与YOLOv5不同(需修改后处理代码)。 #### **部署难度详解** 1. **步骤拆解** - **Step 1**:编译OpenCV 4.7.0(耗时约2小时) ```bash cmake -DCMAKE_BUILD_TYPE=RELEASE \ -DENABLE_NEON=ON \ -DBUILD_opencv_dnn=ON .. make -j4 # 树莓派4B建议不超过-j4 ``` - **Step 2**:安装ONNX Runtime加速库 ```bash pip install onnxruntime==1.14.1 ``` - **Step 3**:转换YOLOv8模型为OpenCV兼容格式 ```python from ultralytics import YOLO model = YOLO("yolov8n.pt") model.export(format="onnx", dynamic=True) # 需修改输出节点名 ``` 2. **小白易踩的坑** - **问题1**:编译时报错`NEON support required` **修复方法**:确认CMake参数包含`-DENABLE_NEON=ON`。 - **问题2**:YOLOv8输出张量形状不兼容OpenCV DNN **解决方案**:使用开源工具[`onnx-simplifier`](https://github.com/daquexian/onnx-simplifier)优化模型结构: ```bash pip install onnx-simplifier && python -m onnxsim yolov8n.onnx yolov8n_sim.onnx ``` --- ### **三、零基础用户适配度对比表** | 评估维度 | 轻量级方案 | 高性能方案 | |------------------|-------------------------------------|-------------------------------------| | **环境配置** | 一键安装(apt/pip) | 需手动编译+处理依赖冲突 | | **代码修改量** | 无需修改(直接调用官方示例) | 需调整后处理逻辑(约20行代码) | | **文档完整性** | 完善(社区有大量复制粘贴级教程) | 分散(需结合OpenCV/YOLOv8两套文档) | | **首次部署耗时** | 10-30分钟 | 3-6小时(含编译和调试) | | **求助成功率** | 高(90%问题可通过搜索解决) | 中(需在GitHub提交Issue) | --- ### **四、针对小白的简化部署指南** #### **轻量级方案极简路线** 1. 安装基础软件: ```bash sudo apt install python3-pip libgl1 pip install opencv-python==4.5.5.64 ``` 2. 下载模型和示例代码: ```bash git clone https://github.com/ultralytics/yolov5 cp yolov5/models/yolov5s.onnx . ``` 3. 运行检测脚本: ```bash python3 yolov5/detect.py --weights yolov5s.onnx --source 0 # 调用摄像头 ``` #### **高性能方案避坑技巧** 1. 使用预编译脚本(推荐[这个仓库](https://github.com/Qengineering/Install-OpenCV-Raspberry-Pi-4)): ```bash wget https://raw.githubusercontent.com/Qengineering/Install-OpenCV-Raspberry-Pi-4/main/OpenCV-4-7-0.sh chmod +x OpenCV-4-7-0.sh && ./OpenCV-4-7-0.sh ``` 2. 模型转换后必须验证: ```python import cv2 net = cv2.dnn.readNetFromONNX("yolov8n_sim.onnx") if net.empty(): print("模型加载失败!检查OpenCV版本和模型路径") ``` --- ### **五、学习路径推荐** 1. **完全零基础**: - 先掌握轻量级方案,使用现成代码实现基础检测。 - 推荐学习资源:[廖雪峰Python教程](https://www.liaoxuefeng.com/wiki/1016959663602400) + [OpenCV官方示例](https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html)。 2. **有简单编程经验**: - 尝试高性能方案,重点学习: - Linux编译基础(推荐《鸟哥的Linux私房菜》) - ONNX模型结构可视化(使用[Netron](https://netron.app/)工具) --- ### **六、总结建议** - **首选轻量级方案**:适合“只想快速跑通效果”的用户,从下载到运行最快仅需10分钟。 - **慎选高性能方案**:除非有明确精度需求,否则编译和调试过程可能打击学习信心。 - **折中方案**:使用轻量级OpenCV + 高性能YOLOv8n模型(需模型格式转换工具链)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值