大量火焰烟雾识别数据集,46000余张图像,22GB数据量,提供voc标注,yolo标注,涵盖高位摄像头,无人机拍摄,日常场景拍摄等多种场景,+yolo训练代码 火焰数据集 烟雾数据集 森林火灾数据集
- 大规模火焰与烟雾识别数据集
- 规模:46,000余张图像,数据量约22GB
- 类别:主要检测两类目标
- 火焰
- 烟雾
- 标注格式:支持VOC格式标注,同时提供YOLO格式标注
- 场景:涵盖高位摄像头拍摄、无人机拍摄、日常场景拍摄等多种场景
数据集特点
- 高质量影像:所有图像均为高分辨率的图像,适合用于精确的目标检测。
- 详细标注:每张图像都有详细的边界框标注,采用VOC和YOLO格式。这些标注可以用于训练模型来识别火焰与烟雾。
- 多样性:包含多种环境下拍摄的图像,如不同拍摄位置、不同的光照条件、不同的天气状况等,适用于各种应用场景。
- 广泛适用性:支持多种深度学习框架,特别是VOC和YOLO系列模型。
数据集统计
目标类别 | 图片张数 | 标注个数 |
---|---|---|
火焰 | ||
烟雾 | ||
总计 | >46,000 |
数据集结构
FlameAndSmokeDetectionDataset/
├── images/ # 图像文件
│ ├── train/ # 训练集图像
│ │ ├── image_00001.jpg
│ │ ├── image_00002.jpg
│ │ └── ...
│ ├── val/ # 验证集图像
│ │ ├── image_00001.jpg
│ │ ├── image_00002.jpg
│ │ └── ...
│ └── test/ # 测试集图像
│ ├── image_00001.jpg
│ ├── image_00002.jpg
│ └── ...
├── annotations/ # VOC格式标签
│ ├── train/ # 训练集标签
│ │ ├── image_00001.xml
│ │ ├── image_00002.xml
│ │ └── ...
│ ├── val/ # 验证集标签
│ │ ├── image_00001.xml
│ │ ├── image_00002.xml
│ │ └── ...
│ └── test/ # 测试集标签
│ ├── image_00001.xml
│ ├── image_00002.xml
│ └── ...
├── labels/ # YOLO格式标签
│ ├── train/ # 训练集标签
│ │ ├── image_00001.txt
│ │ ├── image_00002.txt
│ │ └── ...
│ ├── val/ # 验证集标签
│ │ ├── image_00001.txt
│ │ ├── image_00002.txt
│ │ └── ...
│ └── test/ # 测试集标签
│ ├── image_00001.txt
│ ├── image_00002.txt
│ └── ...
└── data.yaml # 数据配置文件
标注格式示例、
每行表示一个物体的边界框和类别:
YOLO格式
class_id cx cy w h
class_id
:类别ID(从0开始编号)- 0:
火焰
- 1:
烟雾
- 0:
cx
:目标框中心点x坐标 / 图像宽度。cy
:目标框中心点y坐标 / 图像高度。w
:目标框宽度 / 图像宽度。h
:目标框高度 / 图像高度。
例如:
0 0.453646 0.623148 0.234375 0.461111
VOC格式
<annotation>
<folder>train</folder>
<filename>image_00001.jpg</filename>
<path>/path/to/dataset/train/image_00001.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>640</width>
<height>480</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>火焰</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>100</xmin>
<ymin>200</ymin>
<xmax>300</xmax>
<ymax>400</ymax>
</bndbox>
</object>
<!-- 更多对象 -->
</annotation>
获取数据集
使用该数据集进行模型训练
1. 数据预处理与加载
首先,我们需要加载数据并将其转换为适合YOLOv5等模型使用的格式。假设你已经安装了PyTorch和YOLOv5。
import os
from PIL import Image
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
class FlameAndSmokeDetectionDataset(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')]
def __len__(self):
return len(self.image_files)
def __getitem__(self, idx):
img_name = self.image_files[idx]
img_path = os.path.join(self.image_dir, img_name)
label_path = os.path.join(self.label_dir, img_name.replace('.jpg', '.txt'))
# 加载图像
image = Image.open(img_path).convert('RGB')
if self.transform:
image = self.transform(image)
# 加载标注
with open(label_path, 'r') as f:
lines = f.readlines()
boxes = []
labels = []
for line in lines:
class_id, cx, cy, w, h = map(float, line.strip().split())
boxes.append([cx, cy, w, h])
labels.append(int(class_id))
boxes = torch.tensor(boxes, dtype=torch.float32)
labels = torch.tensor(labels, dtype=torch.int64)
return image, boxes, labels
# 数据增强
transform = transforms.Compose([
transforms.Resize((640, 640)),
transforms.ToTensor(),
])
# 创建数据集
train_dataset = FlameAndSmokeDetectionDataset(image_dir='FlameAndSmokeDetectionDataset/images/train/', label_dir='FlameAndSmokeDetectionDataset/labels/train/', transform=transform)
val_dataset = FlameAndSmokeDetectionDataset(image_dir='FlameAndSmokeDetectionDataset/images/val/', label_dir='FlameAndSmokeDetectionDataset/labels/val/', transform=transform)
test_dataset = FlameAndSmokeDetectionDataset(image_dir='FlameAndSmokeDetectionDataset/images/test/', label_dir='FlameAndSmokeDetectionDataset/labels/test/', transform=transform)
train_loader = DataLoader(train_dataset, batch_size=4, shuffle=True, num_workers=4)
val_loader = DataLoader(val_dataset, batch_size=4, shuffle=False, num_workers=4)
test_loader = DataLoader(test_dataset, batch_size=4, shuffle=False, num_workers=4)
2. 构建模型
我们可以使用YOLOv5模型进行目标检测任务。假设你已经克隆了YOLOv5仓库,并按照其文档进行了环境设置
git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
创建数据配置文件 data/flame_and_smoke_detection.yaml
:
train: path/to/FlameAndSmokeDetectionDataset/images/train
val: path/to/FlameAndSmokeDetectionDataset/images/val
test: path/to/FlameAndSmokeDetectionDataset/images/test
nc: 2 # 类别数
names: ['火焰', '烟雾']
3. 训练模型
使用YOLOv5进行训练。
python train.py --img 640 --batch 16 --epochs 100 --data data/flame_and_smoke_detection.yaml --weights yolov5s.pt --cache
4. 评估模型
在验证集上评估模型性能。
python val.py --img 640 --batch 16 --data data/flame_and_smoke_detection.yaml --weights runs/train/exp/weights/best.pt --task test
5. 推理
使用训练好的模型进行推理。
python detect.py --source path/to/test/image.jpg --weights runs/train/exp/weights/best.pt --conf 0.5
提供YOLO训练代码
如果您需要完整的YOLO训练代码,可以联系卖家或查看YOLOv5官方文档和示例代码。通常情况下,YOLOv5项目里会包含一个train.py
脚本,您可以根据您的数据集路径和配置文件进行相应的修改即可使用。
实验报告
实验报告应包括以下内容:
- 项目简介:简要描述项目的背景、目标和意义。
- 数据集介绍:详细介绍数据集的来源、规模、标注格式等。
- 模型选择与配置:说明选择的模型及其配置参数。
- 训练过程:记录训练过程中的损失变化、学习率调整等。
- 评估结果:展示模型在验证集上的性能指标(如mAP、准确率)。
- 可视化结果:提供一些典型样本的检测结果可视化图。
- 结论与讨论:总结实验结果,讨论可能的改进方向。
- 附录:包含代码片段、图表等补充材料。
依赖库
确保安装了以下依赖库:
pip install torch torchvision
pip install -r yolov5/requirements.txt
总结
这个大规模火焰与烟雾识别数据集提供了丰富的标注数据,非常适合用于训练和评估目标检测模型。通过YOLOv5框架,可以方便地构建和训练高性能的目标检测模型。实验报告可以帮助你更好地理解和分析模型的表现,并为进一步的研究提供参考。
标签:FlameAndSmokeDetectionDataset,集之,--,image,train,识别,数据,self,dir From: https://blog.csdn.net/2401_88441190/article/details/143234882