适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)

news2025/1/10 15:58:37

 目录

一、前期准备+所需环境配置 

1.1. 虚拟环境创建

1.2 下载yolov8源码,在pycharm中进行配置

1.2.1 下载源码

1.2.2 在pycharm终端中配置conda

1.3 在pycharm的terminal中激活虚拟环境 

1.4 安装requirements.txt中的相关包

1.5 pip安装其他包

1.6 预训练权重的下载 

1.7 验证环境配置是否成功

二、数据集的准备 

2.1 coco128数据集下载

 2.2 coco128数据集格式

2.2.1 数据集文件夹

2.2.2 coco数据集的yaml文件

2.3 自建数据集 

2.3.1 数据集格式

2.3.2 yaml文件

三、训练自己的数据集

3.1 输入运行命令

3.2 训练结果

 ​编辑

3.3 验证


yolov8源码下载地址:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite

yolov8使用文档: 

Home - Ultralytics YOLOv8 Docs

教学视频参考: 包会!YOLOv8训练自己的数据集_哔哩哔哩_bilibili

一、前期准备+所需环境配置 

1.1. 虚拟环境创建

先用conda prompt创建一个虚拟环境,我的叫yolov8, python版本用3.10

conda create -n yolov8 python=3.10

1.2 下载yolov8源码,在pycharm中进行配置

1.2.1 下载源码

源码地址:

GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite

下载好解压之后用pycharm进行打开,然后把interpreter设置为刚刚创建的虚拟环境

1.2.2 在pycharm终端中配置conda

关于如何在pycharm终端中配置虚拟环境可以看这篇: 

pycharm终端配置,使用Anaconda_pycharm设置terminal打开anaconda的命令行窗口显示找不到本地终端-CSDN博客

具体:把settings-> Tools -> Terminal中的shell path换成你的conda prompt的位置

  • 在属性中找到anaconda prompt的目标位置,把cmd.exe开始的后面所有内容都复制下来

 

  • 粘贴到shell path中的对应位置,重启就OK啦

 PS: 如果还是出现了CommandNotFoundError错误可以参考如下文章解决,我的错误就是根据这个解决的

CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘. If using_aoimono的博客-CSDN博客

1.3 在pycharm的terminal中激活虚拟环境 

使用conda activate命令激活虚拟环境,激活成功的标志就是命令行前面的(base)换成了你的虚拟环境的名字

1.4 安装requirements.txt中的相关包

pip install -r requirements.txt

1.5 pip安装其他包

安装代码运行所需的ultralytics和yolo包

pip install ultralytics
pip install yolo

 

1.6 预训练权重的下载 

源码下载界面中的readme文件中往下翻,找到yolovn8的预训练权重,点击下载,然后把下载好的文件放在项目代码的根目录下。

 把权重文件放在根目录处

1.7 验证环境配置是否成功

 复制下面的代码来验证一下是否可以运行

yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

PS:我在运行过程中遇到了ImportError: cannot import name '***' from 'collections'和No such command 'predict'两个问题,都已经解决了,解决方案如下:

[解决] 问题:ImportError: cannot import name ‘Callable‘ from ‘collections‘-CSDN博客

YOLOv8报错Error: No such command ‘predict‘.-CSDN博客

 运行命令后可以实现检测,结果保存在runs->detect->predict文件夹下

 可以看到已经完成了目标框和类别概率的显示和绘制

二、数据集的准备 

2.1 coco128数据集下载

下载coco128文件:

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

下载之后再跟根目录下新建一个datasets文件夹,然后把coco128数据集放在下面。

 2.2 coco128数据集格式

2.2.1 数据集文件夹

  • images:下面的子文件夹为train2017,存放所有的训练图片;
  • labels:下面的子文件夹为labels2017,存放所有的标注标签。

自己的数据集的命名和排列方式也要按这个格式来。

2.2.2 coco数据集的yaml文件

coco128数据集的yaml文件如下所示,可以看到给出了数据集的路径、训练集和验证集所在的位置,所以仿照该文件写一个我们自己的yaml文件;

2.3 自建数据集 

