超级详细的YOLOV8教程

news2024/11/26 22:17:34

超级详细的YOLOV8教程

    • YOLOV8介绍
    • 1. 数据标记
      • 1.1 第一种为在网站上下载,
      • 1.2 第二种为在CVAT上自定义数据
    • 2. 制作数据集
    • 3. 部署YOLOV8的代码
      • 3.1 远程部署
        • 3.1.1 项目下载
        • 3.1.2 修改代码
          • 3.1.2.1 训练模型
          • 3.1.2.1 验证模型
      • 3.2 本地部署
        • 3.2.1 YOLOV8项目部署
        • 3.2.2 cuda、cudnn、Pytorch等环境安装与卸载
        • 3.2.3 安装项目依赖
        • 3.2.4 训练与推理使用指令
          • 3.2.4.1 文件
          • 3.2.4.2 指令
            • 推理:
            • 训练:
    • 4. 出现的错误:
    • 5. 参考

YOLOV8介绍

YOLOV8是较强的计算机视觉技术之一,我将带你手把手使用YOLOV8对自定义数据集进行图像检测和分类。

各位小伙伴想要博客相关资料的话关注公众号:chuanyeTry即可领取相关资料!

1. 数据标记

首先第一步为数据标记,有两种方式。

1.1 第一种为在网站上下载,

链接:图像数据集

https://storage.googleapis.com/openimages/web/index.html

打开网站点击探索

在这里插入图片描述

选择数据集的类型为检测,而后在class中选择例如ball类,则在下面出现各种关于ball类的数据集

在这里插入图片描述

如果你选择像这种开放式数据集,在这个网站下载即可。

1.2 第二种为在CVAT上自定义数据

链接:CVAT

https://www.cvat.ai/

CVAT是较为常用的数据集编辑网站,我们可以将自己手机电脑里的数放到CVAT上进行处理,导出时可以获得带有标记数据的数据集,但是这样需要很多时间来标记数据集。

在这里插入图片描述

首先进行注册和登录,登录完成后,选择Projects新建项目

在这里插入图片描述

输入数据集的名字,比如road,点击Add label添加标签

在这里插入图片描述

在这里我们输入road_1,road_2两个标签,点击continue进行保存,输入标签后点击“Continue“,最后点击”Submit & Open“提交并打开,请注意,如果你的标签不止一个,记得在创建项目时把它们都加入进去。

在这里插入图片描述

点击submit&open选择保存项目数据集

在这里插入图片描述

完成之后可以看到数据集的名称,以及标记的名称和数量

在这里插入图片描述

我们点右下角的+号来添加图片,在新的跳转页面中,添加新的“task“,命名,导入需要注释的图片,最后”submit & open“

在这里插入图片描述

输入图片数据集的名称,点击Click or drag files来添加文件,此时,如果你的图片基数非常大,并不需要全部导入,选择二十到三十张进行注释即可。

在这里插入图片描述

我在这里添加一张道路数据图片,下面我们进行标记数据集,点击open再点击图片打开进行标记

在这里插入图片描述

创建完成后,点击工作编号即可打开所有图像。

打开图片到以下页面
在这里插入图片描述

点击左边图标,我们刚刚创建了两个标签,我们选择road_1标签,点击shape即可标注

在这里插入图片描述

我们将road_1数据在图中进行标记,再选中road_2,将road_2部分在图中标出

在这里插入图片描述

如果你想要删除一个注释,可以在右侧对应注释点击remove。

注释带有主观性,所以会有差异。

注释的同时注意“ctrl+s”保存。

下面将标注好的数据进行格式化

在这里插入图片描述

全部注释完成后,点击头部菜单栏的“Tasks”,导出注释好的数据。

在这里插入图片描述

数据可以导出为多种不同格式,此处我们选择为YoLo 1.1,点击ok。

在这里插入图片描述

下载完成的压缩包中的文件夹内保存着刚刚注释完的图片

我们打开文件可以看到我们的标注数据,这些数据就是刚刚我们在图片中标注数据的YOLO格式化。

在这里插入图片描述

其中,我们在这个图片上标注了四个地方,所以有四行数据,第一行的0表示检测的第一个标签,第二第三个数据是标记数据的中心位置坐标,最后两个数据表示标记框的宽高。

2. 制作数据集

下面我们来创建数据集并说明自定义数据集的格式

创建两个文件夹,一个叫做images,另一个叫做labels。

在这里插入图片描述

在images文件夹中创建train文件夹,在train文件夹中放入要检测的图像。

在这里插入图片描述

在labels文件夹中创建train文件夹,在train文件夹中放入检测图像的标注数据。

