YOLO:目标检测模型的训练和推理(简单Demo)

news2024/11/15 12:57:29

作者:CSDN @ _养乐多_

本文将介绍如何训练和推理YOLO模型。使用coco8数据集以一个简单的demo进行示例。

在这里插入图片描述


文章目录

      • 一、准备
          • 1.1 模型类型
          • 1.2 环境配置
      • 二、模型训练和推理
      • 三、讨论


一、准备

1.1 模型类型

YOLO8模型性能数据:

ModelSize (pixels)mAPval 50-95Speed CPU ONNX (ms)Speed A100 TensorRT (ms)Params (M)FLOPs (B)
YOLOv8n64037.380.40.993.28.7
YOLOv8s64044.9128.41.2011.228.6
YOLOv8m64050.2234.71.8325.978.9
YOLOv8l64052.9375.22.3943.7165.2
YOLOv8x64053.9479.13.5368.2257.8

这个表格包含了YOLO模型的各项性能指标,包括模型大小、mAP值、CPU和TensorRT的推理速度、参数数量以及FLOPs。

1.2 环境配置

安装ultralytics库

pip install ultralytics

二、模型训练和推理

Windows系统下,直接运行以下代码。保持网络通畅,因为模型文件和推理图片都是通过网络直接下载并应用的。

from ultralytics import YOLO

if __name__ == '__main__':
    # 加载模型
    # model = YOLO("yolov8n.yaml")  # 从头构建一个新模型
    model = YOLO("yolov8n.pt")  # 加载一个预训练模型(推荐用于训练)

   # 训练
    model.train(data="coco8.yaml", epochs=3, workers=0)  # 使用单进程数据训练模型

    # 验证
    metrics = model.val()  # 评估模型在验证集上的性能
    
    # 推理
    results = model("https://ultralytics.com/images/bus.jpg")  # 对图像进行预测
    model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640, save=True, device=0)

    # 保存模型
    path = model.export(format="onnx")  # 将模型导出为ONNX格式

如果网络有问题,就点击链接下载bus.jpg图片。 也可以自己在网上找一个有很多物体的图片进行推理。
代码如下,

from ultralytics import YOLO

if __name__ == '__main__':
    # 加载模型
    # model = YOLO("yolov8n.yaml")  # 从头构建一个新模型
    model = YOLO("yolov8n.pt")  # 加载一个预训练模型(推荐用于训练)

    # 训练
    model.train(data="coco8.yaml", epochs=3, workers=0)  # 使用单进程数据训练模型

    # 验证
    metrics = model.val()  # 评估模型在验证集上的性能
    
    # 推理
    # 如果网络有问题,就点击链接下载到本地,“https://ultralytics.com/images/bus.jpg”
    results = model("bus.jpg")  # 对图像进行预测
    model.predict("bus.jpg", imgsz=640, save=True, device=0)

    # 保存模型
    path = model.export(format="onnx")  # 将模型导出为ONNX格式

三、讨论

因为我只训练了3次,训练的epoch少,精度就会低一点,像下面右上角的图片中,人和马都检测错了。
在这里插入图片描述

再简化一下代码,四行就可以训练、预测和保存模型。

from ultralytics import YOLO

if __name__ == '__main__':
    # 加载模型
    model = YOLO("yolov8n.pt")  # 加载一个预训练模型(推荐用于训练)

   # 训练
    model.train(data="coco8.yaml", epochs=3, workers=0)  # 使用单进程数据训练模型
    
    # 推理
    model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640, save=True, device=0)

    # 保存模型
    path = model.export(format="onnx")  # 将模型导出为ONNX格式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1972488.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ICC2:分段长tree简易版教程

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 分段长tree让一部分sink balance的更好,有助于时序收敛,但ICC2的分段长tree需要单独写一个sdc去做sub tree再换回原始sdc去长tree,流程繁琐,我整理了一个简单的流程,不需要额外的sdc,唯一的缺…

Linux系统如何查看版本信息,内核、发行版、cpu、所有版本

查看当前操作系统内核信息:uname -a查看当前操作系统版本信息:cat /proc/version查看当前操作系统发行版信息: cat /etc/redhat-release 或 cat /etc/issue查看cpu相关信息,包括型号、主频、内核信息等:cat /proc/cpui…

【ARM】SMMU:boot_code.s中转换页表的配置方式

#工作记录# 拖了非常久的页表转换整理,补坑!废话不多说开整。 MMU相关的知识点可以参考我之前的博客,这篇博客主要介绍如何在boot_code.s中配置页表。 目录 1.boot_code.s简介 2. MMU配置相关 2.1系统寄存器 2.2 ttb0_base的配置 1.boo…

设计模式的优点

设计模式的优点 1、可重用性2、架构指导3、经验传承4、设计透明5、实践验证 💖The Begin💖点点关注,收藏不迷路💖 1、可重用性 设计模式允许开发者在遇到相似问题时复用解决方案,节省时间并减少错误。 2、架构指导 …

汽车网络安全 -- MAC介绍:CMAC与CBC-MAC不能混为一谈

