YOLOv8 训练工程车航拍数据集,1260 张航拍工程车数据集
如何使用 YOLOv8 训练工程车航拍数据集的详细步骤。这个数据集包含 1260 张航拍工程车图片标注文件为 VOC 和 YOLO 格式可以直接用于模型训练。我们将详细介绍如何整合这些数据集并使用 YOLOv8 进行训练。一、数据准备数据集结构假设你的数据集已经按照 YOLO 格式组织并且结构如下深色版本construction_vehicle_dataset/├── images/│ ├── train/│ │ ├── 000001.jpg│ │ ├── 000002.jpg│ │ └── …│ └── val/│ ├── 000001.jpg│ ├── 000002.jpg│ └── …├── labels/│ ├── train/│ │ ├── 000001.txt│ │ ├── 000002.txt│ │ └── …│ └── val/│ ├── 000001.txt│ ├── 000002.txt│ └── …└── construction_vehicle.yamlimages/ 目录包含输入图像。labels/ 目录包含对应的标注文件每个标注文件中的每一行表示一个目标框格式为 class_id x_center y_center width height。construction_vehicle.yaml 是数据集的配置文件。2. 配置文件创建一个 construction_vehicle.yaml 文件内容如下yaml深色版本数据集路径path: ./construction_vehicle_dataset类别名称names:0: construction_vehicle数据集划分train: images/trainval: images/val二、安装依赖确保你已经安装了 YOLOv8 所需的依赖。可以使用以下命令安装bash深色版本pip install ultralytics三、训练模型导入库python深色版本import torchfrom ultralytics import YOLO加载模型python深色版本加载预训练的YOLOv8s模型model YOLO(‘yolov8s.yaml’)3. 配置训练参数python深色版本配置训练参数model.train(data‘construction_vehicle.yaml’, # 数据集配置文件epochs100, # 训练轮数imgsz640, # 输入图像大小batch16, # 批量大小name‘construction_vehicle_detection’, # 训练结果保存的文件夹名称device‘cuda’ # 使用GPU进行训练)四、评估模型训练完成后可以使用验证集来评估模型的性能。python深色版本评估模型results model.val(data‘construction_vehicle.yaml’, imgsz640, batch16, device‘cuda’)打印评估结果print(results)五、保存模型训练完成后模型会自动保存到指定的文件夹中。你也可以手动保存模型python深色版本保存模型model.save(‘construction_vehicle_detection_model.pt’)六、完整代码将上述所有步骤整合成一个完整的脚本python深色版本import torchfrom ultralytics import YOLO加载预训练的YOLOv8s模型model YOLO(‘yolov8s.yaml’)配置训练参数model.train(data‘construction_vehicle.yaml’, # 数据集配置文件epochs100, # 训练轮数imgsz640, # 输入图像大小batch16, # 批量大小name‘construction_vehicle_detection’, # 训练结果保存的文件夹名称device‘cuda’ # 使用GPU进行训练)评估模型results model.val(data‘construction_vehicle.yaml’, imgsz640, batch16, device‘cuda’)打印评估结果print(results)保存模型model.save(‘construction_vehicle_detection_model.pt’)七、运行脚本将上述代码保存为一个 Python 脚本文件例如 train_construction_vehicle_detection.py然后在命令行中运行bash深色版本python train_construction_vehicle_detection.py八、数据增强代码数据增强脚本python深色版本import albumentations as Aimport cv2import osdef augment_image(image_path, label_path, output_dir, num_augments5):transform A.Compose([A.HorizontalFlip(p0.5),A.RandomBrightnessContrast(p0.2),A.RandomGamma(p0.2),A.RandomRotate90(p0.5),A.Cutout(num_holes8, max_h_size8, max_w_size8, fill_value0, p0.5)], bbox_paramsA.BboxParams(format‘yolo’, label_fields[‘class_labels’]))image cv2.imread(image_path) with open(label_path, r) as f: lines f.readlines() bboxes [] class_labels [] for line in lines: parts line.strip().split() class_id int(parts[0]) x_center, y_center, width, height map(float, parts[1:]) bboxes.append([x_center, y_center, width, height]) class_labels.append(class_id) for i in range(num_augments): augmented transform(imageimage, bboxesbboxes, class_labelsclass_labels) augmented_image augmented[image] augmented_bboxes augmented[bboxes] augmented_class_labels augmented[class_labels] output_image_path os.path.join(output_dir, f{os.path.splitext(os.path.basename(image_path))[0]}_aug_{i}.jpg) output_label_path os.path.join(output_dir, f{os.path.splitext(os.path.basename(image_path))[0]}_aug_{i}.txt) cv2.imwrite(output_image_path, augmented_image) with open(output_label_path, w) as f: for j in range(len(augmented_bboxes)): bbox augmented_bboxes[j] class_id augmented_class_labels[j] f.write(f{class_id} {bbox[0]} {bbox[1]} {bbox[2]} {bbox[3]}\n)增强训练集train_image_dir ‘construction_vehicle_dataset/images/train’train_label_dir ‘construction_vehicle_dataset/labels/train’output_dir ‘construction_vehicle_dataset/augmented/train’os.makedirs(output_dir, exist_okTrue)for image_file in os.listdir(train_image_dir):image_path os.path.join(train_image_dir, image_file)label_path os.path.join(train_label_dir, image_file.replace(‘.jpg’, ‘.txt’))augment_image(image_path, label_path, output_dir, num_augments5)增强验证集val_image_dir ‘construction_vehicle_dataset/images/val’val_label_dir ‘construction_vehicle_dataset/labels/val’output_dir ‘construction_vehicle_dataset/augmented/val’os.makedirs(output_dir, exist_okTrue)for image_file in os.listdir(val_image_dir):image_path os.path.join(val_image_dir, image_file)label_path os.path.join(val_label_dir, image_file.replace(‘.jpg’, ‘.txt’))augment_image(image_path, label_path, output_dir, num_augments5)九、注意事项数据集路径确保数据集路径正确特别是图片和标注文件的路径。硬件资源训练大型模型可能需要较多的计算资源建议使用 GPU。超参数调整根据实际情况调整学习率、批量大小等超参数以获得更好的训练效果。数据增强为了提高模型的泛化能力可以在训练过程中使用数据增强技术如随机裁剪、翻转等。十、引用数据集如果你需要在论文中引用这个数据集可以参考以下格式bibtex深色版本article{construction_vehicle_dataset,title{Aerial Construction Vehicle Detection Dataset},author{Author Name},journal{Journal Name},year{2023},note{Available at: \url{https://example.com/construction_vehicle_dataset}}}请根据实际的数据集来源和作者信息进行修改。希望这些步骤和脚本能帮助你成功训练一个工程车航拍检测模型。