YoloV8简单使用

news2025/1/19 17:23:44

        我们坐在阳光下,我们转眼间长大,Yolo系列都到V8了,来看看怎么个事。目标检测不能没有Yolo,就像西方不能没有耶路撒冷。这个万能的目标检测框架圈粉无数,经典的三段式改进也是改造出很多论文,可惜我念书时的研究方向不是纯粹的目标检测,所以在做研究的时候没有用到过,但是同学用到的多啊,彼此交流也大概能知道Yolo的架构,这次决定好好学一学这个绝版Yolo。

        先来看看它的自我介绍:

Ultralytics YOLOv8是由Ultralytics开发的YOLO物体检测和图像分割模型的最新版本。YOLOv8是一个尖端的、最先进的(SOTA)模型,它建立在以前YOLO版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。

YOLOv8的一个主要特点是其可扩展性。它被设计成一个框架,支持所有以前的YOLO版本,使其很容易在不同的版本之间切换,并比较其性能。这使得YOLOv8成为那些想利用最新的YOLO技术,同时又能使用他们现有的YOLO模型的用户的理想选择。

除了其可扩展性,YOLOv8还包括其他一些创新,使其成为广泛的物体检测和图像分割任务的吸引人的选择。这些创新包括一个新的骨干网络、一个新的无锚检测头和一个新的损失函数。YOLOv8的效率也很高,可以在各种硬件平台上运行,从CPU到GPU。

        我来总结一下吧。第一:可以目标检测、图像分割,是最强的Yolo。第二:做成了框架,可以和前几个版本的Yolo做对比,这个做过科研的都知道咋回事了。第三:框架里有新的细节,创新的骨干、无锚检测头、新损失,效率更高,不过以我的经验来讲,快就要牺牲精度,除非真的有针对性提取信息的创新。 

一、安装使用

1.1 安装

        YoloV8有两种下载方法:pip、git

pip:

pip install ultralytics

        or

git:

git clone https://github.com/ultralytics/ultralytics

cd ultralytics

pip install -e '.[dev]'

        不过我建议直接去github网址下载,这样快一些,下载完成后进入到ultralytics目录下pip install 需要的库:

执行:

 pip install -r requirements.txt -i https://pypi.douban.com/simple/

我加了豆瓣镜像会快一些,别忘了切换到自己的环境下去做这些事,不然白忙活。

1.2 数据处理       

下载自己的数据集,比如测试用的coco8:

https://ultralytics.com/assets/coco8.zip

        在yolov8目录下直接创建datasets文件夹,将coco8解压在下面就能使用,自己的数据集同样的格式就可以:其实这种加载文件的细节在dataloader中,修改dataloader中的:

        

         其实这种加载文件的细节在dataloader中,修改dataloader中的:​​​​​​v5loader.py,另外可以在v5augmentations.py中加入自己想要的数据增强方法,在里面通过设置概率p来控制数据增强的轻度大小。

 二、Tasks(使用不同方式训练)

1.1 Detection

        老版Yolo做的都是Detection,也就是传统的目标检测。两个目标:定位位置,识别类别。这两个目标对应着两个检测头,如果我没记错的话,这里并没有最新的YoloV8论文。

        当你需要识别场景中感兴趣的物体,但又不需要知道物体的确切位置或其确切形状时,物体检测Detection方法是一个不错的选择。另外,YoloV8仍然将模型的结构定义在了yaml配置文件里。

tips:YOLOv8检测模型没有后缀,是 YOLOv8的默认模型,即 yolov8n.pt,预先在 COCO 上进行了训练。

1.1.1 Train

        训练有两种方式:

        一种是新建了py文件导入模型,另一种是命令启动。

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco128.yaml", epochs=100, imgsz=640)

yolo task=detect mode=train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

        我莫名觉得前者更好一点,哈哈哈哈。

        具体参数如何配置以及配置后的影响请看下面链接:

Configuration - Ultralytics YOLOv8 Docs

1.1.2 Val

        仍是两种方式:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
results = model.val()  # no arguments needed, dataset and settings remembered
yolo task=detect mode=val model=yolov8n.pt  # val official model
yolo task=detect mode=val model=path/to/best.pt  # val custom model

1.1.3 Predict

        展示效果:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

