井盖状态检测数据集 yolo格式 五种类别:broke(井盖破损),good(完好),circle(边圈破损),lose(井盖丢失),uncovered(井盖位移/未覆盖全)
训练数据已划分,配置文件稍做路径改动即可训练。 训练集:1217 验证集:108
使用YOLOv5来训练一个包含1217张训练图像和108张验证图像的井盖状态检测数据集。这个数据集包含五个类别:破损(broke)、完好(good)、边圈破损(circle)、丢失(lose)、位移/未覆盖全(uncovered)。数据集已划分为训练集和验证集,并且配置文件稍作路径改动即可训练。
数据集描述
- 数据量:
- 训练集:1217张图像
- 验证集:108张图像
- 类别:
- 0: 破损(broke)
- 1: 完好(good)
- 2: 边圈破损(circle)
- 3: 丢失(lose)
- 4: 位移/未覆盖全(uncovered)
- 标注格式:YOLO格式
- 应用场景:井盖状态检测
数据集组织
假设你的数据集目录结构如下:
manhole_cover_detection_dataset/
├── train/
│ ├── images/
│ └── labels/
├── valid/
│ ├── images/
│ └── labels/
└── data.yaml # 数据配置文件
其中:
train/
包含训练集的图像和TXT标签文件。valid/
包含验证集的图像和TXT标签文件。data.yaml
包含数据配置信息。
数据配置文件
创建或确认data.yaml
文件是否正确配置了数据集路径和类别信息:
train: ./train/images/ # 训练集图像路径
val: ./valid/images/ # 验证集图像路径
# Classes
nc: 5 # 类别数量
names:
- broke
- good
- circle
- lose
- uncovered # 类别名称列表
安装YOLOv5
如果你还没有安装YOLOv5,可以使用以下命令安装:
pip install yolov5
训练模型
使用YOLOv5训练模型的命令非常简单,你可以直接使用以下命令开始训练:
cd path/to/manhole_cover_detection_dataset/
# 克隆YOLOv5仓库
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
# 下载预训练权重
wget https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt
# 开始训练
python train.py --img 640 --batch 16 --epochs 100 --data ../data.yaml --weights yolov5s.pt --cache
在这个命令中:
--img 640
:输入图像的大小。--batch 16
:批量大小。--epochs 100
:训练轮数。--data ../data.yaml
:指定数据配置文件。--weights yolov5s.pt
:指定预训练权重。--cache
:使用缓存以加快训练速度。
模型评估
训练完成后,可以使用以下命令评估模型在验证集上的表现:
python val.py --data ../data.yaml --weights runs/train/exp/weights/best.pt --img 640
这里的runs/train/exp/weights/best.pt
是训练过程中产生的最佳模型权重文件。
模型预测
你可以使用训练好的模型对新图像进行预测:
python detect.py --source path/to/your/image.jpg --weights runs/train/exp/weights/best.pt --img 640 --conf 0.4 --iou 0.5
查看训练结果
训练过程中的日志和结果会保存在runs/train/
目录下,你可以查看训练过程中的损失、精度等信息。
数据增强
为了进一步提高模型性能,可以使用数据增强技术。以下是一个简单的数据增强示例:
-
安装
albumentations
库:pip install -U albumentations
-
在
train.py
中添加数据增强:import albumentations as A from albumentations.pytorch import ToTensorV2 import cv2 # 定义数据增强 transform = A.Compose([ A.RandomSizedBBoxSafeCrop(width=640, height=640, erosion_rate=0.2), A.HorizontalFlip(p=0.5), A.VerticalFlip(p=0.5), A.Rotate(limit=10, p=0.5, border_mode=cv2.BORDER_CONSTANT), A.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.2, p=0.5), A.GaussNoise(var_limit=(10.0, 50.0), p=0.5), A.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ToTensorV2() ], bbox_params=A.BboxParams(format='yolo', label_fields=['class_labels'])) # 在数据加载器中应用数据增强 def collate_fn(batch): images, targets = zip(*batch) transformed_images = [] transformed_targets = [] for img, target in zip(images, targets): bboxes = target['bboxes'] class_labels = target['labels'] augmented = transform(image=img, bboxes=bboxes, class_labels=class_labels) transformed_images.append(augmented['image']) transformed_targets.append({ 'bboxes': augmented['bboxes'], 'labels': augmented['class_labels'] }) return torch.stack(transformed_images), transformed_targets
注意事项
- 数据集质量:确保数据集的质量,包括清晰度、标注准确性等。
- 模型选择:可以选择更强大的模型版本(如YOLOv5m、YOLOv5l等)以提高性能。
- 超参数调整:根据实际情况调整超参数,如批量大小(
batch-size
)、图像大小(imgsz
)等。 - 监控性能:训练过程中监控损失函数和mAP指标,确保模型收敛。
通过上述步骤,你可以使用YOLOv5来训练一个井盖状态检测数据集,并使用训练好的模型进行预测。
标签:labels,训练,--,检测,井盖,train,数据 From: https://blog.csdn.net/2401_88440984/article/details/143421898