在这里插入图片描述

这里的检测图像和标注数据一定要完全对应,检测的图像文件名也是标注数据的文件名。

这样数据集文件夹就创建好了

3. 部署YOLOV8的代码

部署方式有两种,远程部署和本地部署。

3.1 远程部署

为了不消耗电脑的空间以及忽略电脑带来的差异,我将使用远程控制软件来远程部署安装环境以及推理和验证我们自己的数据集。

远程控制软件fellshell:远程控制软件finalshell + AutoDL算力云

https://blog.csdn.net/hellow_xqs/article/details/135251072

3.1.1 项目下载

链接:YOLOV8

https://github.com/ultralytics/ultralytics

在这里插入图片描述

将项目下载到本地之后

3.1.2 修改代码

用vscode打开项目代码包

在这里插入图片描述
复制在官网的代码

在这里插入图片描述
在代码中新建文件夹data,将在上面的images和labels文件夹复制到文件夹中,

在这里插入图片描述

3.1.2.1 训练模型

在一级目录中新建文件main.py,将以下代码复制到文件中

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch

# Use the model
model.train(data="config.yaml", epochs=3)  # train the model

在这里插入图片描述

在一级目录中新建文件config.yaml,将以下代码复制到文件中

path: /root/autodl-tmp/ultralytics-main/data//注意地址
train: images/train//训练文件夹的图片地址
val: images/train//训练文件夹的图片地址

names:
  0: 横向裂缝
  1: 纵向裂缝
  2: 块状裂缝
  3: 龟裂
  4: 坑槽
  5: 修补网状裂缝
  6: 修补裂缝
  7: 修补坑槽

3.1.2.1 验证模型

在一级目录中新建文件verify.py,将以下代码复制到文件中

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

model.info()

results = model("/root/autodl-tmp/ultralytics/ultralytics/assets/bus.jpg",save = True,save_txt = True)  # predict on an image

print(results)

在这里插入图片描述

3.2 本地部署

3.2.1 YOLOV8项目部署

github链接:https://github.com/ultralytics/ultralytics

git拉取项目:git clone https://github.com/ultralytics/ultralytics.git

3.2.2 cuda、cudnn、Pytorch等环境安装与卸载

首先查看pytorch支持的最高版本:https://pytorch.org/

然后查看N卡系统支持最高的版本,然后权衡下载支持最高版本的CUDA和cuDNN

CUDA工具包

https://developer.nvidia.cn/zh-cn/cuda-toolkit

cuDNN

https://developer.nvidia.com/rdp/cudnn-download

配置对应的环境变量

3.2.3 安装项目依赖

在上级目录下安装

pip install ultralytics

pip install yolo

卸载项目依赖为你安装CPU版本pytorch,打开pytorch官网,使用对应命令下载GPU版本

3.2.4 训练与推理使用指令
3.2.4.1 文件

yolov8.yaml文件为权重样本文件
位置:ultralytics-main\ultralytics-main\build\lib\ultralytics\cfg\models\v8\yolov8.yaml

test_python.py为yolov8.yaml输出文件
位置:ultralytics-main\ultralytics-main\tests\test_python.py

default为YOLOv8的训练配置文件
位置:ultralytics-main\ultralytics-main\ultralytics\cfg\default.yaml

3.2.4.2 指令
task=detect,表示使用YOLO进行目标检测任务
推理:
mode=predict设置为推理

model=yolov8n.pt为模型文件

conf=0.25  置信度

source='ultralytics/assets/bus.jpg'   训练样本


yolo task=detect mode=predict model=存放自己最好的训练模型地址 conf=0.25 source='ultralytics/assets/bus.jpg'

yolo task=detect mode=predict model=yolov8n.pt conf=0.25 source='ultralytics/assets/bus.jpg'

yolo task=detect mode=predict model=/root/autodl-tmp/ultralytics-main/ultralytics-main/runs/detect/train8/weights/best.pt conf=0.25 source='/root/autodl-tmp/ultralytics-main/ultralytics-main/ultralytics/assets/images/'
训练:
mode=train设置为训练

model=yolov8n.pt为模型文件

epochs=100    100轮

imgsz=640   图片为640尺寸

resume=True  为断训续训

yolo task=detect mode=train model=yolov8n.pt data=config.yaml epochs=100 

yolo task=detect mode=train model=yolov8s.pt data={dataset.location}/data.yaml epochs=100 imgsz=640 resume=True workers=2

中断续训:
runs/detect/train12/weights/last.pt为上次续训地址

yolo task=detect mode=train model=runs/detect/train12/weights/last.pt epochs=100 imgsz=640 resume=True workers=2

