矿井人员数据集,用于目标检测,深度学习,采用txt打标签,即yolo格式,也有原文件可以自己转换。总共3500张图片的数据量,划分给训练集2446张

矿井人员数据集,用于目标检测,深度学习,采用txt打标签,即yolo格式,也有原文件可以自己转换。总共3500张图片的数据量,划分给训练集2446张

项目介绍:矿井人员目标检测数据集

项目名称

矿井人员目标检测数据集

项目概述

本项目提供了一个用于矿井环境中人员目标检测的数据集,包含3500张图片。这些图片已经用YOLO格式(即txt文件)进行了标注,可以直接用于训练和测试基于深度学习的目标检测模型。数据集分为训练集和测试集,其中2446张图片用于训练,其余1054张图片用于测试。

项目特点
  • 高质量标注:所有图像都使用YOLO格式进行了精确标注。
  • 大规模数据量:总共有3500张图片,足以训练出性能良好的目标检测模型。
  • 真实场景:图片来自真实的矿井环境,具有很高的实用价值。
  • 易于使用:提供了详细的说明文档,方便用户快速上手。
  • 可扩展性:可以轻松地将数据集与其他数据集合并,以适应不同的需求。
项目结构
Mine_Person_Detection_Dataset/
├── images/                               # 图像文件夹
│   ├── train/                            # 训练集图像
│   └── test/                             # 测试集图像
├── labels/                               # 标签文件夹
│   ├── train/                            # 训练集标签
│   └── test/                             # 测试集标签
├── annotations/                          # 其他标注格式(可选)
│   ├── train/                            # 训练集其他标注
│   └── test/                             # 测试集其他标注
├── README.md                             # 项目说明文档
└── data_split.py                         # 数据集划分脚本
项目内容
  1. 数据集

    • 总数据量:3500张图片。
    • 训练集:2446张图片。
    • 测试集:1054张图片。
    • 标注格式:YOLO格式(txt文件),每行表示一个目标,格式为<class> <x_center> <y_center> <width> <height>,其中<class>是类别索引(0代表人员),<x_center><y_center><width><height>都是归一化后的值。
  2. 数据集划分

    • 使用data_split.py脚本将原始数据集划分为训练集和测试集。
    • 脚本会确保每个类别的样本在训练集和测试集中均匀分布。
  3. 数据集使用

    • 图像文件:存储在images/目录下,分为train/test/两个子目录。
    • 标签文件:存储在labels/目录下,同样分为train/test/两个子目录。
    • 其他标注格式:如果需要转换成其他标注格式(如Pascal VOC、COCO等),可以在annotations/目录下进行处理。
代码示例
1. 数据集划分脚本 data_split.py
import os
import shutil
from sklearn.model_selection import train_test_split
import random

# 设置路径
dataset_dir = 'images'
train_dir = 'images/train'
test_dir = 'images/test'
train_label_dir = 'labels/train'
test_label_dir = 'labels/test'

# 创建目录
os.makedirs(train_dir, exist_ok=True)
os.makedirs(test_dir, exist_ok=True)
os.makedirs(train_label_dir, exist_ok=True)
os.makedirs(test_label_dir, exist_ok=True)

# 获取所有图像文件
image_files = [f for f in os.listdir(dataset_dir) if f.endswith('.jpg') or f.endswith('.png')]
random.shuffle(image_files)

# 划分训练集和测试集
train_files, test_files = train_test_split(image_files, test_size=0.3, random_state=42)

# 移动图像文件
for file in train_files:
    shutil.move(os.path.join(dataset_dir, file), os.path.join(train_dir, file))
    label_file = file.replace('.jpg', '.txt').replace('.png', '.txt')
    shutil.move(os.path.join('labels', label_file), os.path.join(train_label_dir, label_file))

for file in test_files:
    shutil.move(os.path.join(dataset_dir, file), os.path.join(test_dir, file))
    label_file = file.replace('.jpg', '.txt').replace('.png', '.txt')
    shutil.move(os.path.join('labels', label_file), os.path.join(test_label_dir, label_file))

print(f"Train set: {len(train_files)} images")
print(f"Test set: {len(test_files)} images")
使用说明
  1. 环境准备

    • 确保安装了Python及其相关库(如shutilsklearn等)。
    • 下载并解压数据集到项目根目录。
  2. 运行数据集划分脚本

    • 在命令行中运行data_split.py脚本,将数据集划分为训练集和测试集。
    • 运行后,images/labels/目录下会生成train/test/子目录。
  3. 加载数据集

    • 可以使用常见的深度学习框架(如PyTorch、TensorFlow等)来加载数据集。
    • 示例代码如下:
import torch
from torchvision import transforms
from torch.utils.data import DataLoader, Dataset
import cv2
import os

class MinePersonDataset(Dataset):
    def __init__(self, image_dir, label_dir, transform=None):
        self.image_dir = image_dir
        self.label_dir = label_dir
        self.transform = transform
        self.image_files = [f for f in os.listdir(image_dir) if f.endswith('.jpg') or f.endswith('.png')]
    
    def __len__(self):
        return len(self.image_files)
    
    def __getitem__(self, idx):
        img_path = os.path.join(self.image_dir, self.image_files[idx])
        label_path = os.path.join(self.label_dir, self.image_files[idx].replace('.jpg', '.txt').replace('.png', '.txt'))
        
        image = cv2.imread(img_path)
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        
        with open(label_path, 'r') as f:
            lines = f.readlines()
        
        boxes = []
        labels = []
        for line in lines:
            class_id, x_center, y_center, width, height = map(float, line.strip().split())
            boxes.append([x_center, y_center, width, height])
            labels.append(int(class_id))
        
        if self.transform:
            image = self.transform(image)
        
        return image, {'boxes': torch.tensor(boxes, dtype=torch.float32), 'labels': torch.tensor(labels, dtype=torch.int64)}

# 数据预处理
transform = transforms.Compose([
    transforms.ToPILImage(),
    transforms.Resize((416, 416)),
    transforms.ToTensor(),
])

# 加载数据集
train_dataset = MinePersonDataset(image_dir='images/train', label_dir='labels/train', transform=transform)
test_dataset = MinePersonDataset(image_dir='images/test', label_dir='labels/test', transform=transform)

train_loader = DataLoader(train_dataset, batch_size=8, shuffle=True, num_workers=4)
test_loader = DataLoader(test_dataset, batch_size=8, shuffle=False, num_workers=4)
注意事项
  • 数据格式:确保图像文件和标签文件的命名一致,以便正确匹配。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 超参数调整:根据实际情况调整网络架构、学习率、批次大小等超参数,以获得更好的性能。

通过上述步骤,你可以轻松地使用这个矿井人员目标检测数据集,并将其应用于深度学习模型的训练和测试。希望这个项目能帮助你更好地理解和应用目标检测技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值