零基础入门语义分割-TASK02数据扩增


参考源: Datawhale
本章对语义分割任务中常见的数据扩增方法进行介绍,并使用OpenCV和albumentations两个库完成具体的数据扩增操作。
本章主要内容为数据扩增方法、OpenCV数据扩增、albumentations数据扩增和Pytorch读取赛题数据四个部分组成。

数据扩增方法

什么是数据扩增

数据扩增(Data Augmentation)是不可少的环节。
1.数据扩增可以增加训练集的样本
2.也可以有效环节模型过拟合的情况
3.可以给模型带来的更强的泛化能力
4.数据扩增可以扩展样本空间,从而丰富样本,给予不同角度、不同状态下的样本用作训练

数据扩增怎么做

数据扩增是对读取进行数据增强的操作,所以需要在数据读取的时候完成。
此外由于数据扩增有一定的随机性,相同的图片经过数据扩增可能得到不同的图片

方法

在这里插入图片描述
对于图像分类,数据扩增方法可以分为两类:

标签不变的数据扩增方法:数据变换之后图像类别不变;
标签变化的数据扩增方法:数据变换之后图像类别变化;

而对于语义分割而言,常规的数据扩增方法都会改变图像的标签。如水平翻转垂直翻转旋转90%旋转随机裁剪,这些常见的数据扩增方法都会改变图像的标签,即会导致地标建筑物的像素发生改变。

OpenCV数据扩增

使用OpenCV完成图像加噪数据扩增;
使用OpenCV完成图像旋转数据扩增;
在这里插入图片描述

albumentations数据扩增

albumentations是基于OpenCV的快速训练数据增强库,拥有非常简单且强大的可以用于多种任务(分割、检测)的接口,易于定制且添加其他框架非常方便。
如图下所示的色彩变换效果图(同时也可以进行空间变换,暂不展示了):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对图像分类、语义分割、物体检测和关键点检测都支持,速度较快。
参考源:https://github.com/albumentations-team/albumentations

Pytorch读取赛题数据

由于本次赛题我们使用Pytorch框架讲解具体的解决方案,接下来将是解决赛题的第一步使用Pytorch读取赛题数据。在Pytorch中数据是通过Dataset进行封装,并通过DataLoder进行并行读取。所以我们只需要重载一下数据读取的逻辑就可以完成数据的读取。

Dataset:数据集,对数据进行读取并进行数据扩增;
DataLoder:数据读取器,对Dataset进行封装并进行批量读取;
定义Dataset

import torch.utils.data as D
class TianChiDataset(D.Dataset):
    def __init__(self, paths, rles, transform):
        self.paths = paths
        self.rles = rles
        self.transform = transform
        self.len = len(paths)

    def __getitem__(self, index):
        img = cv2.imread(self.paths[index])
        mask = rle_decode(self.rles[index])
        augments = self.transform(image=img, mask=mask)
        return self.as_tensor(augments['image']), augments['mask'][None]
   
    def __len__(self):
        return self.len

实例化dataset

trfm = A.Compose([
    A.Resize(IMAGE_SIZE, IMAGE_SIZE),
    A.HorizontalFlip(p=0.5),
    A.VerticalFlip(p=0.5),
    A.RandomRotate90(),
])

dataset = TianChiDataset(
    train_mask['name'].values,
    train_mask['mask'].fillna('').values,
    trfm
)

loader = D.DataLoader(
    dataset, batch_size=10, shuffle=True, num_workers=0)

参考链接:

1.基本数据扩增方法及扩增数据安装包
2.针对不同维度的数据传统扩增方法

天池赛事的零基础入门语义分割-地表建筑物识别任务是一个面向初学者的语义分割竞赛。任务的目标是利用机器学习和计算机视觉技术,对卫星图像中的地表建筑物进行标记和识别。 在这个任务中,参赛者需要使用给定的训练数据集进行模型的训练和优化。训练数据集包含了一系列卫星图像和相应的像素级标注,标注了地表建筑物的位置。参赛者需要通过分析训练数据集中的图像和标注信息,来构建一个能够准确地识别出地表建筑物的模型。 参赛者需要注意的是,语义分割是指将图像中的每个像素进行分类,使得同一类别的像素具有相同的标签。因此,在地表建筑物识别任务中,参赛者需要将地表建筑物区域与其他区域进行区分,并正确地进行标记。这对于初学者来说可能是一个挑战,因此需要掌握基本的图像处理和机器学习知识。 参赛者可以根据自己的理解,选择合适的算法和模型来完成这个任务。常见的方法包括卷积神经网络(CNN),通过设计适当的网络结构和训练方式,提高模型的准确性和泛化能力。同时,数据预处理和数据增强技术也是提高模型性能的关键。参赛者可以通过对数据进行增强和扩充,提高模型的鲁棒性和识别能力。 最后,参赛者需要使用训练好的模型对测试数据集进行预测,并生成预测结果。这些预测结果将用于评估参赛者模型的性能和准确度。评估指标通常包括像素级准确度(Pixel Accuracy)和平均交并比(Mean Intersection over Union),参赛者需要根据这些指标来评估和改进自己的模型。 总之,通过参加这个任务,初学者可以通过实践和挑战来提高自己的图像处理和机器学习技能,并掌握语义分割的基本概念和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值