1.1.4 Export(导出)

        导出这个简直太棒了,有开发框架果然还是方便啊。不然都得自己写。以导出onnx格式为例:

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom trained

# Export the model
model.export(format="onnx")

        看下面这个表格,不要太方便:

 1.2 Segmentation

        实例分割比目标检测分割更进一步,它涉及识别图像中的单个对象,并将它们与图像的其余部分分割开来。一般来说做实力分割好的网络都是U型,著名的UNet就是如此,因为需要判断每个像素点,所以使用全卷积神经网络,速度也慢很多。Yolo这种轻量的网络做Segmentation应该不如专业的Seger强,希望我被打脸。

         训练方式类似Detection,不做过多介绍。

1.3 Classification

        图像分类器的输出是一个单类标签和一个置信度评分。当您只需要知道图像属于哪个类,而不需要知道该类的对象位于何处或它们的确切形状时,图像分类非常有用。

        Classidication是传统的机器学习项目了,一般的卷积神经网络后置一个全联接层在minist数据集上就可以达到98%的准确率,所以对于yoloV8这根本不是问题,问题是谁用这个做calssification啊,难道是我肤浅了?

         那么至此,基本的介绍就到这。

二、网络结构

        关于网络结构可以参考YoloV5,都是定义在ymal里的参数,然后通过参数去调用模块,这块对模块自定义者完全不友好:

yolov5模型配置yaml文件详解_yolov5 yaml_LaLaLaLaXFF的博客-CSDN博客

        值得注意:Head不仅指检测头,还有关于图像融合的部分比如FPN、PAN等等,不过FPN、PAN也是通过小的组件实现的,所以完全可以通过配置参数组合自己想要的融合机制,也就是FPN的样子。

三、总结

        总之,YoloV8仍然是在YoloV5基础上做改进,下一篇看看如何玩转yaml定义的网络结构,实现自己的创新点。

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

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

相关文章

论文投稿指南——中文核心期刊推荐(植物学)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

English Learning - L1-12 情态动词 + 倒装 2023.1.12 周四

