遥感目标检测数据集:飞机油罐船只YOLOV5直接开训
简介本资源为遥感卫星图像目标检测数据集采用YOLOV5目录格式保存面向从事遥感图像分析、目标检测算法训练与验证的开发者及研究人员可直接用于飞机、油罐、船只三类目标的检测任务无需额外格式转换。数据集包含训练集2398张图片及对应2398个标签文件验证集1393张图片及1393个标签文件图像均为800×600的RGB图片标注清晰另附3类别文本说明文件。资源包共2000个文件以1999个txt标注文件与1个Python可视化脚本为主压缩包约237.68MB目录结构符合YOLOV5规范便于直接加载训练。其中show.py脚本可随机读取一张图片并绘制边界框无需修改即可运行方便快速核验标注质量。目前已有217人学习下载适合需要遥感场景目标检测数据的中高级算法实践者参考使用。1. 遥感三类别检测数据集飞机、油罐、船只YOLOV5 目录直接开训遥感卫星图像下的目标检测最磨人的往往不是模型结构而是数据。我见过太多人卡在第一步手里有一堆卫星图标注格式五花八门要么是 DOTA 那种带角度的四边形要么是 VOC 的 XML想跑 YOLOV5 还得自己写转换脚本转完发现坐标对不上、类别映射错位一通操作下来半天没了。这份数据集解决的就是这个前置问题——它已经按 YOLOV5 的目录规范整理好了3 个类别飞机、油罐、船只图像是 800×600 的 RGB 卫星图训练集 2398 张、验证集 1393 张图片和 txt 标签一一对应解压完改个 yaml 路径就能直接开训。适合谁做遥感目标检测的算法工程师、想快速验证 YOLOV5 在自己场景下效果的学生、以及需要一个小规模干净数据集做 baseline 的从业者。它不解决模型精度天花板但能让你把精力从数据清洗挪到调参和部署上。2. 数据集结构与 YOLOV5 目录规范为什么它能直接开训2.1 目录树与文件对应关系拿到压缩包解压后目录结构是 YOLOV5 训练脚本默认认的那一套。核心就两个文件夹datasets-images-train和datasets-images-val每个文件夹里图片和同名 txt 标签平铺在一起。这种平铺方式比images/和labels/分开的写法更省事因为 YOLOV5 的img2label_paths函数默认会把路径里的images替换成labels如果你目录里没有images这个层级它就会在同级找同名 txt正好匹配。# 解压后典型目录结构 datasets-images-train/ ├── 00001.jpg ├── 00001.txt ├── 00002.jpg ├── 00002.txt └── ... datasets-images-val/ ├── 10001.jpg ├── 10001.txt └── ...这里有个细节项目正文里列出的show.py、10649.txt、07714.txt这些文件名说明标签文件是纯数字命名的和图片同名。这种命名方式在 YOLOV5 里没问题但要注意如果后续自己增补数据别引入带空格或中文的文件名否则cv2.imread在某些环境下会返回 None训练时直接报AssertionError: Image Not Found。2.2 标签格式与类别索引每个 txt 文件里是一行一个目标格式为class_id x_center y_center width height全部归一化到 0~1。3 个类别的索引通常是 0飞机、1油罐、2船只具体以txt类别文本文件里的顺序为准。这个顺序不能乱因为 YOLOV5 的names列表是按索引读的如果你把 yaml 里的 names 写反了模型训出来的“飞机”框会标成油罐可视化时看着框挺准类别全错。# 读取一个标签文件看看内容 with open(07714.txt, r) as f: lines f.readlines() for line in lines[:3]: cls, x, y, w, h map(float, line.strip().split()) print(f类别索引: {int(cls)}, 中心点: ({x:.3f}, {y:.3f}), 宽高: ({w:.3f}, {h:.3f})) # 输出示例 # 类别索引: 0, 中心点: (0.512, 0.334), 宽高: (0.045, 0.038) # 类别索引: 1, 中心点: (0.721, 0.556), 宽高: (0.062, 0.071)归一化坐标的好处是图片 resize 到 640×640 时不用重新算框YOLOV5 的 dataloader 会自动把归一化坐标映射到缩放后的特征图上。但要注意800×600 的长宽比是 4:3YOLOV5 默认 letterbox 到 640×640 会补灰边小目标比如远处的飞机在缩放后可能只剩几个像素这是遥感检测的固有难点不是数据集的问题。2.3 可视化脚本 show.py 的用法项目里带了一个show.py随机传入一张图片就能画框并保存到当前目录。这个脚本的价值在于快速验证标签和图片是否对齐——遥感数据经常出现标注偏移肉眼看不出来画框一看就发现框飘到隔壁目标上了。# show.py 核心逻辑根据项目描述还原 import cv2 import random import os img_dir datasets-images-train img_files [f for f in os.listdir(img_dir) if f.endswith(.jpg)] img_name random.choice(img_files) img_path os.path.join(img_dir, img_name) label_path img_path.replace(.jpg, .txt) img cv2.imread(img_path) h, w img.shape[:2] with open(label_path, r) as f: for line in f: cls, x, y, bw, bh map(float, line.strip().split()) x1 int((x - bw/2) * w) y1 int((y - bh/2) * h) x2 int((x bw/2) * w) y2 int((y bh/2) * h) cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.putText(img, str(int(cls)), (x1, y1-5), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2) cv2.imwrite(vis_result.jpg, img) print(f已保存可视化结果: vis_result.jpg)运行python show.py后当前目录会多出vis_result.jpg。重点看三件事框是否贴合目标边缘、类别数字是否和目标准确对应、有没有漏标的目标。如果发现某个类别的框普遍偏大或偏小可能是标注时的像素坐标转归一化时除了错误的宽高这种系统性偏差在训练 loss 上表现为该类别的 obj_loss 降不下去。3. 从零跑通 YOLOV5 训练配置文件与启动命令3.1 准备 data yaml 文件YOLOV5 训练需要一个 yaml 告诉它去哪找数据、有几个类别。在项目根目录新建remote_sense.yaml内容如下# remote_sense.yaml path: /absolute/path/to/dataset # 数据集根目录改成你自己的绝对路径 train: datasets-images-train val: datasets-images-val nc: 3 # 类别数 names: [plane, oil_tank, ship] # 顺序必须和txt类别文本文件一致path用绝对路径最稳相对路径在 YOLOV5 不同版本里解析基准不一样容易翻车。names列表的顺序就是类别索引 0、1、2 的映射写完后建议用show.py再确认一遍。3.2 选择模型配置与预训练权重YOLOV5 有 s/m/l/x 几个尺度遥感小目标检测我一般从yolov5s起步因为 800×600 的图不算大s 模型在 6GB 显存的卡上就能跑 batch16。如果飞机目标特别小比如只有 10×10 像素可以换yolov5m或开启--img 1280放大输入但显存占用会翻倍。# 克隆 YOLOV5 仓库如果本地没有 git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt # 启动训练 python train.py \ --data remote_sense.yaml \ --weights yolov5s.pt \ --img 640 \ --batch 16 \ --epochs 100 \ --device 0 \ --project runs/train \ --name remote_sense_exp参数逐个说--img 640是输入尺寸遥感图如果小目标多可以改 1280但 batch 要相应降到 4 或 8--batch 16在 6GB 卡上跑 640 尺寸基本不炸显存--epochs 100对这个数据量2398 张训练通常够收敛loss 在 60~80 轮后趋于平稳--device 0指定第一块 GPUCPU 训练会慢到怀疑人生。训练日志和权重会存到runs/train/remote_sense_exp/其中weights/best.pt是验证集上表现最好的权重。3.3 训练过程监控与指标解读启动后终端会打印每个 epoch 的 box_loss、obj_loss、cls_loss 和 mAP0.5。遥感数据集的典型表现是前 10 轮 loss 快速下降mAP 从 0 爬到 0.3 左右30 轮后增速放缓如果 50 轮后 mAP 还在 0.1 以下大概率是类别映射错了或者标签路径没对上。# 训练过程中另开终端看 GPU 占用 nvidia-smi -l 2 # 训练结束后用验证集跑评估 python val.py \ --data remote_sense.yaml \ --weights runs/train/remote_sense_exp/weights/best.pt \ --img 640 \ --task valval.py会输出每个类别的 P、R、mAP0.5、mAP0.5:0.95。重点关注plane和ship的 AP油罐因为形状规整、背景单一通常 AP 最高飞机如果尺寸小且密集AP 会低一些。如果某个类别 AP 为 0先检查names顺序再检查该类别在训练集里的样本数是否过少。4. 避坑与排查遥感数据集训练中的五个血泪经验4.1 现象训练启动即报 “No labels found”原因YOLOV5 在缓存标签时会扫描train路径下的所有图片并尝试找同名 txt。如果 yaml 里的train写成了datasets-images-train/带尾斜杠或者路径层级不对它找不到标签文件就会报这个错。解决确认 yaml 里pathtrain拼接后的绝对路径下jpg 和 txt 是平铺同级的。用ls datasets-images-train/ | head看一眼如果只看到 jpg 没看到 txt说明标签没解压出来或者被放到了子文件夹里。4.2 现象mAP 一直卡在 0.05 以下loss 不降原因最常见的是类别索引错位。比如 txt 里 0 是飞机但 yaml 里names写成了[ship, plane, oil_tank]模型学到的“飞机特征”被强制映射到 ship 类梯度方向全乱。解决打开txt类别文本文件核对顺序确保 yaml 的names列表逐字对应。改完后删除datasets-images-train.cache和datasets-images-val.cache两个缓存文件否则 YOLOV5 会读旧缓存。4.3 现象可视化时框的位置整体偏移原因show.py里画框用的宽高是原图 800×600但如果你的图片实际被 resize 过比如用其他工具预处理后保存成了 640×480归一化坐标对应的像素位置就变了。解决确认show.py读取的图片尺寸和标注时的尺寸一致。遥感数据集常见做法是保持原始 800×600 不缩放让 YOLOV5 的 letterbox 去处理。如果自己做了预处理要么同步更新标签要么在show.py里按实际尺寸换算。4.4 现象训练到一半显存溢出CUDA out of memory原因--img 640配--batch 16在 4GB 卡上会炸或者开了--cache ram把 2398 张 800×600 的图全塞进内存加上模型本身占用显存不够。解决降 batch 到 8 或 4或者把--img降到 512。--cache ram在数据量小于 5000 张时确实能加速但显存紧张时改成--cache disk或直接去掉。另外--workers别设太高8 核机器设 4 就行设 16 反而因为进程切换拖慢速度。4.5 现象验证集 mAP 比训练集低很多过拟合原因训练集 2398 张、验证集 1393 张比例约 1.7:1验证集占比偏高如果两个集合的分布不一致比如训练集里飞机多、验证集里船只多模型在验证集上表现会明显差。解决先统计两个集合的类别分布。如果偏差大可以从训练集里分层抽样补充到验证集或者直接用--weights做 fine-tune 时冻结 backbone 前几层。另外 YOLOV5 默认开启 mosaic 增强遥感图做 mosaic 时四张图拼接后小目标更小如果验证集 mAP 低但训练集正常可以试试--mosaic 0关掉增强看是否是增强过猛导致。5. 进阶技巧用 show.py 做标签质量抽检与类别分布统计show.py只随机看一张图效率太低。我一般会改一版批量抽检脚本一次跑 50 张把可视化结果拼成网格图快速扫一遍标签质量。同时统计每个类别的框数量和尺寸分布判断数据集是否存在长尾问题。# batch_check.py批量抽检 类别统计 import cv2 import os import random import numpy as np from collections import defaultdict img_dir datasets-images-train img_files [f for f in os.listdir(img_dir) if f.endswith(.jpg)] sample random.sample(img_files, min(50, len(img_files))) cls_count defaultdict(int) cls_sizes defaultdict(list) for img_name in sample: img_path os.path.join(img_dir, img_name) label_path img_path.replace(.jpg, .txt) img cv2.imread(img_path) h, w img.shape[:2] with open(label_path, r) as f: for line in f: cls, x, y, bw, bh map(float, line.strip().split()) cls_count[int(cls)] 1 cls_sizes[int(cls)].append((bw * w, bh * h)) x1 int((x - bw/2) * w) y1 int((y - bh/2) * h) x2 int((x bw/2) * w) y2 int((y bh/2) * h) cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.imwrite(fcheck_{img_name}, img) print(类别框数量统计) for k in sorted(cls_count): sizes cls_sizes[k] avg_w np.mean([s[0] for s in sizes]) avg_h np.mean([s[1] for s in sizes]) print(f 类别 {k}: {cls_count[k]} 个框, 平均尺寸 {avg_w:.1f}x{avg_h:.1f} 像素)跑完看两个数如果某个类别的平均尺寸小于 15×15 像素YOLOV5 在 640 输入下经过 32 倍下采样后特征图只剩不到 1 个像素基本学不到需要考虑放大输入到 1280 或者用切片推理SAHI。如果某个类别的框数量不到总数的 5%比如船只只有几十个框训练时会被飞机和油罐的梯度淹没可以适当复制该类别样本或调高cls损失权重。另一个习惯是每次换数据集或改 yaml 后先跑python train.py --epochs 1 --batch 4做一次单轮冒烟测试确认数据加载、前向传播、反向传播都不报错再开完整训练。这个习惯帮我省过很多次“跑了三小时才发现标签路径写错”的后悔药。遥感数据集的坑大多不在模型本身而在数据管线的细节里把抽检和冒烟测试固定成流程后面调参才有意义。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

