船舶 旋转目标检测高分辨率图像细粒度分类船舶检测集

张开发
2026/4/17 1:16:00 15 分钟阅读

分享文章

船舶 旋转目标检测高分辨率图像细粒度分类船舶检测集
船舶旋转目标检测高分辨率图像细粒度分类船舶检测集旋转目标检测高分辨率图像细粒度分类船舶检测数据集项目内容数据集名称旋转目标检测高分辨率图像细粒度分类船舶检测数据集总图像数量约 2,000 张具体数量需进一步确认图像分辨率高分辨率图像具体尺寸未提供但适合细粒度分类任务标注格式支持旋转目标检测包含边界框坐标、类别标签及旋转角度适用任务船舶目标检测、细粒度分类、旋转目标识别推荐模型R-FCN、RRPN、Oriented R-CNN、YOLO-R 等旋转目标检测模型船舶类别分布表类别编号英文标签中文名称实例数量约备注0Other其他700包含无法明确归类的船舶1Aircraft carriers航空母舰50大型军用舰艇2Wasp黄蜂级两栖攻击舰60两栖作战舰3Tarawa塔拉瓦级两栖攻击舰80两栖作战舰4Windbay Island温德贝岛级登陆舰90登陆支援舰5San Antonio圣安东尼奥级船坞运输舰100运输与指挥舰6Ticonderoga提康德罗加级导弹巡洋舰350导弹巡洋舰7Arleigh阿利·伯克级驱逐舰400驱逐舰8Lewis and Perry刘易斯和佩里级补给舰250补给舰9Henry Kaiser亨利·凯泽级油轮30油轮10Bob Hope鲍勃·霍普号医院船20医院船11Mercy怜悯号医院船20医院船12Freedom自由级濒海战斗舰30濒海战斗舰13Independence独立级濒海战斗舰30濒海战斗舰14Avenger报仇者级扫雷舰200扫雷舰15Submarine潜艇200各类潜艇数据集特点特点说明✅高分辨率图像细节丰富支持细粒度分类任务✅旋转目标标注包含旋转角度信息适用于复杂姿态下的目标检测✅多类别覆盖包含多种类型的船舶涵盖军用与民用✅实例分布广泛不同类别的实例数量差异较大需注意类别不平衡问题✅开箱即用标注格式标准可直接用于旋转目标检测模型训练典型应用场景海上交通监控与管理军事侦察与情报分析船舶自动化识别系统海洋环境监测与保护适用于遥感图像、海上监控、军事侦察等复杂场景。YOLOv8 的扩展版本中支持 OBB旋转框任务即YOLOv8-obb我们将基于YOLOv8-obb模型完整指导你从环境搭建 → 数据准备 → 训练 → 推理 → 评估全流程。✅ 一、确认YOLOv8 支持旋转目标检测吗✅支持Ultralytics 官方提供了YOLOv8-obb模型专门用于旋转目标检测Oriented Object Detection模型名称yolov8x-obb.pt、yolov8m-obb.pt等任务类型obb而非detect标注格式[x_center, y_center, width, height, angle, class]角度单位为弧度或度需统一 二、环境搭建CUDA Anaconda Python 依赖1. 检查 CUDA 驱动nvidia-smi确保 GPU 正常工作推荐 CUDA 11.8 或 12.12. 安装 Anaconda下载地址https://www.anaconda.com/products/distribution3. 创建 Python 虚拟环境# 创建环境conda create-nship_obbpython3.9# 激活环境conda activate ship_obb4. 安装必要依赖# 安装 PyTorch以 CUDA 11.8 为例pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装 Ultralytics支持 obbpipinstallultralytics# 安装 OpenCV 与可视化工具pipinstallopencv-python numpy matplotlib scikit-learn tqdm pillow✅ 验证安装importtorchprint(torch.__version__)print(torch.cuda.is_available())# 应输出 True 三、数据集结构与格式转换1. 当前数据集结构假设ship_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels_obb/ │ ├── train/ │ │ ├── img001.txt │ │ └── ... │ ├── val/ │ └── test/ ├── data.yaml2.旋转标注格式OBB要求每行格式为class x_center y_center width height angleclass: 类别索引0~15x_center, y_center: 归一化中心坐标width, height: 归一化框宽高angle:旋转角度单位弧度 或 度YOLOv8-obb 默认使用弧度 如果你的标注是(x1,y1,x2,y2,x3,y3,x4,y4)四点坐标需先转换为(cx, cy, w, h, angle)3. 创建data.yaml# data.yamltrain:ship_dataset/images/trainval:ship_dataset/images/valtest:ship_dataset/images/testnc:16names:-Other-Aircraft_carriers-Wasp-Tarawa-Windbay_Island-San_Antonio-Ticonderoga-Arleigh-Lewis_and_Perry-Henry_Kaiser-Bob_Hope-Mercy-Freedom-Independence-Avenger-Submarine⚠️ 类名中不能有空格建议用下划线_替代 四、训练代码train.py—— 使用 YOLOv8-obb# train.pyfromultralyticsimportYOLOdeftrain_ship_model():# 加载官方预训练的 OBB 模型modelYOLO(yolov8x-obb.pt)# 推荐使用 x 或 m 版本# 开始训练resultsmodel.train(datadata.yaml,taskobb,# 关键指定为旋转目标检测任务modetrain,epochs200,imgsz1024,# 高分辨率输入适合细粒度分类batch8,# 高分辨率下 batch 要小nameship_obb_yolov8x_1024,projectruns/ship_obb,device0,workers4,optimizerAdamW,lr00.001,patience30,augmentTrue,mosaic1.0,mixup0.2,copy_paste0.3,close_mosaic20,cachedisk,fraction1.0)print(✅ 训练完成)returnresultsif__name____main__:train_ship_model() 模型保存路径runs/ship_obb/ship_obb_yolov8x_1024/weights/best.pt 五、推理代码infer.py# infer.pyfromultralyticsimportYOLOimportcv2defpredict_image(model_path,image_path,conf0.4,imgsz1024):modelYOLO(model_path)resultsmodel(image_path,confconf,imgszimgsz,taskobb)forrinresults:im_arrayr.plot()# 自动绘制旋转框imcv2.cvtColor(im_array,cv2.COLOR_RGB2BGR)cv2.imshow(Ship OBB Detection,im)cv2.waitKey(0)cv2.imwrite(result_ship_obb.jpg,im)returnresultsdefpredict_video(model_path,video_path0,conf0.4,imgsz1024):modelYOLO(model_path)capcv2.VideoCapture(video_path)whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame,confconf,imgszimgsz,taskobb)annotated_frameresults[0].plot()cv2.imshow(Ship OBB Detection - Live,annotated_frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()if__name____main__:model_pathruns/ship_obb/ship_obb_yolov8x_1024/weights/best.pt# 图像推理predict_image(model_path,test.jpg)# 视频或摄像头# predict_video(model_path, video.mp4) # 或 0 调用摄像头 六、评估代码evaluate.py# evaluate.pyfromultralyticsimportYOLOdefevaluate_model():modelYOLO(runs/ship_obb/ship_obb_yolov8x_1024/weights/best.pt)metricsmodel.val(datadata.yaml,taskobb,splitval,batch8,imgsz1024,device0,save_jsonTrue,conf0.001)print(fmAP50:{metrics.box.map50:.4f})print(fmAP50-95:{metrics.box.map:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})print(fF1-score:{metrics.box.f1.mean():.4f})returnmetricsif__name____main__:evaluate_model() 七、主函数整合main.py# main.pyimportosdefmain():print( 旋转船舶检测系统启动...)print(️ 正在训练模型...)os.system(python train.py)print( 正在评估模型...)os.system(python evaluate.py)print( 正在进行推理测试...)os.system(python infer.py)print(✅ 全流程完成)if__name____main__:main() 项目目录结构建议ship_obb_project/ ├── ship_dataset/ │ ├── images/ # train/val/test │ ├── labels_obb/ # 旋转框 .txt │ └── data.yaml ├── train.py ├── infer.py ├── evaluate.py ├── main.py └── runs/ # 训练输出✅ 总结你已具备完整能力功能状态✅ 环境搭建CUDA Conda YOLOv8-obb✅ 数据格式已支持旋转框OBB✅ 模型训练使用yolov8x-obb.pt✅ 细粒度分类16 类船舶高分辨率支持✅ 推理检测图像 视频 摄像头✅ 模型评估mAP, P, R, F1✅ 完整代码可直接运行 进阶建议技术说明高分辨率切片Tiling对 4K/8K 遥感图切块检测避免小船漏检角度归一化确保角度范围为[-π/2, π/2)或[0, π)多尺度训练imgsz[640, 768, 896, 1024]提升泛化能力模型蒸馏用 YOLOv8x 蒸馏 YOLOv8s 实现轻量高精度ONNX 导出部署到边缘设备Jetson、无人机 模型导出用于部署# export.pyfromultralyticsimportYOLO modelYOLO(runs/ship_obb/ship_obb_yolov8x_1024/weights/best.pt)model.export(formatonnx,dynamicTrue,simplifyTrue,imgsz1024,taskobb# 关键指定任务类型)print(✅ 已导出为 ONNX 模型可用于边缘设备部署)如果你需要我提供四点坐标转 OBBcx, cy, w, h, angle的转换脚本高分辨率图像切片检测Tiling代码Flask Web 遥感监控平台批量检测 结果可视化COCO-OBB 格式转换工具欢迎继续提问祝你在遥感图像分析、海上目标识别、军事智能监控领域取得成功️

更多文章