4. 出现的错误:

1.出现 Usage: yolo 【OPTIONS】 COMMAND 【ARGS】…
Try ‘yolo -h’ for help.

Error: No such command ‘task=detect’.

解决办法: python setup.py install 然后重新运行代码即可。

出现Downloading https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt to ‘yolov8n.pt’…
Traceback (most recent call last):
File “C:\minconda\envs\xqs2.0\lib\site-packages\urllib3\connectionpool.py”, line 711, in urlopen
self._prepare_proxy(conn)
File “C:\minconda\envs\xqs2.0\lib\site-packages\urllib3\connectionpool.py”, line 1007, in _prepare_proxy

解决办法:把自己梯子关掉试试

出现FileNotFoundError: ultralytics-main/ultralytics/assets/zidane.jpg does not exist

解决办法:yolo task=detect mode=predict model=yolov8n.pt conf=0.25 source='ultralytics/assets/zidane.jpg’中source改为绝对路径或者相对路径。

5. 参考

Ultralytics YOLOv8 Docs(官方的说明文档)

https://docs.ultralytics.com/ultralytics/README.zh-CN.md at main · ultralytics/ultralytics · GitHub(官方的中文说明页)

https://github.com/ultralytics/ultralytics/blob/main/README.zh-CN.md

https://stitch.blog.csdn.net/article/details/112329058 cuda 和 cudnn 库的卸载与安装 - 知乎

https://zhuanlan.zhihu.com/p/102966512

Pytorch环境详细安装教程【Win10+CUDA升级11.6+cudNN+Anaconda3虚拟环境+pycharm】https://blog.csdn.net/weixin_44842318/article/details/127487476/

cs/ultralytics · GitHub(官方的中文说明页)

https://github.com/ultralytics/ultralytics/blob/main/README.zh-CN.md

https://stitch.blog.csdn.net/article/details/112329058 cuda 和 cudnn 库的卸载与安装 - 知乎

https://zhuanlan.zhihu.com/p/102966512

Pytorch环境详细安装教程【Win10+CUDA升级11.6+cudNN+Anaconda3虚拟环境+pycharm】https://blog.csdn.net/weixin_44842318/article/details/127487476/

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

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

相关文章

2023总结与展望--Empirefree

今年一篇博客都没写过了,好像完全在忙在工作和生活上面了,珍惜自我,保持热情,2024对我好点 文章目录 🔥1. 年终总结1.1.学习工作计划1.2. 生活计划1.3 个人总结 🔥2. 未来展望 🔥1. 年终总结 1…

基于Java学生成绩管理系统设计与实现(源码+部署文档+报告)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

两阶段提交协议

数据的强一致性 要么都修改 要么就都不修改。 不同的实体和过程 领导者和参与者、表决阶段和提交阶段 过程 一个不同意 提交就终止 存在的问题和解决的方案 如果一个领导者或者参与者的状态机中有阻塞状态,那么系统必须等他完成才能执行,这样就会…

【并发编程篇】线程安全问题_—_ConcurrentHashMap