【2026实测】论文去AI味实操:DeepSeek/豆包/Gemini指令与降重工具(80%降至5%)TaoToken统一Key调用

【2026实测】论文去AI味实操:DeepSeek/豆包/Gemini指令与降重工具(80%降至5%)TaoToken统一Key调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 20:03:19 阅读更多 →
CRM实战:数据建模、权限与漏斗统计的避坑指南

CRM实战:数据建模、权限与漏斗统计的避坑指南

简介:这是一份基于Angular与TypeScript开发的前端客户管理项目,界面样式采用Bootstrap,通过模拟服务器代替真实后端,用于演示客户数据的增删改查。项目面向正在学习组件化开发、前端工程化与前后端分离的入门及中级开发者&#xf…

2026/10/12 20:03:19 阅读更多 →
Hermes Agent五层系统架构拆解:层间通信机制与TaoToken统一Key接入实践

Hermes Agent五层系统架构拆解:层间通信机制与TaoToken统一Key接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 20:03:19 阅读更多 →

最新新闻

LightGBM因子筛选与BiLSTM时序建模:量化投资策略实战

LightGBM因子筛选与BiLSTM时序建模:量化投资策略实战

简介:这份资源面向计算机相关专业学生、高校教师及量化投资初学者,提供一套将LightGBM与BiLSTM结合进行因子组合选取并构建量化投资策略的完整实践项目,可直接用于毕业设计、课程设计、实训实验或公司项目二次开发。压缩包共1408个文件&#…

