yolov5 训练自定义数据集全过程

news/2024/7/11 1:15:22 标签: YOLO, 机器学习, 深度学习

YOLOv5_0">1、下载YOLOv5代码并安装环境

git clone https://gitee.com/monkeycc/yolov5.git
cd yolov5
pip install -r requirements.txt  # install

2、下载完yolov5之后在和yolov5同级的目录下创建一个叫datasets的目录 目录结构如下:

在这里插入图片描述

3、准备数据集:

3.1 数据集目录结构如下:

在这里插入图片描述

目录解读:

old_money是自己的数据集目录,这个目录要放在datasets目录下,

  • old_money下的images目录用来存放图片
    • images下存放的train表示的是训练集,train下存放的就是一个一个的图片即xxx.jpg(没别的内容,只有图片),
    • val,test同理,其下都是存放的图片
  • labels用来存放目标框的.txt文件。其下的train和val 名称要和images中的对应一样
    • label 下的train、val下存放的都是xxx.txt

这里边需要注意的是:

  • 1、labels下的train下的xxx.txt名称要和images下的train下的xxx.jpg一一对应,名称要一样哦
  • 2、labels 下的xxx.txt中的内容为:class box_x_center box_y_center box_width box_height中间用空格隔开 分别对其一一说明:
    • class 是类别,即你的目标框所属的类别,注意必须是数字而不是类别名,这个数字是在[0, 类别总数-1]之间
    • box_x_center:即目标框的中心点的x轴坐标 注意是归一化之后的值,也就是拿着这个中心点坐标除以图片的宽度
    • box_y_center : 即目标框的中心点的y轴坐标 注意是归一化之后的值,也就是拿着这个中心点坐标除以图片的高度
    • box_width : 即目标框的宽 注意是归一化之后的值,也就是拿着这个框的宽度除以图片的宽度
    • box_height: 目标框的高 注意是归一化之后的值,也就是拿着这个框的高度除以图片的高度
      具体如下:
      在这里插入图片描述
      在这里插入图片描述

特别强调一下,image中的train 和val中的图片名要和labels中的train和val 图片名要意义对应切train 和val名称也要对应,test目录在label中不需要label所以只需要test目录下存放图片即可

4、在yolov5目录下的data下创建一个名为old_money.yaml其内容如下:

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: python train.py --data coco128.yaml
# parent
# ├── yolov5
# └── 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: ../datasets/old_money  # dataset root dir  就是你的数据集的最大层的那个目录
train: images/train  # train images (relative to 'path') 128 images 和上边的path拼接在一起组成训练目录
val: images/val  # val images (relative to 'path') 128 images  和上边的path拼接在一起组成验证目录
test: images/test # test images (optional)  和上边的path拼接在一起组成测试目录

# Classes
names:
  0: money  # 你项目的类别从零开始左边是数字,右边是名字,多个可以参考coco128.yaml

## Download script/URL (optional)  
#download: https://ultralytics.com/assets/coco128.zip

5、训练:在yolov5目录下打开一个中断,运行如下命令即可

 python train.py --data old_money.yaml

6、验证:在yolov5目录下打开一个中断,运行如下命令即可

python val.py --weights ./runs/train/exp/weights/best.pt --data old_money.yaml --img 640

7、测试:在yolov5目录下打开一个中断,运行如下命令即可

 python detect.py --weights './runs/train/exp/weights/best.pt' --source '../datasets/old_money/images/test/*.jpg'

8、运行结果会在yolov5目录下的runs目录下,自己看看吧

9、其他的运行参数需要参考各自的ArgumentParser


http://www.niftyadmin.cn/n/160076.html

相关文章

PPT设计资源汇总

PPT设计资源汇总 时间:2023-3-16 版次:Version 1 编写人:PEZHANG 对已掌握的PPT设计资源进行了汇总梳理,部分链接加载可能需要外网,供参考,资源条目罗列如下: 图片素材网站(4个图片…

MyBatis的Dao层实现方式

1.MyBatis的Dao层实现 1.1编写传统开发式 1.编写UserDao接口 public interface UserDao {List<User> findAll() throws IOException; } 2.编写UserDaoImpl实现 public class UserDaoImpl implements UserDao {public List<User> findAll() throws IOException {…

互联网医院开发|互联网医院申请需具备哪些条件?

这几年随着互联网技术的不断进步&#xff0c;医院也开始开展线上业务来带动线下业务&#xff0c;互联网医院就是依托于实体医院&#xff0c;为人们提供常规咨询和在线复诊等服务&#xff0c;虽然随着电子技术的发展&#xff0c;排队情况日渐好转&#xff0c;但去一次医院花大半…

28个案例问题分析---15---登陆之后我加入的课程调用接口报错--ArrayList线程不安全。占用内存情况

ArrayList线程不安全。占用内存情况故事背景方案&思路解决线程不安全的问题方案一&#xff1a;在这两个方法之前添加 synchronized 关键字。方案二&#xff1a;使用ThreadLocal变量。解决重复创建对象问题。总结&升华故事背景 存入redis的值&#xff0c;可能会出现错误…

[oeasy]python0110 屏幕点阵字体_3x5_5x7_雅达利字库

屏幕点阵字库 回忆上次内容 上次回顾了 字符字型 的 进化过程 从 谷腾堡 活字印刷中的 平织菱足体 到 文艺复兴中的 罗马正字 和 意大利斜体 再到 电传打字机 中的 teletype 字模 最终 发展到 点阵式 打字机Dot Matrix 显示器中的像素 可以构成点阵吗&#xff1f; 发光二极…

转战C#---day5

处理异常&#xff08;try-catch-finally&#xff09; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp10 {class Program{static void Main(string[] …

顺序表和链表的优缺点

这里说的链表是&#xff08;带头循环双向链表&#xff09;&#xff0c;下面我们就说一下他们的优缺点 首先顺序表 优点 1.支持随机访问 2.在O(1)的时间复杂度内&#xff0c;访问下标为i的位置。 3.很多算法的都必须用顺序表例如sort 4.缓存命中率高 缺点 1.每次容量满了…

(贪心法)

*贪心法的概念&#xff1a;&#xff08;记忆&#xff09; 贪心法是一种多步求解的方法 每步按照局部优化的策略选择解&#xff08;元组&#xff09;的一个分量 算法以第n步结束时构造出的解&#xff08;元组&#xff09;作为问题的解 这种局部优化的策略又称为“贪心标准”注意…