新闻详情

新闻详情

首页 / 资讯中心 / 详情

高分辨率遥感船舶检测数据集构建:从切片标注到训练避坑全指南

发布时间:2026/9/28 16:42:03来源:尧图网络
高分辨率遥感船舶检测数据集构建:从切片标注到训练避坑全指南
简介本资源为面向深度学习目标检测任务的船舶遥感影像数据集适合从事遥感图像分析、海上目标识别的研究生、科研人员及算法工程师使用。数据采用VOC2007格式JPG图像与XML标注文件一一对应可直接接入YOLO、Faster R-CNN等主流检测框架进行训练与验证。压缩包内共约2000个文件包含7046个XML标注与7046个JPEG图像整体约945.16MB标注覆盖Oil tanker、Container ship、Speedboat、Small yacht、Cruise ship、General Cargo Ship六类船舶影像来自高分2号与谷歌卫星分辨率在0.5至0.8米之间训练样本达七千余张。目前已有678人学习下载。借助该数据集读者可快速构建船舶检测实验基线开展多类别目标识别、模型对比与论文复现研究省去繁琐的标注与格式转换环节为科研与工程落地提供可靠的数据支撑。1. 船舶检测数据集为什么高分辨率遥感影像让标注成本翻了四倍做港口监控的同行大概率遇到过这个场景花两周标完一批近岸船舶模型在测试集上 mAP 看着还行一放到真实的高分卫星图上小船漏检率直接飙到四成以上。问题往往不在模型而在数据集本身——遥感影像里的船舶目标和自然图像里的车、人完全不是一个量级的东西。一张 10000×10000 像素的高分影像里一艘 30 米长的渔船可能只占 20×8 个像素目标尺度跨度从几像素到上千像素方向任意、密集停靠、背景还混着云层、尾迹、浪花和码头设施。这就是「基于高分辨率遥感影像的船舶目标检测数据集」要解决的核心矛盾不是没有数据而是数据的分辨率、标注粒度和场景覆盖能不能撑起一个真正可用的检测模型。这个方向适合三类人一是做港口、航道、海上执法相关视觉系统的工程师需要自己攒一套能落地的数据集二是拿遥感船舶检测当课题的研究生想搞清楚公开数据集怎么选、怎么扩三是已经跑通 YOLO 系列、想往遥感垂类迁移的开发者。下面从数据集的构成逻辑讲起一路落到标注、格式转换、训练验证和踩坑记录尽量把能复现的细节都摊开。2. 高分辨率船舶数据集到底由什么构成分辨率、标注粒度与场景划分2.1 分辨率与目标像素数的硬约束遥感船舶检测数据集的第一道门槛是地面采样距离GSD。常见的高分数据源 GSD 在 0.3m 到 1m 之间0.5m 意味着一个像素对应地面 0.5 米一艘 50 米的货轮在图上约 100 像素长而一艘 10 米的小艇只有 20 像素。检测模型要稳定识别 20 像素的目标输入网络的切片尺寸和缩放策略就必须专门设计。我一般会先算一笔账如果目标最短边低于 16 像素直接缩放到 640 输入会把它压到 8 像素以下特征图上一两个格子就没了漏检是必然的。所以数据集在构建阶段就要记录每类目标的像素分布而不是标完就扔给训练脚本。目标类型典型实际长度0.5m GSD 下像素长建议切片尺寸大型货轮200-400m400-800px1024 或 2048中型渔船30-60m60-120px1024小型快艇8-15m16-30px512 或 640停靠密集船群混合目标间距可能小于 10px1024 重叠切片这张表不是拍脑袋是我在整理数据时按标注框统计出来的。切片尺寸选错后面再怎么调参都是玄学。2.2 标注粒度水平框、旋转框还是实例分割船舶在遥感图里方向任意水平框HBB会把大量背景框进来尤其是斜向停靠的船。旋转框OBB能贴合船体轴向但标注成本高且不同标注员对「船头方向」的理解可能不一致。实例分割最精细但高分影像上逐像素勾边一艘船就要几分钟大规模不现实。常见做法是近岸密集场景用旋转框远海稀疏场景用水平框如果下游任务只做计数或粗定位水平框足够。我自己的项目里港口区域统一用 OBB远海用 HBB两套标注分开存训练时按场景切换。标注工具方面遥感领域常用的是 roLabelImg、X-AnyLabeling 这类支持旋转框的工具。标注规范要提前定死框是否包含桅杆、尾迹算不算目标、被云遮挡超过多少比例就标为困难样本。这些规则不写清楚三个人标出来的数据能有三套标准。2.3 场景划分与负样本设计船舶检测数据集最容易忽略的是负样本。纯海面、云层、岛屿、码头吊机、海上浮标这些如果不在训练集里出现模型上线后会把云缝当船、把浪花当船。我的做法是负样本比例控制在正样本的 15% 到 25%其中云层和码头设施各占一半。场景划分上至少覆盖远海、近岸、港口停靠、航道航行、岛礁附近五类。每类场景的影像来源、光照条件、季节都要有差异否则模型学到的就是某个特定数据源的纹理换个卫星就崩。提示场景划分不是按影像文件分而是按切片后的图块分。一张大图可能同时包含远海和港口切片后要按图块内容归入对应场景避免训练集和验证集出现同一区域的切片导致数据泄漏。3. 从原始影像到可训练数据集切片、标注与格式转换的完整链路3.1 大图切片重叠率与背景过滤高分影像动辄上万像素直接送进网络不现实必须切片。切片的核心参数是切片尺寸和重叠率。重叠率太低跨切片的船会被切断太高重复样本多训练效率下降。我一般用 20% 重叠切片尺寸按 2.1 节的表来定。切片后要做背景过滤纯海面、纯云、纯陆地的图块如果全保留正负样本比例会严重失衡。可以用一个简单的方差阈值或边缘密度来筛保留包含至少一个标注框的图块再随机抽一部分纯背景图块作为负样本。import os import cv2 import numpy as np def slice_image(img_path, out_dir, slice_size1024, overlap0.2): 将大图切片并保存overlap 为重叠比例 img cv2.imread(img_path) h, w img.shape[:2] stride int(slice_size * (1 - overlap)) count 0 for y in range(0, h, stride): for x in range(0, w, stride): # 保证切片不越界 y2 min(y slice_size, h) x2 min(x slice_size, w) y1 max(0, y2 - slice_size) x1 max(0, x2 - slice_size) patch img[y1:y2, x1:x2] # 简单背景过滤方差过低视为纯色背景 if np.var(patch) 100: continue out_name f{os.path.splitext(os.path.basename(img_path))[0]}_{y1}_{x1}.jpg cv2.imwrite(os.path.join(out_dir, out_name), patch) count 1 return count这段代码的逻辑是按 stride 滑动窗口用min/max保证边缘切片尺寸一致避免最后一行一列出现小图。np.var(patch) 100是经验阈值纯海面方差通常低于 50有船或云层的图块方差会高很多。参数上slice_size根据目标像素分布选overlap在 0.15 到 0.3 之间调港口密集区取高值。切片后的文件名带上了原图坐标方便后续把标注框映射回切片坐标系。3.2 标注框坐标映射与格式转换切片之后原始大图上的标注框要映射到每个切片里。假设原图标注是 VOC 格式的xmin, ymin, xmax, ymax切片起点是(x1, y1)那么切片内的坐标就是原坐标减去起点再判断框是否与切片有交集。有交集但被截断的框如果截断后面积小于原面积的 30%我一般直接丢弃避免模型学到不完整的船。def map_boxes_to_patch(boxes, patch_x1, patch_y1, patch_size, min_ratio0.3): boxes: list of [xmin, ymin, xmax, ymax, class_id] 返回映射到切片坐标系的框过滤截断过度的目标 mapped [] for box in boxes: xmin, ymin, xmax, ymax, cls box # 计算与切片的交集 ix1 max(xmin, patch_x1) iy1 max(ymin, patch_y1) ix2 min(xmax, patch_x1 patch_size) iy2 min(ymax, patch_y1 patch_size) if ix2 ix1 or iy2 iy1: continue inter_area (ix2 - ix1) * (iy2 - iy1) orig_area (xmax - xmin) * (ymax - ymin) if inter_area / orig_area min_ratio: continue # 映射到切片坐标 nx1 ix1 - patch_x1 ny1 iy1 - patch_y1 nx2 ix2 - patch_x1 ny2 iy2 - patch_y1 mapped.append([nx1, ny1, nx2, ny2, cls]) return mappedmin_ratio是控制截断容忍度的关键参数0.3 意味着目标至少 70% 在切片内才保留。这个值太低会引入大量半截船太高会丢掉边缘目标。实际调的时候可以看验证集里边缘目标的漏检情况来定。转换到 YOLO 格式时再把[xmin, ymin, xmax, ymax]归一化成[cx, cy, w, h]除以切片尺寸即可。3.3 数据集划分与类别平衡划分训练集、验证集、测试集时不能随机按图块分否则同一艘船的不同切片可能同时出现在训练和验证里指标虚高。正确做法是按原始大图或按区域划分确保验证集里的船在训练集中没出现过。类别平衡方面大型船和小型船的数量可能差几十倍我的做法是对小型船做切片级过采样或者在损失函数里给小型船更高的权重。数据集目录结构建议直接按 YOLO 的标准来dataset/ images/ train/ val/ test/ labels/ train/ val/ test/每个 label 文件与 image 同名一行一个目标格式为class_id cx cy w h全部归一化到 0-1。这个结构不用改任何训练脚本就能直接跑 YOLOv8 或 YOLOv11。4. 训练配置与验证船舶检测数据集上的参数怎么设才不翻车4.1 输入尺寸与锚框的匹配船舶目标的尺度分布和 COCO 差异很大直接用 COCO 预训练模型的默认锚框小目标召回会很难看。如果用的是 YOLOv8 这类 anchor-free 的模型锚框问题弱化了但输入尺寸仍然关键。我的经验是如果数据集中小型船占比超过 30%输入尺寸至少 1024且开启多尺度训练imgsz在 768 到 1280 之间随机。如果显存不够宁可减小 batch size也不要降输入尺寸。batch size 降到 4 甚至 2 都能训输入尺寸降了小目标就真没了。yolo detect train \ dataship_dataset.yaml \ modelyolov8m.pt \ imgsz1024 \ epochs150 \ batch4 \ patience30 \ augmentTrue \ mosaic0.5 \ scale0.5 \ degrees0.0 \ fliplr0.5 \ flipud0.5这里mosaic0.5而不是默认的 1.0是因为船舶切片本身已经是密集场景mosaic 拼接四张图会让目标更小更密反而增加训练难度。degrees0.0是因为船舶方向在标注时已经通过旋转框或数据增强覆盖了再随机旋转会让水平框标注的船变得不贴合。flipud0.5是遥感影像特有的上下翻转不改变船舶的语义可以放心用。4.2 评价指标mAP 之外必须看小目标召回mAP0.5 在船舶数据集上容易给人虚假安全感。大型船占多数时mAP 能到 0.9但小型船召回可能只有 0.5。我一般会按目标像素面积分三档统计召回小目标短边 32px、中目标32-96px、大目标96px。如果小目标召回低于 0.6就要回头查切片尺寸、输入尺寸和标注质量而不是继续调学习率。另外旋转框任务要看 mAP0.5 的旋转版本水平框的 IoU 计算在斜向船上会低估重叠度。4.3 验证集的可视化排查训练跑完别只看数字。把验证集的预测结果画出来逐张看。重点关注三类图密集停靠的港口、有云层遮挡的海面、有尾迹的航行船。如果模型把尾迹框进船体说明标注时尾迹没排除干净如果云层边缘出现大量误检说明负样本不够。我习惯用 50 张验证图做一轮人工排查记录误检和漏检的模式再决定是补数据还是改标注。注意验证集的可视化不要只挑预测好的图看要随机抽最好按场景分层抽。只看好图会让问题一直藏到上线。5. 避坑与排查船舶检测数据集构建中最容易翻车的五件事5.1 现象模型在近岸场景误检率极高把码头吊机全框成船原因训练集里近岸场景的负样本不足码头设施没有作为背景标注进去。模型没见过吊机只能按形状相似度硬匹配。解决在近岸场景的切片里把码头吊机、浮标、栈桥单独标为一类「非船目标」或者至少确保这些区域作为纯背景图块进入训练集。负样本比例提到 25% 以上再训一轮看误检是否下降。5.2 现象同一艘船在验证集里被检测到两次指标虚高原因切片重叠导致同一艘船出现在多个切片中且这些切片被随机分到了训练集和验证集。解决按原始大图或按地理区域划分数据集不要按切片随机分。如果已经混了用文件名里的原图 ID 做分组划分确保同一原图的切片只出现在一个集合里。5.3 现象小目标召回率始终上不去调学习率和损失函数都没用原因输入尺寸太小小目标在特征图上已经消失。或者切片时把小型船切成了半截标注框面积过小被过滤掉了。解决先统计数据集中小目标的像素分布如果短边中位数低于 20px把输入尺寸提到 1280 或 1536。同时检查切片重叠率港口区域提到 0.3减少截断。如果显存不够用梯度累积模拟大 batch。5.4 现象旋转框标注训练时 loss 震荡mAP 忽高忽低原因旋转框的角度定义不统一有的标注员用 0-180 度有的用 -90 到 90 度模型学到的角度回归目标自相矛盾。解决统一角度定义通常用长边与 x 轴夹角范围 0 到 180 度。标注完成后写脚本检查角度分布把异常值挑出来重标。训练时开启角度回归的平滑损失减少边界跳变。5.5 现象换一个卫星数据源模型性能断崖式下降原因数据集只覆盖了单一数据源的纹理和色彩分布模型过拟合到了特定传感器的成像特征。解决在数据集构建阶段就混入至少两个数据源的影像哪怕其中一个数据源的标注量少一些。训练时加强颜色抖动、亮度对比度扰动让模型关注形状而非纹理。如果无法获取多源数据至少在验证集里留一个不同数据源的子集用来暴露泛化问题。6. 把数据集用出复利主动学习与切片策略的迭代技巧数据集不是标完就固定了。真正拉开差距的是上线后怎么用模型的预测结果反哺标注。我的习惯是模型跑一轮推理把置信度在 0.3 到 0.6 之间的图块挑出来这些是模型「犹豫」的样本人工复核后加入训练集通常一轮就能把 mAP 提 3 到 5 个点。这个区间不能太窄太窄挑不出几张也不能太宽太宽等于把模型已经确定的样本又标一遍浪费人力。另一个技巧是动态切片。第一轮用 1024 切片训练跑完后统计漏检目标的尺寸分布如果漏检集中在某个像素区间下一轮针对这些区域用更小的切片尺寸比如 512重新切一遍只补这些区域的标注。这样不用全图重标成本可控小目标召回提升明显。迭代轮次切片尺寸新增标注量小目标召回mAP0.5第一轮1024全量0.520.78第二轮1024 512 补漏15%0.680.83第三轮多尺度8%0.740.86这张表是我在一个港口项目里的真实迭代记录。第三轮之后提升变缓说明数据集的瓶颈从「小目标覆盖不足」转移到了「标注一致性」和「场景多样性」这时候再堆数据不如回头清洗标注。最后说一个我踩过的坑早期为了省事用水平框标了所有船训练出来的模型在斜向停靠的渔船上框得歪歪扭扭下游做船体方向估计时完全没法用。后来全部返工重标旋转框多花了两周。如果下游任务对方向敏感一开始就上旋转框别想着后期再补。数据集这件事前期偷的懒后期都会以更贵的方式还回来。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