目录 1.什么是MAC 2.CMAC 3.HMAC 4.小结 1.什么是MAC MAC全称Message authentication code,是经过特定算法后产生的一小段数据信息,用于校验某数据的完整性和真实性。在数据传递过程中,可检查其内容是否被更改过,不管更改的原…

C语言——分支结构程序设计

分支结构程序设计(选择结构) 定义:根据条件是否成立,选择相应的操作 条件判断:根据某个条件成立与否,决定是否执行指定的任务。 选择结构中的常见形式: if(关系表达式&#xff09…

含锡废水处理的主体处理

含锡废水处理是一个综合性的环保过程,旨在去除废水中的锡离子和其他有害物质,确保废水达到国家排放标准。以下是对含锡废水处理技术的详细阐述: 一、处理技术概述 含锡废水处理技术主要包括化学法、生物法和物理法三大类。每种方法都有其独特…

论文阅读:HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face https://proceedings.neurips.cc/paper_files/paper/2023/file/77c33e6a367922d003ff102ffb92b658-Paper-Conference.pdf HuggingGPT: 解决与ChatGPT及其在Hugging Face的朋友们相关的AI任务 Yon…

乐尚代驾十订单支付

账单信息 司机结束代驾之后,生成账单(包含账单信息和分账信息)司机发送账单给乘客乘客获取账单之后,进行支付 获取账单信息 order_bill表记录的账单信息,我们直接获取即可 Operation(summary "根据订单id获…

递归~~~

一.定义 计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集。 比如单链表递归遍历的例子: void f(Node node){if (node null){return;}f(node.next);} 说明: 1.自己调用自己,如…

基于SpringBoot+Vue的汽车服务管理系统(带1w+文档)

基于SpringBootVue的汽车服务管理系统(带1w文档) 基于SpringBootVue的汽车服务管理系统(带1w文档) 在开发系统过程中采用Java语言、MySQL数据库存储数据。系统以B/S为基础,实现管理一体化、规范化,为用户提供一个高效快捷的交流系统[5]。利用springboot架…

LearnOpenGL之3D显示

前序 AndroidLearnOpenGL是本博主自己实现的LearnOpenGL练习集合: Github地址:https://github.com/wangyongyao1989/AndroidLearnOpenGL 系列文章: 1、LearnOpenGL之入门基础 2、LearnOpenGL之3D显示 显示效果 根据上一篇文章的LearnO…

结构型设计模式:桥接/组合/装饰/外观/享元

结构型设计模式:适配器/代理 (qq.com)

浮动IP(Floating IP)计费;OpenStack算力共享;OpenStack实现资源虚拟化;算力调度策略

目录 浮动IP(Floating IP)计费 浮动IP的定义与作用 计费中的浮动IP数据 浮动IP在计费中的作用 OpenStack算力共享 一、OpenStack在算力共享中的角色 二、OpenStack与算力共享的结合方式 三、实际应用案例 算力调度策略 算力计费策略 OpenStack实现资源虚拟化 1.虚…

用于仅摄像头闭环驾驶的视觉语言模型

CarLLaVA: Vision language models for camera-only closed-loop driving 用于仅摄像头闭环驾驶的视觉语言模型 Abstract In this technical report, we present CarLLaVA, a Vision Language Model (VLM) for autonomous driving, developed for the CARLA Autonomous Driv…

【云原生】kubernetes最新版本1.30.2,集群搭建部署全方位攻略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

SimGCL graph contrastive learning by finding homophily in heterophily

发表于: Knowledge and Information Systems, ccfb 推荐指数: #paper/ ⭐ 总结: 重新定义了相似度矩阵, 重新定义了特征, 重新设计了节点删除概率等, 但是, 换汤不换药, 引入了大量的超参 (快 10 个了吧). 创新点不够, 所以 ccf B 期刊理所应该. (甚至我觉得更低) 相关知识: 本…

详细教程 MySQL 数据库 下载 安装 连接 环境配置 全面

数据库就是储存和管理数据的仓库,对数据进行增删改查操作,其本质是一个软件。 首先数据有两种,一种是关系型数据库,另一种是非关系型数据库。 关系型数据库是以表的形式来存储数据,表和表之间可以有很多复杂的关系&a…

通俗易懂玩Qt:时间滑动选择器实现(内附主要源码)

时间滑动选择器实现 组件说明: 本组件命名为时间滑动选择器,主要运用于 arm 平台下的触摸屏上,虽然 QT 自带有时间选择组件,但是对触摸屏的使用并不友好,为了提升项目界面的交互性,于是就有了时间滑动选择器…

【深海王国】初中生也能画的电路板?番外1:Arduino其他家族成员的拓展板开发(1)

Hi~ (o^^o)♪, 各位深海王国的同志们,早上下午晚上凌晨好呀~ 辛苦工作的你今天也辛苦啦(/≧ω) 今天大都督为大家带来电路板的番外系列——初中生也能画的电路板?番外1:Arduino其他家族成员的拓展板开发,带你给其他Arduino家族成…