YOLOv8_测试yolov8n.pt,yolov8m.pt训练的时间和效果、推理一张图片所需时间_解决训练时进程被终止killed

本文主要是介绍YOLOv8_测试yolov8n.pt,yolov8m.pt训练的时间和效果、推理一张图片所需时间_解决训练时进程被终止killed,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接上篇英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决(涉及numpy、scipy、torchvision等)以及直观体验使用Yolov8目标检测的过程(CLI命令行操作、无需代码)-CSDN博客的进一步测试,只是好奇,建议浏览一下就行,不需要浪费时间走一遍这个流程。

主要内容:

  • yolov8n.pt和yolov8m.pt的训练时间;
  • yolov8n.pt和yolov8m.pt处理一张图片的耗时;
  • yolov8n.pt和yolov8m.pt目标检测的效果对比;
  • 尝试对视频.mp4文件进行目标检测;

1、YOLOv8提供的各种模型

YOLOv8 - Ultralytics YOLOv8 文档

YOLOv8提供了基于目标检测、实例分割、姿态检测、分类等不同类型,不同规格的模型,后缀n、s、m、l、x代表模型的规模逐渐增大。

 不同的模型的性能见下表:

关于mAPval 50-95:

  • Precision,精确度,代表预测为正的样本中有多少正确;
  • Recall,召回率,代表真正为正的样本中有多少被预测为正;
  • AP(Average Precision),平均精度,综合考虑精确度Precision和召回率Recall;
  • mAP(mean Average Precision),多个类别下,平均精度AP的均值。
  • mAPval (mean Average Precision on the validation set),在验证集上的mAP。
  • IOU(Intersection overUnion),交并比,“预测的边框”和“真实的边框”的交集/并集,为1代表完全重叠;
  • mAPval 50-95,代表在验证集上IOU=50~95之间的mAP;

关于速度:

  • CPU ONNX指的是在CPU下,使用ONNX这个模型格式推理的速度;
  • A100 TensorRT指的是在英伟达A100显卡GPU下,使用TensorRT推理的速度;

所以总结下就是,模型越大,效果越好,但推理的时间也越久;

2、yolov8n.pt和yolov8m.pt的训练时间

2.1、yolov8n.pt的训练时间

yolo train data=coco128.yaml model=yolov8n.pt epochs=10 lr0=0.01

 训练10次耗时0.376小时≈22分钟。

2.2、yolov8m.pt的训练时间

yolo train data=coco128.yaml model=yolov8m.pt epochs=10 lr0=0.01

如果只是把yolov8n.pt改成yolov8m.pt,且运行设备的内存不够大(我用的是8G内存),就会出现刚开始训练就终止Killed的问题,像这样:

减小batch可以解决这个问题,默认是batch=16,我修改成batch=4之后可以正常训练,batch=-1是可以自动适配硬件这个还没有尝试。

yolo train data=coco128.yaml model=yolov8m.pt epochs=10 lr0=0.01 batch=4

训练的过程中打开jtop,关于安装jtop及可能遇到的问题在这里Jetson Orin Nano_安装jtop指令(遇到循环提示重启服务的问题)、查看系统运行情况及基本信息-CSDN博客。

可以从下图看到,即便是batch=4,6个CPU基本满负荷,内存占用大概是5.5/7.4≈74%.

最终跑完,一共耗时1.9个小时。

3、yolov8n.pt和yolov8m.pt处理一张图片的耗时

3.1、yolov8n.pt处理一张图片的耗时

一共有10张图片,平均预处理preprocess=7.3ms,推理interence=318.4ms,后处理postprocess=6ms,总计331.7ms;

3.2、yolov8m.pt处理一张图片的耗时

同样的这10张图片,平均预处理preprocess=5.6ms,推理interence=1135.1ms,后处理postprocess=3.4ms,总计1144.1ms,差不多是yolov8n.pt的3.5倍。

4、yolov8n.pt和yolov8m.pt目标检测的效果对比

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

对比来说yolov8m.pt效果确实明显要好,比如下图识别出car的置信度变高了,还多识别出2个bus,错误识别的traffic light也没有了。

5、尝试对视频.mp4文件进行目标检测

对图片、视频的检测并没有很大的不同,只是修改个识别的来源source:

yolo predict model=yolov8m.pt source='/home/lgzn/Pictures/video_test/ollie.mp4'

因为看到训练的日志class里面有person和skateboard这两个类别,所以试试看这个video,skateboard识别出来了并且置信度是0.9,满意。

总有一天,我的ollie会过障碍,然后一立、两立;

这篇关于YOLOv8_测试yolov8n.pt,yolov8m.pt训练的时间和效果、推理一张图片所需时间_解决训练时进程被终止killed的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/595086

相关文章

SpringBoot整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过