英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决(涉及numpy、scipy、torchvision等)以及直观体验使用Yolov8目标检测的过程(CLI命令行操作、无需代码)

本文详细记录了如何在Python环境中安装和配置Yolov8,包括解决依赖问题、CLI命令行操作、训练过程中的报错处理以及目标检测应用。作者通过实例演示了训练模型、预测和使用自带模型的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、说明

本文以记录分享、体验/体会如何使用Yolov8为主,实现搭建Yolov8环境以及CLI命令行执行训练、使用模型进行目标检测。

2、操作记录

2.1、开始安装yolov8

2.1.1、安装yolov8

官方链接:快速开始 - Ultralytics YOLOv8 文档,开始输入第一条指令,等待第一个报错吧hhh

sudo pip install ultralytics
2.1.2、执行结果

numpy1.21.5无法卸载

尝试手动卸载numpy1.21.5,发现根本就没有,Found existing installation是1.26.3,既然系统找不到旧的且能识别出新的numpy版本,那这个卸载报错先不管。

onnx没有安装

ERROR:pip's dependency resolver does not currently take into account all the packages that are installed.This behaviour is the source of the following dependency conflicts.onnx-graphsurgeon 0.3.12 requires onnx,which is not installed.

这个错误信息表示pip的依赖解析器没有考虑到所有已安装的包。这种行为导致了以下依赖冲突:onnx-graphsurgeon 0.3.12 需要 onnx,但未安装。

要解决这个问题,需要先安装 onnx 包,使用以下命令进行安装:

pip install onnx

2.1.3、再次安装yolov8

也就是再次执行sudo pip install ultralytics,不报错了。

下图同时显示了安装yolov8涉及到的其他包的版本,后面会用到。

2.1.4、查看yolov8版本
yolo version

有一个关于torchvision的警告,因为是警告此时我没有管它,后面还是要处理,如果你不希望踩坑可以看完后续再操作。

想起一个笑话,如果在悬崖边放置“Warning”的标识,程序员会跳下去。

2.2、关于yolov8的CLI命令行操作介绍

关于CLI操作的官方链接:Configuration - Ultralytics YOLOv8 Docs

2.2.1、语法

2.2.2、TASK任务
  • Detect:目标检测
  • Segment:分割
  • Classify:分类
  • Pose:姿态估计

2.2.2、MODE模式
  • Train:使用自定义的数据集训练yolov8模型
  • Val:训练后验证yolov8模型
  • Predict:使用训练的模型预测新的图片or视频
  • Export:导出yolov8模型用于部署
  • Track:实时使用yolov8模型跟踪目标
  • Benchmark:性能测试

2.2.3、ARGS参数

参数是以键值对的形式写在CLI的,表格很长只截取一些,想要深入了解请进入官网。 

2.3、初次尝试yolov8训练

2.3.1、执行训练
yolo train data=coco128.yaml model=yolov8n.pt epochs=10 lr0=0.01

默认Task任务是目标检测,Mode模式是train训练,data和model指的是配置文件和模型,epochs代表训练的次数,lr0为初始学习率用来控制模型更新的幅度。

2.3.2、输出信息梳理及报错处理

  • 提示torchvision有个警告
  • 下载yolov8n.pt这个文件,根据网络需要等很久。
  • engine/trainer,然后发现数据集coco128.yaml没有图片,于是开始下载coco128.zip并解压。

一个关于模型的表格,下方汇总的summary信息是“Model summary:255 layers,3157200 parameters,3157184 gradients, 8.9 GFLOPs” ,以下解释来自AI:

  • 255 layers: 表示模型中包含的层数,即神经网络的深度。一个层可以是一个全连接层、卷积层、池化层等。
  • 3157200 parameters: 表示模型中的参数数量。参数是模型需要学习的权重和偏置值,用于对输入数据进行预测或分类。
  • 3157184 gradients: 表示模型中梯度的数量。梯度是在反向传播过程中计算的,用于更新参数以最小化损失函数。
  • 8.9 GFLOPs: 表示模型的计算复杂度,即每秒可以进行的浮点运算次数(Giga Floating Point Operations Per Second),较高的GFLOPs值通常意味着模型更复杂,但也可能需要更多的计算资源来进行训练和推理。

