📥 1、背景
随着全球海洋经济的蓬勃发展与航运业年均 5.7% 的稳定增长,船舶作为海上运输核心载体,其数量与种类持续扩容,对船舶实时检测、识别的精准性与时效性提出了更高要求,该技术已成为保障海上交通安全、海洋资源管理、海岸线安防及军事防御部署的关键支撑。然而传统船舶检测依赖人工目视观察或雷达系统,存在显著瓶颈:复杂海况下光学传感器识别率骤降至 68%,易引发漏检风险;雷达系统处理时延≥3 秒,难以满足实时避障等应急需求,且单套高精度雷达成本超 200 万美元,规模化部署受限。同时,海上船舶在遥感图像中常呈现任意方向排列、密集分布、尺度差异大、轮廓特征模糊等问题,叠加雾天、夜间等低能见度环境的干扰,进一步加剧了检测难度,传统算法难以兼顾检测精度与实时性的平衡。在此背景下,YOLO 系列作为主流的单阶段实时目标检测算法,凭借端到端训练、高帧率处理及持续迭代的性能优势,为船舶检测提供了高效解决方案 ------ 从 YOLOv3 引入特征金字塔网络提升多尺度检测能力,到 YOLOv7、v8 通过结构优化实现精度与速度的突破,其衍生模型已在船舶检测场景中展现出卓越潜力,不仅 mAP@0.5 可达 96.3%、支持 30fps 实时处理,还能通过轻量化设计(模型体积低至 4.3MB)适配边缘计算设备,有效应对复杂海况与低能见度环境的检测挑战。
📌 2、数据集概览
| 项目 | 内容 |
|---|---|
| 数据集名称 | 船舶数据集 |
| 任务类型 | 目标检测(Object Detection) |
| 类别 | 'oreCarrier','passengerShip','containerShip','bulkCargoCarrier','generalCargoShip','fishingBoat' |
| 标注格式 | YOLO TXT 格式(<类别> <中心x> <中心y> <宽度> <高度>,坐标和尺寸均为相对于图像宽高的归一化值(0-1)) |
| 图片总数 | 7000 |
| 标注总数 | 9221 |
🗂 3、数据详情
| 类别ID | 类别名称 | 图片数量 | 标注数量 |
|---|---|---|---|
| 0 | oreCarrier | 2084 | 2199 |
| 1 | passengerShip | 455 | 474 |
| 2 | containerShip | 898 | 901 |
| 3 | bulkCargoCarrier | 1811 | 1952 |
| 4 | generalCargoShip | 1426 | 1505 |
| 5 | fishingBoat | 1539 | 2190 |
| 总计 | - | 7000 | 9221 |
✨ 4、效果演示

🧠 5、模型训练
1、安装miniconda
地址: https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe
环境变量(根据实际的安装目录配置):
C:\ProgramData\miniconda3
C:\ProgramData\miniconda3\Scripts
C:\ProgramData\miniconda3\Library\bin
2、创建虚拟环境
shell
conda create -n yolo python==3.8
# 查看现有环境
conda env list
# 激活环境
conda activate yolo
# 激活失败 (执行该命令后重新进入cmd)
conda init cmd.exe
3、源码下载
https://github.com/ultralytics/ultralytics
(注意:不同版本的yolo在不同tag)
4、训练脚本
python
import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO
if __name__ == '__main__':
model = YOLO('ultralytics/cfg/models/v8/yolov8n.pt') # 指定YOLO模型对象,并加载指定配置文件中的模型配置
# model.load('yolov8s.pt') #加载预训练的权重文件'yolov8s.pt',加速训练并提升模型性能
model.train(data='ultralytics/cfg/datasets/data36.yaml', # 指定训练数据集的配置文件路径,这个.yaml文件包含了数据集的路径和类别信息
cache=False, # 是否缓存数据集以加快后续训练速度,False表示不缓存
imgsz=640, # 指定训练时使用的图像尺寸,640表示将输入图像调整为640x640像素
epochs=100, # 设置训练的总轮数为200轮
batch=8, # 设置每个训练批次的大小为16,即每次更新模型时使用16张图片
close_mosaic=0, # 设置在训练结束前多少轮关闭 Mosaic 数据增强,10 表示在训练的最后 10 轮中关闭 Mosaic workers=16, # 设置用于数据加载的线程数为8,更多线程可以加快数据加载速度
patience=300, # 在训练时,如果经过50轮性能没有提升,则停止训练(早停机制)
device='0', # 指定使用的设备,'0'表示使用第一块GPU进行训练
optimizer='SGD', # 设置优化器为SGD(随机梯度下降),用于模型参数更新
)
5、配置文件 data.yaml
yaml
path: E:/data/yoloTrain/data1
train: images/train # train images
val: images/val # val images
nc: 6
names: ['oreCarrier','passengerShip','containerShip','bulkCargoCarrier','generalCargoShip','fishingBoat']
🛠 6、配套服务
我们提供一站式视觉解决方案,包括:
- 模型训练与调优指导
- 部署环境远程配置
- 定制标注与数据增强
- 毕业设计/课题辅导
- 企业项目合作开发
❓ 7、常见问题
Q:标注格式如何转换?
A:提供Python转换脚本,支持YOLO→VOC/COCO,开箱即用:点击下载转换脚本