目标检测数据集:河道漂浮物,5种目标:水污染物,废弃船只,漂浮物,捕鱼养殖,废弃垃圾,支持直接YOLO训练,已标注好 3000张
好的,让我们继续详细地介绍如何使用YOLOv8训练河道漂浮物检测数据集,并附上可视化代码,以便在训练和推理过程中查看检测结果。以下是完整的步骤:
1. 数据集准备
确保你的数据集已经按照YOLO格式标注,并且数据集结构如下:
river_debris_dataset/
│
├── images/
│ ├── train/
│ ├── val/
│ └── test/
│
├── labels/
│ ├── train/
│ ├── val/
│ └── test/
│
└── data.yaml
2. 数据集标注
确保每个标注文件是YOLO格式的,例如:
# Example YOLO format label file
0 0.5 0.5 0.1 0.1 # Class ID, x_center, y_center, width, height
1 0.6 0.6 0.1 0.1 # Class ID, x_center, y_center, width, height
3. 数据配置文件 (data.yaml
)
创建一个data.yaml
文件,用于配置数据集:
train: ./river_debris_dataset/images/train
val: ./river_debris_dataset/images/val
test: ./river_debris_dataset/images/test
nc: 5 # 类别数量(5类)
names: ['water_pollutant', 'abandoned_ship', 'floating_debris', 'fishing_culture', 'abandoned_garbage'] # 类别名称
4. 安装依赖
确保你已经安装了ultralytics
库。如果没有安装,可以使用以下命令安装:
pip install ultralytics
5. 训练模型
使用以下命令训练YOLOv8模型:
python train.py --data ./river_debris_dataset/data.yaml --img 640 --batch 16 --epochs 100 --name yolov8_river_debris --weights yolov8n.pt
6. 可视化代码
6.1 训练过程中的可视化
在训练过程中,YOLOv8会自动保存中间结果,并在训练完成后生成一个results.mp4
文件,用于展示训练过程中的检测结果。
6.2 推理过程中的可视化
以下是一个简单的Python脚本,用于使用训练好的模型进行推理,并可视化检测结果:
import cv2
from ultralytics import YOLO
def detect_and_visualize(image_path, model):
# 读取图像
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()
label = box.cls[0].item()
confidence = box.conf[0].item()
# 绘制边界框
cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
cv2.putText(image, f"{model.names[int(label)]}: {confidence:.2f}", (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
# 显示结果
cv2.imshow('Detection Results', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 加载模型
model = YOLO('runs/train/yolov8_river_debris/weights/best.pt')
# 示例图像路径
image_path = 'path/to/image.jpg'
# 运行检测和可视化
detect_and_visualize(image_path, model)
7. 模型测试
训练完成后,你可以使用以下命令测试模型:
python val.py --data ./river_debris_dataset/data.yaml --weights runs/train/yolov8_river_debris/weights/best.pt
8. 模型推理
使用训练好的模型进行推理:
python detect.py --weights runs/train/yolov8_river_debris/weights/best.pt --source path/to/image_or_video
9. 示例代码
以下是一个完整的Python脚本,用于使用训练好的模型进行推理,并可视化检测结果:
import cv2
from ultralytics import YOLO
def detect_and_visualize(image_path, model):
# 读取图像
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()
label = box.cls[0].item()
confidence = box.conf[0].item()
# 绘制边界框
cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
cv2.putText(image, f"{model.names[int(label)]}: {confidence:.2f}", (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
# 显示结果
cv2.imshow('Detection Results', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 加载模型
model = YOLO('runs/train/yolov8_river_debris/weights/best.pt')
# 示例图像路径
image_path = 'path/to/image.jpg'
# 运行检测和可视化
detect_and_visualize(image_path, model)
总结
通过上述步骤,你可以使用YOLOv8训练河道漂浮物检测数据集,并进行模型测试和推理。同时,提供了可视化代码,以便在训练和推理过程中查看检测结果。确保数据集结构正确,标注文件格式正确,并且路径配置正确。