如何训练自己的数据集?恶劣天气目标检测数据集 极端天气雨天 雾天 夜间 下雪道路目标检测数据集 极端恶劣天气道路目标检测数据集
【恶劣天气目标检测数据集】共2000张,包含YOLO格式和VOC 格式,已划分为训练验证。
,YOLO格式VOC 格式道路目标检测数据集 4种天气下雨雾天夜间下雪8类行人车检测 恶劣天气数据集 极端天气数据集 天气道路目标检测数据集 雨天雾天下雨黑夜道路数据集
天气状况: fog(雾)、nighttime(夜间)、rain(雨)和 snow(雪)。
类别: person(人)、rider(骑手)、car(汽车)、truck(卡车)、bus(公共汽车)、train(火车)、motorcycle(摩托车)、bicycle(自行车)八个类别。
【恶劣天气目标检测数据集】共2000张,包含YOLO格式和VOC 格式,已划分为训练验证。
天气状况: fog(雾)、nighttime(夜间)、rain(雨)和 snow(雪)。
类别: person(人)、rider(骑手)、car(汽车)、truck(卡车)、bus(公共汽车)、train(火车)、motorcycle(摩托车)、bicycle(自行车)八个类别。
恶劣天气目标检测数据集介绍
数据集概述
该数据集旨在解决在恶劣天气条件下(雾、夜间、雨、雪)进行目标检测的问题。数据集包含2000张图片,并已经划分为训练集和验证集。数据集中的图像已经标注为八种类别:人(person)、骑手(rider)、汽车(car)、卡车(truck)、公共汽车(bus)、火车(train)、摩托车(motorcycle)和自行车(bicycle)。数据集提供了YOLO格式和VOC格式的标注文件,可以直接用于模型训练。
数据集特点
- 恶劣天气条件 :数据集包含四种典型的恶劣天气条件——雾(fog)、夜间(nighttime)、雨(rain)和雪(snow),这对于开发能够在不同天气条件下工作的目标检测系统至关重要。
- 多样化的目标类别 :数据集涵盖了八种不同类型的目标,包括行人、车辆等,能够帮助模型更好地理解复杂的城市交通场景。
- 多格式支持 :数据集提供YOLO格式和VOC格式的标注文件,方便使用不同框架的研究者和开发者。
数据集内容
- 图像文件 :共有2000张JPG/PNG格式的图像文件。
- 标注文件 :每张图像都配有YOLO格式和VOC格式的标注文件。
数据集结构示例
数据集的根目录为 weather_detection_dataset,其结构可能如下所示:
weather_detection_dataset/
├── images/
│ ├── train/
│ │ ├── train_image_0001.jpg
│ │ ├── train_image_0002.jpg
│ │ └── ...
│ ├── val/
│ │ ├── val_image_0001.jpg
│ │ ├── val_image_0002.jpg
│ │ └── ...
├── labels_yolo/
│ ├── train/
│ │ ├── train_image_0001.txt
│ │ ├── train_image_0002.txt
│ │ └── ...
│ ├── val/
│ │ ├── val_image_0001.txt
│ │ ├── val_image_0002.txt
│ │ └── ...
├── labels_voc/
│ ├── train/
│ │ ├── train_image_0001.xml
│ │ ├── train_image_0002.xml
│ │ └── ...
│ ├── val/
│ │ ├── val_image_0001.xml
│ │ ├── val_image_0002.xml
│ │ └── ...
└── data.yaml # 数据集配置文件

数据集配置文件 data.yaml
创建一个data.yaml文件来描述您的数据集。这里假设数据集被放置在一个名为weather_detection_dataset的目录中,且包含images和labels子目录。
# data.yaml 文件
train: ../weather_detection_dataset/images/train/
val: ../weather_detection_dataset/images/val/
test: ../weather_detection_dataset/images/test/ # optional
nc: 8 # number of classes
names: ['person', 'rider', 'car', 'truck', 'bus', 'train', 'motorcycle', 'bicycle'] # class names
训练模型
使用YOLOv5框架进行训练的步骤如下:
示例代码
安装YOLOv5
如果您还没有安装YOLOv5,请按照官方文档执行以下命令:
git clone https://github.com/ultralytics/yolov5.git # clone repo
cd yolov5
pip install -r requirements.txt # install dependencies
使用YOLOv5命令行训练
使用以下命令开始训练模型:
cd yolov5
python train.py --img 640 --batch 16 --epochs 300 --data ../weather_detection_dataset/data.yaml --weights yolov5s.pt --cache
自定义训练脚本
如果需要更详细的控制,可以编写一个Python脚本来执行训练过程。以下是一个简单的脚本示例:
import torch
from utils.datasets import LoadImagesAndLabels # 导入数据加载器
from models.experimental import attempt_load # 导入模型加载器
from utils.torch_utils import select_device # 导入选用设备的函数
from utils.general import check_dataset # 导入检查数据集的函数
def main():
device = select_device('') # 选择设备,自动选择GPU/CPU
data_yaml = '../weather_detection_dataset/data.yaml'
train_images_folder = '../weather_detection_dataset/images/train/'
train_labels_folder = '../weather_detection_dataset/labels_yolo/train/'
val_images_folder = '../weather_detection_dataset/images/val/'
val_labels_folder = '../weather_detection_dataset/labels_yolo/val/'
# 加载数据集
train_set = LoadImagesAndLabels(train_images_folder, train_labels_folder)
val_set = LoadImagesAndLabels(val_images_folder, val_labels_folder)
# 创建数据加载器
train_loader = torch.utils.data.DataLoader(train_set, batch_size=16, shuffle=True, num_workers=4)
val_loader = torch.utils.data.DataLoader(val_set, batch_size=16, shuffle=False, num_workers=4)
# 加载预训练模型
model = attempt_load('yolov5s.pt', map_location=device) # 加载预训练权重
model.to(device)
# 设置损失函数和优化器
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
# 训练循环
epochs = 300
for epoch in range(epochs):
model.train()
for images, targets, _, _ in train_loader:
images = images.to(device)
targets = [t.to(device) for t in targets]
# 前向传播
outputs = model(images)
# 计算损失
loss = criterion(outputs, targets)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item()}')
torch.save(model.state_dict(), 'trained_model.pt')
print('Training complete.')
if __name__ == '__main__':
main()

注意事项
- 确保
data.yaml文件中的路径是正确的,并且数据集的结构与上面描述的一致。 - 调整批量大小、学习率、迭代次数等超参数以适应您的计算资源和任务需求。
- 如果数据集很大,您可能需要更多的计算资源和时间来完成训练。
- 这个脚本仅作为一个起点,您可能需要根据实际情况做进一步的修改。
测试模型
在训练完成后,您可以通过以下命令测试模型的性能:
python detect.py --weights runs/train/exp/weights/best.pt --img 640 --conf 0.4 --source ../weather_detection_dataset/images/test/
总结
这个示例展示了如何使用YOLOv5框架训练一个基于恶劣天气条件下的目标检测模型。您可以根据自己的需求调整脚本中的参数和逻辑。通过使用这个数据集和相应的训练代码,您可以有效地训练出一个能够在不同天气条件下进行目标检测的模型。