2026/10/13 1:02:48 阅读更多 →
基于LightGBM与BiLSTM双模型融合的因子组合量化策略实战

基于LightGBM与BiLSTM双模型融合的因子组合量化策略实战

简介:这份资源面向计算机相关专业学生、高校教师及量化投资初学者,提供一套将LightGBM与BiLSTM结合进行因子组合选取并构建量化投资策略的完整实践项目,可直接用于毕业设计、课程设计、实训实验或公司二次开发。压缩包共1408个文件&#xff0…

2026/10/13 1:02:48 阅读更多 →
ECharts 5 中国地图完整实现:从 GeoJSON 获取到省市县下钻实战

ECharts 5 中国地图完整实现:从 GeoJSON 获取到省市县下钻实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 1:02:48 阅读更多 →
AnyPS5串流实战:跨网络远程玩PS5的架构设计与延迟优化

AnyPS5串流实战:跨网络远程玩PS5的架构设计与延迟优化

1. 从“AnyPS5”这个标题说起:它到底想解决什么问题第一次看到“AnyPS5”这个标题,我脑子里蹦出来的第一个念头是:这大概率是一个围绕“跨平台串流”或者“远程访问”做文章的项目。为什么这么判断?因为“Any”这个前缀在技术圈里…

2026/10/13 1:02:48 阅读更多 →
数学建模初等模型:商人过河问题Matlab实现与BFS求解

数学建模初等模型:商人过河问题Matlab实现与BFS求解

数学建模之初等模型——商人过河问题(Matlab实现)商人过河这个问题,从小学奥数到数学建模课堂,几乎是所有接触过离散模型的人绕不开的一道经典题。题面本身非常简单:三个商人带着三个仆人过河,船一次最多坐…

2026/10/13 1:02:48 阅读更多 →
CRF序列标注原理与实战:从全局最优解到工业级部署

CRF序列标注原理与实战:从全局最优解到工业级部署

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 1:01:48 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →