数据扩增 data-augmentation的方法及代码

本文介绍了使用keras和skimage进行图像数据扩增的方法。详细列举了两种工具提供的多种图像变换方式,如旋转、缩放和平移等,并指出了一些存在的问题。

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

为了扩增数据集,采用了2种方式来进行数据的扩增。

1、使用keras的数据增强处理

2、使用skimage的数据增强处理


keras包括的处理,有featurewise视觉上图像会稍微变暗,samplewise视觉上图像会变成类x光图像形式,zca处理视觉上图像会变成灰白图像,rotation range 随机旋转图像,水平平移,垂直平移,错切变换,图像缩放,图片的整体的颜色变换,水平翻转操作,上下翻转操作, rescale。

存在的问题是图像的变换是随机的,即有的图像可能不会变换。

skimage的数据增强处理,有resize, gray,rescale,noise,flip,rotate, shift, zoom,gaussian zoom,shear,contrast,channelshift,PCA,polar。

目前极坐标变换polar,还有些问题,即转换后只有灰度图,有待解决。


相关的代码见如下地址。供参考。

github地址:https://github.com/renwoxing2016/data-augmentation

在语义分割任务中,数据扩增Data Augmentation)是提升模型泛化能力的重要手段。对于 DeepLabV3 模型而言,常见的图像增强方法包括随机裁剪、旋转、翻转、颜色抖动等。这些操作能够增加训练数据的多样性,从而提高模型在测试集上的表现。 以下是一个基于 PyTorch 和 torchvision 的 DeepLabV3 数据扩增实现示例: ```python import torch from torchvision import transforms from torchvision.datasets import VOCSegmentation from torch.utils.data import DataLoader # 自定义数据预处理 def get_transform(): transform = transforms.Compose([ transforms.ToTensor(), # 将图像和标签转换为Tensor transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), # ImageNet标准化 transforms.RandomResizedCrop(513), # 随机裁剪缩放到513x513 transforms.RandomHorizontalFlip(), # 随机水平翻转 transforms.ColorJitter(brightness=0.3, contrast=0.3, saturation=0.3, hue=0.1), # 颜色抖动 ]) return transform # 加载PASCAL VOC数据集(与DeepLabV3常用数据集一致) dataset = VOCSegmentation( root='./data', year='2012', image_set='train', download=False, transform=get_transform() ) # 创建DataLoader dataloader = DataLoader(dataset, batch_size=4, shuffle=True, num_workers=4) # 示例:遍历数据集 for images, targets in dataloader: # 处理图像和标签 pass ``` ### 数据扩增方法说明: - **RandomResizedCrop**:随机裁剪图像的一部分缩放至固定尺寸,有助于模型学习多尺度特征,这与 DeepLabV3 的 ASPP 模块设计理念相呼应 [^1]。 - **RandomHorizontalFlip**:随机水平翻转图像,增加数据多样性。 - **ColorJitter**:对图像的颜色进行轻微扰动,提高模型对光照变化的鲁棒性。 - **Normalize**:使用 ImageNet 的均值和标准差进行标准化,是大多数预训练模型的通用做法。 在实现过程中,需要注意图像与标签的一致性变换,尤其是标签图像的像素值不能超出类别数范围 [^4]。例如,如果使用的是 CIHP 数据集,其类别数为 20,则标签图像中的像素值应在 0~19 之间。 ### 注意事项: - 在图像扩增过程中,部分变换可能会导致标签图像中的像素值超出预设的类别数范围 。 - 建议使用 `torchvision.transforms` 提供的函数,确保图像与标签的同步变换。 - 若使用自定义数据集,需确保图像与标签路径的对应关系正确,在 `__getitem__` 方法中实现同步变换。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值