出现警告,"UserWarning: A NumPy version >=1.17.3 and <1.25.0 is required for this version of SciPy (detected version 1.26.3)",表示当前使用的SciPy版本需要NumPy版本在1.17.3到1.25.0之间,但是现在是1.26.3。如果NumPy版本不在这个范围内,可能会导致程序运行出现问题。

根据2.1.3小节,yolov8需要的numpy>=1.22.2,所以进一步来说需要1.22.2~1.25.0之间的numpy版本。但是scipy和numpy的版本不兼容并不意味着一定要从scipy的角度降级numpy,也可以升级scipy试试。

pip install --upgrade scipy

非常棒,把scipy从1.8.0升级到1.11.4,同时也满足了1.11.4对于numpy版本在1.21.6~1.28.0的要求,如下图。(这个操作是执行完训练之后,另开一个terminal处理的)

接下来是训练过程中的报错:

报错RuntimeError: Couldn't load custom C++ ops. This can happen if your PyTorch and torchvision versions are incompatible, or if you had errors while compiling torchvision from source. For further information on the compatible versions, check https://github.com/pytorch/vision#installation for the compatibility matrix. Please check your PyTorch version with torch.__version__ and your torchvision version with torchvision.__version__ and verify if they are compatible, and if not please reinstall torchvision so that it matches your PyTorch install.

这个错误信息表示在运行YOLO模型时,无法加载自定义的C++操作。这可能是因为PyTorch和torchvision的版本不兼容,或者在从源代码编译torchvision时出现了错误。为了解决这个问题,请访问GitHub - pytorch/vision: Datasets, Transforms and Models specific to Computer Vision检查您的PyTorch版本和torchvision版本是否兼容。如果不兼容,请重新安装torchvision以使其与您的PyTorch安装相匹配。

第一个原因:PyTorch和torchvision的版本不兼容。

访问报错提供的网址得到如下表格,根据2.1.3得到torch是2.1.2,torchvision是0.16.2,python是3.10,满足版本要求。

第二个原因:从源代码编译torchvision时出现了错误。

很可能是第二个原因,而且上面我就见到过关于torchvision的报错,只是当时它还是个警告...

以为是没有libjpeg或libpng,但是提示已安装并且是最新版。

那可能是安装torchvision的过程中出错了,需要reinstall torchvision,懒得卸载、安装两步,尝试了下upgrade,如果有最新版本就一个指令完成卸载、安装,已安装最新版本再说。

于是执行:

pip install --upgrade torchvision

下图展示了yolo version警告——执行安装新版本torchvision——解决yolo version警告后正常的全过程。有一个比较奇怪的问题是显示当前torchvision版本为0.15.1更新为0.16.2,但是从2.1.3来看torchvision版本本来就是为0.16.2,不知道为什么是这样。

至此,解决了初次执行yolov8训练指令过程中的所有报错。

2.4、再次执行yolov8训练-成功

训练10次的过程,一共是0.376小时≈22分钟。

训练的结果汇总,从列表看到自带了很多常见的目标,比如person、bicycle、car、airplane、bus等等,"Results saved to runs/detect/train2",就是说训练的结果保存在这个路径。

2.5、预测/推理

2.5.1、使用自带的模型yolov8n.pt预测

打算测试识别airplane和car,首先要找一些图片保存到/home/lgzn/Pictures/test_car_plane这个文件夹,然后执行:

yolo predict model=yolov8n.pt source='/home/lgzn/Pictures/test_car_plane'

根据输出可以得到:

  • 识别到这10张图片里的airplane、car、bus、traffic light;
  • 有每张图片的识别时间,大约要300ms,耗时非常久;
  • 识别的结果保存在runs/detect/predict2;

打开runs/detect/predict2,查看识别的效果如下:

2.5.2、使用训练的模型预测

在上面2.4小节训练完成后的路径下找到.pt后缀的训练后模型。

可以选择best.pt或last.pt任意一个,放到上面的yolov8n.pt路径下,然后执行2.5.1的yolo预测指令,尝试了best.pt,执行:

yolo predict model=best.pt source='/home/lgzn/Pictures/test_car_plane'

得到的效果和上面是类似的,就不重复贴图了,有关进一步的测试在这个链接:YOLOv8_测试yolov8n.pt,yolov8m.pt训练的时间和效果、推理一张图片所需时间_解决训练时进程被终止killed-优快云博客

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值