三角洲行动数据集
yolov5-yolov11通用数据集
三角洲图片
3w数据集 内含一万摸金 全身标注
讨论如何使用YOLOv5和YOLOv8训练一个包含三角洲行动数据集的模型。假设你的数据集包含3万张图片,其中1万张是摸金(全身标注)。
数据集准备
确保你的数据集按照以下结构组织:
delta_dataset/
│
├── images/
│ ├── train/
│ ├── val/
│ └── test/
│
├── labels/
│ ├── train/
│ ├── val/
│ └── test/
│
└── data.yaml
数据集标注
确保你的数据集已经标注,并且标注文件是YOLO格式的txt文件。每个标注文件包含以下格式:
class_id x_center y_center width height
例如,一个标注文件可能如下所示:
0 0.5 0.5 0.2 0.2 # 摸金
数据配置文件 (data.yaml
)
创建一个data.yaml
文件,用于配置数据集:
train: ./delta_dataset/images/train
val: ./delta_dataset/images/val
test: ./delta_dataset/images/test
nc: 1 # 类别数量(1类)
names: ['mogujin'] # 类别名称
安装YOLOv5和YOLOv8
确保你已经安装了YOLOv5和YOLOv8。你可以使用以下命令安装:
pip install yolov5
pip install ultralytics
训练模型
使用YOLOv5训练模型
python yolov5/train.py --img 640 --batch 16 --epochs 100 --data ./delta_dataset/data.yaml --weights yolov5s.pt --name yolov5_delta
使用YOLOv8训练模型
python train.py --data ./delta_dataset/data.yaml --img 640 --batch 16 --epochs 100 --name yolov8_delta --weights yolov8n.pt
示例代码
6.1. 数据预处理示例
import os
import shutil
def prepare_data(input_dir, output_dir, split='train'):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
for filename in os.listdir(input_dir):
if filename.endswith(('.jpg', '.png', '.jpeg')):
img_path = os.path.join(input_dir, filename)
label_path = os.path.join(input_dir, filename.replace('.jpg', '.txt'))
if os.path.exists(label_path):
shutil.copy(img_path, os.path.join(output_dir, 'images', split))
shutil.copy(label_path, os.path.join(output_dir, 'labels', split))
# 示例用法
prepare_data('./raw_data/train', './delta_dataset', split='train')
prepare_data('./raw_data/val', './delta_dataset', split='val')
prepare_data('./raw_data/test', './delta_dataset', split='test')
6.2. 训练模型示例
import torch
from ultralytics import YOLO
# 加载预训练模型
model = YOLO('yolov8n.pt')
# 配置数据集
data_yaml_path = './delta_dataset/data.yaml'
# 训练模型
model.train(data=data_yaml_path, epochs=100, imgsz=640, batch=16, name='yolov8_delta')
评估模型
评估训练好的模型:
使用YOLOv5评估模型
python yolov5/val.py --data ./delta_dataset/data.yaml --weights runs/train/yolov5_delta/weights/best.pt
使用YOLOv8评估模型
python val.py --data ./delta_dataset/data.yaml --weights runs/train/yolov8_delta/weights/best.pt
使用模型进行检测
假设你已经训练好了模型,并且保存了权重文件(例如best.pt
),你可以使用以下代码进行检测:
import cv2
import torch
from ultralytics import YOLO
# 加载模型
model = YOLO('runs/train/yolov8_delta/weights/best.pt')
# 加载图片
image_path = 'path_to_your_image.jpg'
image = cv2.imread(image_path)
# 进行检测
results = model(image)
# 显示结果
for result in results:
boxes = result.boxes
for box in boxes:
x1, y1, x2, y2 = box.xyxy[0].tolist()
cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
label = model.names[int(box.cls[0])]
cv2.putText(image, label, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
# 显示图像
cv2.imshow('Detection Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
总结
通过上述步骤,你可以使用YOLOv5和YOLOv8训练一个高精度的模型来检测三角洲行动数据集中的摸金。确保数据集标注正确,并且模型训练参数设置合理,可以进一步提高模型的精度。