当前位置: 首页 > news >正文

Python----目标检测(YOLO数据集)

一、YOLO数据集

        YOLO(You Only Look Once)是一种实时目标检测系统,其数据集格式 与 COCO 数据集格式不同。YOLO 数据集格式相对简单,主要包括图像文 件和对应的标签文件。

二、YOLO 数据集结构

YOLO 数据集的目录结构通常如下:

/dataset_root/  
├── images/  
│   ├── train/  
│   │   ├── img1.jpg  
│   │   ├── img2.jpg  
│   │   └── ...  
│   ├── val/  
│   │   ├── img101.jpg  
│   │   ├── img102.jpg  
│   │   └── ...  
│   └── test/  (可选)  
│       ├── img201.jpg  
│       └── ...  
├── labels/  
│   ├── train/  
│   │   ├── img1.txt  
│   │   ├── img2.txt  
│   │   └── ...  
│   ├── val/  
│   │   ├── img101.txt  
│   │   ├── img102.txt  
│   │   └── ...  
│   └── test/  (如果有测试集标签)  
│       ├── img201.txt  
│       └── ...  
└── data.yaml  (数据集配置文件)  

1. 图像文件:

        图像通常为 .jpg 或 .png 格式,存储在一个单独的目录中。

2. 标签文件:

        每个图像有一个对应的标签文件,文件扩展名为 .txt。

        标签文件与图像文件同名,但扩展名不同。

        每个标签文件包含多个标注,每个标注对应图像中的一个对象。

21、标签文件详细说明

每行表示一个对象,行内容格式为:<object-class><x_center><y_center> <width> <height>。

<object-c1ass>:对象的类别,从0开始的整数。例如,类别0可能代表"person",类别1可能代表"bicycle"等。

<x_center>:边界框中心的x坐标,相对于图像宽度进行归一化,取值范围 [0, 1]。

<y_center>:边界框中心的y坐标,相对于图像高度进行归一化,取值范围[0,1]。

<width>:边界框的宽度,相对于图像宽度进行归一化,取值范围[0,1]。

<height>:边界框的高度,相对于图像高度进行归一化,取值范围 [0,1].

假设有一张图像 image1.jpg,其对应的标签文件为 文件可能包含以下内容:

0 0.5 0.5 0.2 0.3

1 0.3 0.7 0.1 0.2

这表示图像中有两个对象:

        1. 第一个对象的类别为 0,中心位于图像的 (0.5, 0.5) 处,宽度为图像宽 度的 20%,高度为图像高度的 30%。

        2. 第二个对象的类别为 1,中心位于图像的 (0.3, 0.7) 处,宽度为图像宽 度的 10%,高度为图像高度的 20%。

三、YOLOV8的数据结构

        在YOLOV8中,除了图像和标签文件外,还需要一个配置文件 mydata.yaml 来定义数据集的路径、类别和其他相关信息。这个 YAML 文 件用于配置训练和验证过程中的数据集信息。

# peach
train: dataset/train 
val: dataset/valid  
test: dataset/test # Classes
names:0: insulator1: defect

 四、示例

import os
from PIL import Image, ImageDraw, ImageFont  # 导入PIL库中相关模块
import yaml# 读取mydata.yaml配置
with open('./dataset/mydata.yaml', 'r', encoding='utf-8') as file:config = yaml.safe_load(file)train_path = config['train']
val_path = config['val']
test_path = config['test']# 类别名称映射
class_names = config['names']# 数据集路径
img_path = os.path.join(train_path, "images")
label_path = os.path.join(train_path, "labels")
print(img_path)# 处理前1张图像
for img_file in os.listdir(img_path)[:1]:if img_file.endswith('.jpg') or img_file.endswith('.png'):print(os.path.join(img_path, img_file))# 打开图像img = Image.open(os.path.join(img_path, img_file))draw = ImageDraw.Draw(img)width, height = img.size# 打开对应的标签文件label_file = os.path.join(label_path, img_file.replace('.jpg', '.txt').replace('.png', '.txt'))with open(label_file, 'r') as f:lines = f.readlines()for line in lines:parts = line.strip().split()class_id = int(parts[0])x_center, y_center, bbox_width, bbox_height = map(float, parts[1:])# 计算边界框的坐标x_min = int((x_center - bbox_width / 2) * width)y_min = int((y_center - bbox_height / 2) * height)x_max = int((x_center + bbox_width / 2) * width)y_max = int((y_center + bbox_height / 2) * height)# 绘制边界框draw.rectangle([(x_min, y_min), (x_max, y_max)], outline=(0, 255, 0), width=2)# 绘制类别标签class_name = class_names[class_id]draw.text((x_min, y_min - 10), class_name, fill=(0, 255, 0))# 显示图像img.show()

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

相关文章:

  • Spring IoC(1)
  • 同一个核磁共振(MRI)检查中,不同序列的图像之间空间坐标定位如何实现
  • JESD204B 协议介绍
  • 服务器的IP是什么东西?
  • 基于FPGA的IIC多通道选择器(IIC Switch/Bridge)
  • 三、Docker目录挂载、卷映射、网络
  • OpenCV CUDA模块图像过滤------创建一个 Sobel 滤波器函数createSobelFilter()
  • Qt6无法识别OpenCV(Windows端开发)
  • 新一代WebP2P视频物联技术:EasyRTC嵌入式音视频通信SDK助力音视频实时通信场景应用
  • 蜂鸟E203与PicoRV32两款RISC-V处理器的对比分析
  • 紫光同创FPGA实现视频采集转USB2.0输出,基于CY7C68013芯片,提供PDS工程源码和技术支持和QT上位机
  • 05-jenkins学习之旅-vue前项目部署实践
  • hadoop异构存储
  • crc32代码设计
  • Docker基础 -- 构建 RK3588 Debian 根文件系统
  • 海思3519V200ARM Linux 下移植 Qt5.8.0
  • EPT(Efficient Prompt Tuning)方法,旨在解决提示调优(Prompt Tuning)中效率与准确性平衡和跨任务一致性的问题
  • Android studio进阶开发(六)--如何用真机通过okhttp连接服务器
  • 20250526惠普HP锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U)的显卡驱动下载
  • Linux_编辑器Vim基本使用
  • 【iOS】 锁
  • Linux(Centos 7.6)命令详解:tar
  • jEasyUI 表单的 CRUD 应用
  • pgsql 一些用法
  • 【C++指南】string(四):编码
  • Android 架构演进之路:从 MVC 到 MVI,拥抱单向数据流的革命
  • 手机发热怎么办?
  • 网络安全全知识图谱:威胁、防护、管理与发展趋势详解
  • 【后端高阶面经:缓存篇】37、高并发系统缓存性能优化:从本地到分布式的全链路设计
  • 上海市计算机学会竞赛平台2025年5月月赛丙组手机充电