2.3.1 数据集格式

我使用了一个苹果树叶数据集,一共有4个病害类[insert,mlb,mossaic],使用labelimg标注了103张图片,然后存放在Apple文件夹下

2.3.2 yaml文件

  apple.yaml文件如下所示,存放在Apple数据集的根目录下

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco128  ← downloads here (7 MB)


# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: E:\code_MWY\yolov8\ultralytics-main\datasets\Apple  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)

# Classes
names:
  0: alternaria
  1: insert
  2: mlb
  3: mossaic

三、训练自己的数据集

3.1 输入运行命令

设置好需要训练的数据集路径、所使用的具体yolo模型要加载的预训练权重文件,并且设置所需的epoch数量。

  • data = datasets/Apple/apple.yaml
  • model = yolov8n.yaml
  • pretrained = ultralytics/yolov8n.pt
  • epoch = 100

在terminal中输入下面的命令 ;

 yolo detect train data=datasets/Apple/apple.yaml model=yolov8n.yaml pretrained=ultralytics/yolov8n.pt epochs=100 batch=4 lr0=0.01 resume=True

开始运行,等待结果。

3.2 训练结果

训练结束后训练结果都保存在runs这个文件夹下,可以看到有所有的指标曲线的可视化;

还有模型训练出来的权重,best.pt为训练的最好的一组权重,后面可以使用。

 

训练100个epoch后的结果如下所示: 

可视化结果: 

可以看到对于的类别和位置都标注来了 

3.3 验证

 输入下面的命令进行模型的验证,这里的models为训练的最好的那一组权重;

yolo detect val data=datasets/Apple/apple.yaml model=runs/detect/train/weights/best.pt batch=4

结果如下所示: 

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

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

相关文章

如果在手机没有root的情况下完成安卓手机数据恢复

您是否不小心从安卓设备中删除了重要数据? 担心如何取回您的照片、视频和文档? 有时您可能会不小心删除重要数据并使用安卓 root方法取回文件。 许多用户不喜欢根植他们的安卓设备,因为这是一种复杂的方法。 在本指南中,我们将向您…

[Spring Cloud] Nacos 实战 + Aws云服务器

文章目录 前言一、拥有一台Aws Linux服务器1.1、选择Ubuntu版本Linux系统1.2、创建新密钥对1.3、网络设置1.4、配置成功,启动实例1.5、回到实例区域1.6、进入具体的实例1.7、设置安全组 二、在Mac上连接Aws云服务,并安装配置JDK112.1、解决离奇的错误2.2…

ROS navigation栅格地图原点位置如何确定?

背景 利用ros进行导航时,生成一张栅格地图,包含gridMap.pgm和gridMap.yaml。现在想要将栅格地图及轨迹在其他应用上显示,需要确定地图的坐标系原点。 gridMap.yaml格式 image: gridMap.pgm  #文件名 resolution: 0.20000  #地图分辨率 …

IDEA项目初始化编码

大家好今天来说说IDEA项目初始化的必要操作 编码设置. 项目初始化之后找到编译器选择文件编码 , 设置成下面这样 : 找到项目设置 把设置调成这样 : 最后点击模块把语言级别改成8 这期就到这里 ,下期见!

酷开科技丨这么好用的酷开系统,不用真的会后悔!

掀开一幕幕精彩剧情,手机已经成为了我们身边必不可少的追剧神器。在这个信息爆炸的时代,我们渴望能够随时随地享受到精彩的影视作品,尤其是在家的休息的时候,希望电视也能同手机一样,想看啥就搜啥。酷开科技大内容战略…

安全知识普及:了解端点检测与响应 (EDR)对企业的重要性

文章目录 EDR 的含义和定义EDR 是如何运作的?收集端点数据将数据发送到 EDR 平台分析数据标记可疑活动并做出响应保留数据以供日后使用 为什么 EDR 对企业至关重要大多数企业都有可能遭受各种网络攻击。有些攻击可以完全绕开企业的防御远程办公让员工缺乏足够的保护…

实战 - 在Linux上部署各类软件