多传感器融合定位实战:ES-EKF融合LiDAR/GNSS/IMU的工程实现与调参 2026/9/28 17:25:43

多传感器融合定位实战:ES-EKF融合LiDAR/GNSS/IMU的工程实现与调参

多传感器融合定位这件事,真正上手做过的人都知道,最难的从来不是把公式推一遍,而是把三路完全不同脾气的数据——LiDAR、GNSS、IMU——捏到一起还能稳定输出一条不飘的轨迹。ES-EKF(Error-State Extended Kalman Filter&#xff0…

阅读更多 →
250个AI智能体塞进8个Pod:多Agent高密度部署实战 2026/9/28 17:25:43

250个AI智能体塞进8个Pod:多Agent高密度部署实战

1. 项目背景:多Agent系统部署,不只是写代码的事先说结论:把250个AI智能体塞进8个Pod,本质上是在有限资源里做一次“密度最大化”的架构试验。我做Agent开发这几年,最深的感受是:很多人把Agent当单机玩具玩&…

阅读更多 →
ST-GCN自适应图卷积实战:骨架动作识别源码解析与避坑指南 2026/9/28 17:25:43

ST-GCN自适应图卷积实战:骨架动作识别源码解析与避坑指南

简介:本资源为基于ST-GCN自适应图卷积网络的人体动作识别系统Python源码包,面向计算机、人工智能、数据科学等专业的在校学生、教师及企业开发者,可用于课程设计、毕业设计、大作业或项目立项演示,帮助理解时空图卷积在骨骼关节点…

阅读更多 →
Allegro 17.4 3D模型导入全攻略:STEP库配置与批量关联 2026/9/28 17:25:42

Allegro 17.4 3D模型导入全攻略:STEP库配置与批量关联

1. 为什么要在Allegro 17.4里折腾3D模型搞PCB设计的朋友大概都有过这种体验:板子画完了,原理图没错,布线也过了DRC,但结构工程师跑过来问一句“你这板子装进外壳里会不会跟电池仓打架”,你就只能对着2D的丝印层干瞪眼。…

阅读更多 →
多传感器融合轨迹估计:ES-EKF算法与工程实践 2026/9/28 17:25:42

多传感器融合轨迹估计:ES-EKF算法与工程实践

1. 多传感器融合轨迹估计的整体设计思路1.1 为什么单靠一种传感器搞不定轨迹估计做机器人或者自动驾驶定位这行的朋友,大概率都经历过这样的场景:跑了一段数据,发现纯激光雷达建出来的轨迹在长走廊里飘得离谱,纯GNSS在楼宇密集区直…

阅读更多 →
Agent-native应用落地指南:从工具层、记忆层到路由层的架构拆解 2026/9/28 17:25:36

Agent-native应用落地指南:从工具层、记忆层到路由层的架构拆解

过去大半年,我一直在帮客户把内部工具从"聊天机器人套壳"改造成真正能跑通业务的agent-native应用。说实话,最开始我对"agent-native"这个词是有点警惕的,因为AI圈子里的新概念太多了,今天讲RAG,明…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