船舶海事监控数据集Seaships,共包含6类7000张船舶图片,具有不同的尺度、船体部分、照明、视点、背景和遮挡。散货船bulk cargo carrier、集装箱船container ship、渔船fishing boat、杂货船general cargo ship、矿砂船ore carrier、客船passenger ship。本数据集可以用于yolo系列目标检测算法。
如何使用YOLOv8来训练一个包含6类7000张船舶图片的海事监控数据集,并附上详细的训练代码和步骤。
数据集描述
该数据集包含以下信息:
- 数据量:7000张图片
- 类别:6类
- 散货船(bulk cargo carrier)
- 集装箱船(container ship)
- 渔船(fishing boat)
- 杂货船(general cargo ship)
- 矿砂船(ore carrier)
- 客船(passenger ship)
数据集组织
假设你的数据集目录结构如下:
seaships_dataset/
├── train/
│ ├── images/
│ └── labels/
├── valid/
│ ├── images/
│ └── labels/
└── data.yaml # 数据配置文件
其中:
train/
包含训练集的图像和TXT标签文件。valid/
包含验证集的图像和TXT标签文件。data.yaml
包含数据集的路径和其他配置信息。
数据配置文件
创建或确认data.yaml
文件是否正确配置了数据集路径和类别信息:
train: ./train/images/ # 训练集图像路径
val: ./valid/images/ # 验证集图像路径
test: ./test/images/ # 测试集图像路径(如果有)
# Classes
nc: 6 # 类别数量
names: ['bulk cargo carrier', 'container ship', 'fishing boat', 'general cargo ship', 'ore carrier', 'passenger ship'] # 类别名称列表
安装YOLOv8
如果你还没有安装YOLOv8,可以使用以下命令安装:
pip install ultralytics
训练模型
使用YOLOv8训练模型的命令非常简单,你可以直接使用以下命令开始训练:
cd path/to/seaships_dataset/
# 下载预训练权重
wget https://github.com/ultralytics/ultralytics/releases/download/v8.0.19/yolov8n.pt
# 开始训练
ultralytics train model=yolov8n.yaml data=./data.yaml epochs=100 imgsz=640
在这个命令中:
model=yolov8n.yaml
:指定使用的YOLOv8模型配置文件。data=./data.yaml
:指定数据配置文件。epochs=100
:训练轮数。imgsz=640
:输入图像的大小。
使用预定义配置
YOLOv8提供了多种预定义模型配置,例如yolov8n
, yolov8s
, yolov8m
, yolov8l
, yolov8x
。你可以根据需求选择不同的模型配置进行训练。例如:
ultralytics train model=yolov8s.yaml data=./data.yaml epochs=100 imgsz=640
模型评估
训练完成后,可以使用以下命令评估模型在验证集上的表现:
ultralytics val model=best.pt data=./data.yaml imgsz=640
这里的best.pt
是训练过程中产生的最佳模型权重文件。
模型预测
ultralytics predict model=best.pt source=path/to/your/image.jpg imgsz=640
查看训练结果
训练过程中的日志和结果会保存在runs/detect/
目录下,你可以查看训练过程中的损失、精度等信息。
进一步的优化建议
- 数据增强:可以尝试增加更多的数据增强策略,如旋转、翻转、颜色变换等,以提高模型的泛化能力。
- 类别平衡:检查各个类别的样本数量是否均衡,如果不均衡,可以通过过采样少数类或者欠采样多数类的方法来平衡类别。
- 模型微调:可以在训练后期对模型进行微调,以进一步提升模型的性能。
- 多尺度训练:尝试使用不同大小的输入图像进行训练,以提高模型对不同尺寸目标的检测能力。
- 集成学习:可以考虑使用集成学习的方法,比如Bagging或Boosting,来进一步提升模型的准确性和稳定性。
示例训练脚本
以下是一个完整的示例脚本,展示了从下载预训练模型到训练模型的整个流程:
#!/bin/bash
# 定义数据集目录
DATASET_DIR="path/to/seaships_dataset"
# 创建必要的目录
mkdir -p ${DATASET_DIR}
mkdir -p ${DATASET_DIR}/train/images
mkdir -p ${DATASET_DIR}/train/labels
mkdir -p ${DATASET_DIR}/valid/images
mkdir -p ${DATASET_DIR}/valid/labels
# 下载预训练权重
wget https://github.com/ultralytics/ultralytics/releases/download/v8.0.19/yolov8n.pt -P ${DATASET_DIR}
# 移动预训练权重到正确的目录
mv ${DATASET_DIR}/yolov8n.pt ${DATASET_DIR}/weights/yolov8n.pt
# 安装YOLOv8
pip install ultralytics
# 开始训练
cd ${DATASET_DIR}
ultralytics train model=yolov8n.yaml data=./data.yaml epochs=100 imgsz=640
# 模型评估
ultralytics val model=best.pt data=./data.yaml imgsz=640
# 模型预测
ultralytics predict model=best.pt source=path/to/your/image.jpg imgsz=640
通过上述步骤,你可以使用YOLOv8来训练一个海事监控数据集,并使用训练好的模型进行预测。