YOLO实例分割和变化检测_学习记录(1)

本文介绍了如何通过遥感解译生成Mask,使用Python和gdal库进行大尺寸图像的滑动裁剪,以及如何剔除裁切后训练集中存在的黑边,以提高模型训练效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、遥感解译建立Mask

        通过遥感解译,从完全覆盖遥感影像的面中切出想要的图斑,将图斑的属性赋值为255,其他区域赋值为0,同时Nodata值一定要重分类为0。

        面转栅格,生成一个黑白Mask用来标记区域。 坐标系需要注意,两者完全一致。同时也要保证两者影像范围全部一样。

2、使用python滑动裁剪图像及标签

        上述获得的影像数据和标签数据尺寸是几千几千,对于模型来说过大,这里使用python+gdal库自动裁剪YOLO适用的640X640(或其他尺寸,2的n次方)的图像,并按一定命名方式存储(0,1,2,3......命名) 同时对影像数据和标签数据裁剪。 代码:

        运行中,这一步主要踩的雷就是GDAL库,这个看版本,有的是直接import,有的不行会提示没有,pip下载却会提醒已经下载。那就需要改为 from osgeo import gdal 。

import os
import sys
try:
    import gdal
except:
    from osgeo import gdal
import numpy as np
from PIL import Image



# 保存tif文件函数
def writeTiff(im_data, im_geotrans, im_proj, path):
    if 'int8' in im_data.dtype.name:
        datatype = gdal.GDT_Byte
    elif 'int16' in im_data.dtype.name:
        datatype = gdal.GDT_UInt16
    else:
        datatype = gdal.GDT_Float32
    if len(im_data.shape) == 3:
        im_bands, im_height, im_width = im_data.shape
    elif len(im_data.shape) == 2:
        im_data = np.array([im_data])
        im_bands, im_height, im_width = im_data.shape
    # 创建文件
    driver = gdal.GetDriverByName("GTiff")
    dataset = driver.Create(path, int(im_width), int(im_height), int(im_bands), datatype)
    if (dataset != None):
        dataset.SetGeoTransform(im_geotrans)  # 写入仿射变换参数
        dataset.SetProjection(im_proj)  # 写入投影
    for i in range(im_bands):
        dataset.GetRasterBand(i + 1).WriteArray(im_data[i])
    del dataset



# 像素坐标和地理坐标仿射变换
def CoordTransf(Xpixel, Ypixel, GeoTransform):
    XGeo = GeoTransform[0] + GeoTransform[1] * Xpixel + Ypixel * GeoTransform[2]
    YGeo = GeoTransform[3] + GeoTransform[4] * Xpixel + Ypixel * GeoTransform[5]
    return XGeo, YGeo


'''
滑动窗口裁剪Tif影像
TifPath 影像路径
SavePath 裁剪后影像保存目录
CropSize 裁剪尺寸
RepetitionRate 重叠度
'''
def TifCrop(TifPath, SavePath, CropSize, RepetitionRate):
    print("--------------------裁剪影像-----------------------")
    CropSize = int(CropSize)
    RepetitionRate = float(RepetitionRate)
    dataset_img = gdal.Open(TifPath)
    if dataset_img == None:
        print(TifPat
### YOLOv11分割数据集资源与信息 对于YOLOv11模型而言,其训练过程依赖于高质量的数据集来实现有效的目标检测语义分割功能。为了确保模型能够学习到丰富的特征表示并具备良好的泛化能力,准备阶段需收集大量带有标注的目标图像集合[^2]。 #### 数据集构建原则 - **多样性**:所选图片应覆盖广泛的应用场景以及不同光照条件下的实例; - **平衡性**:正样本(即包含待识别物体)与负样本数量应当保持相对均衡; #### 特定领域应用——安全装备检测 考虑到SFCHD数据集中包含了大规模复杂真实的劳保服及头盔样本,在这方面有着突出表现。该数据集不仅规模庞大而且涵盖了多种环境因素影响下的人体防护用品形态变化情况,非常适合用来测试改进后的YOLO架构针对此类特定对象的性能提升效果[^1]。 然而需要注意的是,截至当前公开资料中尚未有关于名为“YOLOv11”的具体版本描述或官方发布记录存在。通常情况下,“YOLO”系列算法会随着研究进展不断迭代更新,但具体的命名方式可能会有所差异。因此建议查阅最新的学术论文技术文档获取最准确的信息。 ```python import torch from yolovX import YOLOvX # 假设这是最新版YOLO框架 model = YOLOvX(pretrained=True) # 加载自定义数据集进行微调 dataset_path = "path/to/sfchd_dataset" train_loader, val_loader = prepare_data_loaders(dataset_path) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值