前言 为什么学习各类软件在Linux上的部署 在前面,我们学习了许多的Linux命令和高级技巧,这些知识点比较零散,同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用,但是并没有一些具体的实操能够串联起来这些知…

快速傅立叶卷积(FFC)

论文 LaMa: Resolution-robust Large Mask Inpainting with Fourier Convolutions https://github.com/advimman/lama 1.Introduce 解决图像绘制问题——缺失部分的真实填充——既需要“理解”自然图像的大尺度结构,又需要进行图像合成。 通常的做法是在一个大型自…

什么是策划能力?如何提高策划能力?

什么是策划能力? 通常我们理解的策划能力,大多指的是策划活动,比如举办一次活动先要进行活动策划,形成具体的行动方案,然后开展组织人力物力等资源,最终落地实施。策划能力包含活动策划,但又不…

TCC简介

TCC TCC(Try-Confirm/Cancel)是一种分布式事务处理模型,旨在解决分布式系统中的事务一致性问题。 三阶段 Try阶段: 在这个阶段,业务参与者尝试执行事务,并执行相应的业务逻辑。该阶段用于检查事务执行的…

基于SpringBoot+Mybatis plus+React.js实现条件选择切换搜索功能

笔记/朱季谦 在写React前端逻辑时,经常遇到可以切换不同条件的列表查询功能,例如下边截图这样的,其实,这块代码基本都一个逻辑,可以一次性将实现过程记录下来,待以后再遇到时,直接根据笔记复用…

python刷题笔记1(42例题)

1. split()函数 str.split([sep [, maxsplit]]) 分割字符串,返回一个数组 2. 判断子串 # 判断子串是否在主串里面,是则输出“Yes”,否则输出“No” str1 input("子串:") str2 input("主串:") if str1 in s…

leetcode:交叉链表

题目描述 题目链接:160. 相交链表 - 力扣(LeetCode) 题目分析 我们先要搞清楚一个概念,单链表可以相交,但绝对不会交叉 原因如下: 单链表中,多个结点可以存一个结点的地址,但是一…

NX二次开发UF_CAM_ask_lower_limit_plane_status 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_lower_limit_plane_status Defined in: uf_cam_planes.h int UF_CAM_ask_lower_limit_plane_status(tag_t object_tag, UF_PARAM_lwplane_status_t * status ) overview 概述 Query the…

007 OpenCV霍夫变换

目录 一、环境 二、霍夫变换原理 三、代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、霍夫变换原理 OpenCV中的霍夫变换是一种用于检测图像中直线和圆的算法。它基于图像中像素的分布情况,通过统计像素点之间的…

提升工作效率,使用AnyTXT Searcher实现远程办公速查公司电脑文件——“cpolar内网穿透”

文章目录 前言1. AnyTXT Searcher1.1 下载安装AnyTXT Searcher 2. 下载安装注册cpolar3. AnyTXT Searcher设置和操作3.1 AnyTXT结合cpolar—公网访问搜索神器3.2 公网访问测试 4. 固定连接公网地址 前言 你是否遇到过这种情况,异地办公或者不在公司,想找…

BUUCTF [BJDCTF2020]一叶障目 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 得到的 flag 请包上 flag{} 提交。来源:https://github.com/BjdsecCA/BJDCTF2020 密文: 下载附件,解压得到一张.png图片。 解题思路: 1、在010 Editor中打开&#x…

关于使用宝塔页面Nginx的一些注意事项:Nginx不生效情况,以及解决方案

判断Nginx是否正常运行 使用宝塔页面保存Nginx配置后,有的时候不生效,这就说明Nginx没有正常运行 可以通过以下几种方式排查 通过宝塔 如果能够打开负载状态,说明Nginx运行正常 如果打不开,说明肯定是配置文件或者什么导致ngi…

【ctfshow】web入门-信息搜集-web21~28

SSS web21_爆破什么的,都是基操web22_域名也可以爆破的,试试爆破这个ctf.show的子域名web23_还爆破?这么多代码,告辞!web24_爆个🔨web25_爆个🔨,不爆了web26_这个可以爆web27_CTFsho…