这里写目录标题9 情态动词9.2 may - mightmay(1) 表许可(2) 推测 --- 可能,或许(50% 的概率)might9.3 can - couldcan核心思维: 潜在的可能性,有某种知识和技能而能办到(1)能力(有做 。。。的能…

java 计算机概述看这一篇文章就够了

第一章 计算机概述 第1节 计算机介绍 1广义上: 凡是可以帮助我们完成计算的工具统称为计算机(比如 算盘、计算器等...) 狭义上: 当前说计算机一般情况特指电子计算机(电脑)第2节 计算机历史 算盘(机械/手动) 源于中国具体作者不详,发明时间不详.我国第一颗原子弹的很多数据早期…

【论文速递】ACM2022 - 基于嵌入自适应更新和超类表示的增量小样本语义分割

【论文速递】ACM2022 - 基于嵌入自适应更新和超类表示的增量小样本语义分割 【论文原文】:Incremental Few-Shot Semantic Segmentation via Embedding Adaptive-Update and Hyper-class Representation 获取地址:https://arxiv.org/pdf/2207.12964.pd…

靶机测试djinn笔记

靶机地址https://www.vulnhub.com/entry/djinn-1,397/靶机测试信息收集nmap扫描nmap -p- -A 192.168.1.106 -oA dj 通过 nmap 扫描得到21 端口 可以匿名访问22 端口 ssh 但是被过滤了 1337 是一个游戏端口7331 是 python web测试 1337 端口访问端口nc -vv 192.168.0.177 1337这…

智慧工地安全帽智能识别检测 yolov5

智慧工地安全帽智能识别检测通过yolov5opencv深度学习技术,可自动对现场画面检测识别人员有没有戴安全帽。OpenCV基于C实现,同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python API,结合了OpenCV CAPI和Python语言的最…

【Spring(六)】彻底搞懂Spring的依赖注入

文章目录前言依赖注入setter注入构造器注入自动装配集合注入总结前言 在核心容器这一部分bean相关的操作,我们已经学完了,接下来我们就要进入到第二个大的模块,与我们的DI,也就是依赖注入相关知识的学习了,那我们先来学习第一个内…

ChatGPT!我是你的破壁人;比尔·盖茨不看好Web3与元宇宙;FIFA押中4届世界杯冠军;GitHub今日热榜 | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 🎡 『GPTZero』用 ChatGPT 写论文糊弄老师?已经不灵了~ 语言生成模型的诞生与优化,给教育和学术界带来了不少困扰。继纽约教育…

前端工程化解决方案-Webpack编程

文章目录1. 前端工程化目前主流的前端工程化解决方案2.webpack2.1 主要供能2.2 webpack与webpack-cli的使用2.2.1 初始化项目2.2.2 安装2.2.3 配置2.2.3.1 webpack.config.js2.2.3.2 package.json2.2.3.3 打包构建2.2.3.4 项目中引入 dist/bundle.js2.3 动态部署2.3.1 webpack-…

微服务架构概述

微服务架构概述一、架构演变1.1 单体架构1.2 分布式架构1.3 微服务二、SpringCloud2.1 简介3.2 痛点三、SpringCloud Alibaba3.1 简介3.2 优点3.3 主要组件3.4 版本对应一、架构演变 1.1 单体架构 讲业务的所有功能集中在一个项目中开发,打成一个包部署。 优点&am…

SaaS架构实现理论(四)可伸缩多租户

目录1.伸缩性(Scalable)的概念2.应用服务器层的水平扩展2.1基于Session复制的水平扩展方式2.2基于Session Sticky的水平扩展方式2.3基于Cache的集中式Session实现水平扩展2.4三种水平扩展方式的比较3.数据库的水平扩展3.1数据库的垂直切分3.2数据库的读写…

ArcGIS基础实验操作100例--实验93插值模型的精度分析

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 空间分析篇--实验93 插值模型的精度分析 目录 一、实验背景 二、实验数据 三、实验步骤 (…

ESP-IDF:使用基本类型,指针,引用,指针的指针,指针的引用作为函数参数的几个例程

1.例程: /下面是使用基本类型,指针,引用,指针的指针,指针的引用作为函数参数的几个例程/ // 值拷贝 int add10(int a) { a 10; return a; } // 指针传参,是一种地址拷贝 void add101(int *a) { // int *…

(11)QWidget的使用(two)

目录 设置窗口图标和标题 设置窗口图标以及获取图标 设置窗口标题以及获取标题 窗口标题的特殊操作 设置窗口的状态 设置窗口的不透明度 设置窗口的状态 使用封装好的函数显示窗口 设置窗口标志 窗口标志简介 设置窗口图标和标题 设置窗口图标以及获取图标 void se…

Java在远程方法调用中运用反射机制

本案例将介绍反射机制在网络编程中的应用,实现如何在客户端通过远程方法调用服务器端的方法。 假定在服务器端有一个 HelloService 接口,该接口具有 getTime() 和 echo() 方法,具体代码如下: import java.util.Date; public int…

【C语言航路】第十一站:字符串、字符和内存函数

目录 一、字符串函数 1.strlen (1)strlen的库函数文档 (2)strlen的模拟实现 (3)strlen的注意事项 2.strcpy (1)strcpy的库函数文档 (2)strcpy的使用以…

如何使用机器学习进行图像识别|数据标注

什么是图像识别?图像识别是一种用于识别图像中的对象并将其分类为特定类别的机制,基于人类识别不同图像集中对象的方式。图像识别如何为人类工作?当我们看到一个物体或图像时,作为人类,我们能够立即准确地知道它是什么…

浅谈STL——适配器

一、适配器(Adapters) 它是一种设计模式,为STL中能够将一个类的接口转化为用户更加想要使用的接口,适配器就扮演者轴承、转换器的功能 就是一个wrapper的模式,将要修饰的接口进行二次包装,展露出可以更容…

紧急事故的流程管理

嵌套式职责分离 在事故处理中,让:每个人清楚自己的职责是非常重要的。有点反直觉的是,明嘶职费反而能够使每个人可以更独立自主地解决问题,因为他们不用怀疑和担心他们的同事都在干什么。 如果一个人目前要处理的事情大多了&…

[TPAMI 2022] 用深度神经网络解决欠定问题——考虑鲁棒性?

Solving Inverse Problems With Deep Neural Networks – Robustness Included?https://ieeexplore.ieee.org/abstract/document/9705105摘要在过去的五年中,深度学习方法已经成为解决各种反问题的最先进方法。在此类方法可以应用于安全关键领域之前,必…