遥感影像-实例分割数据集:iSAID 从切图到YOLO格式数据集制作详细介绍

背景介绍

开源数据集isaid标注包含实例分割,但是原始影像太大,很吃显存,一般显卡无法用原始影像直接训练,所以需要对影像进行裁剪,并生成对应的标签,因为想用yolo系列跑模型,所以将标签需要转为txt格式。

制作流程

数据下载及目录整理

影像下载:https://captain-whu.github.io/DOTA/dataset.html,下载DOTA-v1.0就行

标签下载:https://captain-whu.github.io/iSAID/dataset.html

统计一下数据集数量,其中:

训练集影像:1411张原始图像;1411张实例标签;1411张语义标签。将所有训练图像放置在一起创建iSAID/train/

验证集影像:458张原始图像;458张实例标签;458张语义标签。将所有验证图像放置在一起创建iSAID/val/

测试集影像:937张原始图像;

目录结构如下:

复制代码
iSAID
├── test
│   └── images
│       ├── P0006.png
│       └── ...
│       └── P0009.png
├── train
│   └── images
│       ├── P0002_instance_color_RGB.png
│       ├── P0002_instance_id_RGB.png
│       ├── P0002.png
│       ├── ...
│       ├── P0010_instance_color_RGB.png
│       ├── P0010_instance_id_RGB.png
│       └── P0010.png
└── val
    └── images
        ├── P0003_instance_color_RGB.png
        ├── P0003_instance_id_RGB.png
        ├── P0003.png
        ├── ...
        ├── P0004_instance_color_RGB.png
        ├── P0004_instance_id_RGB.png
        └── P0004.png
影像裁剪

下载裁剪代码:见博客末尾

进行下列步骤:

创建环境,根据environment.yml文件中的python库安装环境,源码中创建的环境比较老,很容易安装失败,安装的库新一点也没关系;(注意:如果安装lycon失败,先执行下面命令再重新安装包)

bash 复制代码
sudo apt-get install cmake build-essential libjpeg-dev libpng-dev

安装依赖库,执行下面命令:

bash 复制代码
# 库1(可装可不装,反正我没装)
cd cocoapi/PythonAPI
make
python setup.py install

# 库2
cd preprocess/cityscapesScripts
python setup.py install

# 库3
cd preprocess/Detectron
python setup.py install

执行裁剪代码split.py,注意需要修改裁剪文件的路径,裁剪小图的大小,以及裁剪窗口的重叠度,执行下面代码:

bash 复制代码
cd preprocess
python split.py --set train,val
python split.py --set test
# 上面代码执行时间很长
json标签生成

执行json标签生成代码preprocess.py,这一步没啥要注意的,如果前面环境都安装没问题,那就可以正常执行,不过执行时间也是很久,运行完毕后将生成coco格式的大json文件

bash 复制代码
python preprocess.py --set train,val
json转yolo格式

在转为yolo格式之前可以先利用coco官方API统计一下目标类别,代码如下./preprocess/statistical_category.py:

python 复制代码
# -*- coding: utf-8 -*-

from pycocotools.coco import COCO

# 文件路径
dataDir = r'l/'
dataType = 'train2017' #val2017
annFile = '{}/instances_{}.json'.format(dataDir, dataType)

# initialize COCO api for instance annotations
coco_train = COCO(annFile)

# display COCO categories and supercategories
# 显示所有类别
cats = coco_train.loadCats(coco_train.getCatIds())
cat_nms = [cat['name'] for cat in cats]
print('COCO categories:\n{}'.format('\n'.join(cat_nms)) + '\n')
# 统计单个类别的图片数量与标注数量
for cat_name in cat_nms:
    catId = coco_train.getCatIds(catNms=cat_name)
    if cat_name == "person":
        print(catId)
        imgId = coco_train.getImgIds(catIds=catId)
        annId = coco_train.getAnnIds(imgIds=imgId, catIds=catId, iscrowd=False)
        print("{:<15} {:<6d}     {:<10d}\n".format(cat_name, len(imgId), len(annId)))
    if cat_name == "motorcycle":
        print(catId)
        imgId = coco_train.getImgIds(catIds=catId)
        annId = coco_train.getAnnIds(imgIds=imgId, catIds=catId, iscrowd=False)
        print("{:<15} {:<6d}     {:<10d}\n".format(cat_name, len(imgId), len(annId)))
# 统计全部的类别及全部的图片数量和标注数量
print("NUM_categories: " + str(len(coco_train.dataset['categories'])))
print("NUM_images: " + str(len(coco_train.dataset['images'])))
print("NUM_annotations: " + str(len(coco_train.dataset['annotations'])))

# Classes
ship
storage_tank
baseball_diamond
tennis_court
basketball_court
Ground_Track_Field
Bridge
Large_Vehicle
Small_Vehicle
Helicopter
Swimming_pool
Roundabout
Soccer_ball_field
plane
Harbor

然后根据官方转换代码:见博客末尾

将coco格式的大json数据转换成多个yolo格式的txt文件,其中第一个数字为类别,后面每两个数字代表一个点对于整张图像的相对位置,每一行代表图像中的一个mask。txt文件内容如下:

需要本博客相关数据集的小伙伴可私信哦!

01、官方原始数据集;

02、本博客全套代码;

03、裁剪后可直接训练的小图数据集;

相关推荐
weixin_550083151 天前
从零实现基于YOLO的工地安全帽检测系统python复现github项目流程
yolo
mahtengdbb12 天前
GDSAFusion全局-局部双尺度自适应融合改进YOLOv26多尺度特征表达能力
人工智能·深度学习·yolo
AIoT科技物语2 天前
免费开源!50+算法,Java基于YOLO框架的视频AI识别算法平台,适配低空无人机巡检、摄像头安防场景
java·人工智能·算法·yolo·开源
前网易架构师-高司机2 天前
带标注的山体滑坡识别数据集,识别率95.4%,1848张图,支持yolo,coco json,voc xml格式,文末有模型训练代码
yolo·数据集·模型·滑坡·山体
极智视界2 天前
无人机场景 - 目标检测数据集 - 空中救援目标检测数据集下载「包含VOC、COCO、YOLO三种格式」
yolo·目标检测·数据集·voc·coco·无人机场景·空中救援
爱思考的观赏鱼2 天前
YOLO 系列:2026最新遥感检测:YOLOv11-OBB 旋转框训练、参数调优与踩坑全解析
人工智能·yolo·目标检测·机器学习·计算机视觉·目标跟踪
rabbit_pro2 天前
Mac OS/M1 Pro 搭建Yolo V5环境
人工智能·yolo
羊羊小栈2 天前
基于「YOLO目标检测 + 多模态AI分析」的增材制造粉末床熔合缺陷智能检测分析预警系统
人工智能·yolo·目标检测·计算机视觉·毕业设计·制造
QQ676580082 天前
基于yolo26算法的玉米卷叶心识别 智慧农业玉米病虫害农药丢撒识别 玉米卷心识别 玉米叶心图像识别 农作物识别第10410期
yolo·玉米卷叶心·玉米病虫害农药丢撒·玉米卷心识别·玉米叶心·农作物识别
xiaoyaohou112 天前
026、训练策略改进(二):余弦退火、热重启与早停策略
yolo