文章目录 🍔情景引入🌹报错了,解决方案 🍔情景引入 我们运行下面的代码 package org.example.unsafe;import java.util.HashMap; import java.util.Map; import java.util.UUID;public class MapTest {public static void main(…

SpringBoot单点登录认证系统MaxKey(附开源项目地址)

1 项目介绍 MaxKey 单点登录认证系统,谐音马克思的钥匙寓意是最大钥匙,支持 OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM 等标准协议,提供简单、标准、安全和开放的用户身份管理(IDM)、身份认证(AM)、单点登录(SSO)、RBAC 权限管理…

如何把握品牌新五感,打造小红书品牌

随着社会经济的发展,市场的进步,以及人们思维方式的改变。年轻人面对市场,面对营销,关注点也在发生着改变。那什么是小红书品牌新五感,如何把握品牌新五感,打造小红书品牌! 一、品牌五感是什么 …

查找dll的开放函数以及dll的依赖dll

1.进入一个vs的cmd窗口 2.dumpbin /exports XXX.dll,分析 XXX.dll 中有哪些函数。 例如查询: C:\Users\levi0\Desktop\testPro\NewCSDll\NewCSDll\bin\x64\Debug\GBRAnalyze.dll 3. dumpbin /dependents 文件名(带路径)命令,回车&…

servlet+jdbc实现用户注册功能

一、需求 在Servlet中可以使用JDBC技术访问数据库,常见功能如下: 查询DB数据,然后生成显示页面,例如:列表显示功能。接收请求参数,然后对DB操作,例如:注册、登录、修改密码等功能。…

Linux中磁盘管理与文件系统

目录 一.磁盘基础: 1.磁盘的结构: 2.硬盘的数据结构: 3.硬盘存储容量 : 4.硬盘接口类型: 二.MBR与磁盘分区: 1.MBR的概念: 2.硬盘的分区: 为什么分区: 2.表示&am…

【PHP】B/S手术室麻醉信息管理系统源码

手术麻醉临床信息系统全面覆盖从患者入院,经过术前、术中、术后,直至出院的全过程。通过与相关医疗仪器的设备集成,不但可以轻松集成手术室传统监护设备如监护仪、麻醉机、呼吸机,也能与血气分析仪等设备对接,快速获取…

java并发编程十三 线程池

文章目录 线程池自定义线程池ThreadPoolExecutor提交任务关闭线程池任务调度线程池正确处理执行任务异常 线程池 自定义线程池 步骤1&#xff1a;自定义拒绝策略接口 FunctionalInterface // 拒绝策略 public interface RejectPolicy<T> {void reject(BlockingQueue&l…

LeetCode---120双周赛

题目列表 2970. 统计移除递增子数组的数目 I 2971. 找到最大周长的多边形 2972. 统计移除递增子数组的数目 II 2973. 树中每个节点放置的金币数目 一、统计移除递增子数组的数目I 这题的数据范围不高&#xff0c;可以直接暴力&#xff0c;后面的第三题和它一样&#xff0c…

程序员面试笔试通关宝典系列丛书(由清华大学出版社出版)

程序员面试笔试通关宝典系列——编程职场成功的必备秘籍 由清华大学出版社出版的专为编程爱好者和职业开发者打造的“程序员面试笔试通关宝典”系列丛书。该系列包含五本专业指南&#xff0c;覆盖数据库、Java、前端、通用编程和Python五个领域。 这些书籍深度解析各领域的核…

面试题:MySQL 自增主键一定是连续的吗?

文章目录 测试环境&#xff1a;一、自增值的属性特征&#xff1a;1. 自增主键值是存储在哪的&#xff1f;2. 自增主键值的修改机制&#xff1f; 二、新增语句自增主键是如何变化的&#xff1a;三、自增主键值不连续情况&#xff1a;&#xff08;唯一主键冲突&#xff09;四、自…

AIGC开发:调用openai的API接口

简介 开始进行最简单的使用&#xff1a;通过API调用openai的模型能力 OpenAI的能力如下图&#xff1a; 文本生成模型 OpenAI 的文本生成模型&#xff08;通常称为生成式预训练 Transformer 或大型语言模型&#xff09;经过训练可以理解自然语言、代码和图像。这些模型提供文…

扫雷(c语言)

先开一个test.c文件用来游戏的逻辑测试&#xff0c;在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤&#xff1a; 游戏规则&#xff1a; 输入1&#xff08;0&#xff09;开始&#xff08;结束&#xff09;游戏&#xff0c;输入一个坐标&#xff0c;如果该坐…

新药(化药)注册申报资料都包含哪些?

新药的注册申报是新药上市前的重要步骤,其流程可以简单概括为①前期准备→②申报材料准备→③递交注册申请→④审评和审批→⑤监管和跟踪。本文将着重介绍新药(化药)注册申报的一般流程和主要环节(附流程图)。(关于新药注册申报成功率和耗费时间问题写到最后) ①前期准备 在开…

年底医保新改革,如何短,平,快搞定his医保接口升级

1. 先说说我负责运维的医院背景&#xff1a; 省会中心城市三甲&#xff0c;电脑共计1500台左右。其中安装有his系统的电脑大约600台&#xff0c;也就是说需要给600台医护人员使用电脑进行医保接口升级。 近期有幸参与了院里HIS系统的升级工作&#xff0c;赶上特殊时期&#x…

数字身份验证:跨境电商如何应对账户安全挑战?

在数字化时代&#xff0c;随着跨境电商的蓬勃发展&#xff0c;账户安全问题逐渐成为行业和消费者关注的焦点。随着网络犯罪日益猖獗&#xff0c;用户的数字身份安全面临着更加复杂的威胁。本文将深入探讨数字身份验证在跨境电商中的重要性&#xff0c;并探讨各种创新技术和策略…

SQL Server 索引和视图

CSDN 成就一亿技术人&#xff01; 难度指数&#xff1a;* * * CSDN 成就一亿技术人&#xff01; 目录 1.索引 什么是索引&#xff1f; 索引的作用&#xff1f; 索引的分类 1. 唯一索引 2. 主键索引 3. 聚集索引 4.非聚集索引 5.复合索引 6.全文搜索 索引的创建&am…