Pytorch图像noise,blur增强

前言

pytorch中的transform没有加噪声和模糊的数据增强方法。结合网上现有的代码整合了一个小工具

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import random
from PIL import Image,ImageFilter

2.代码

代码如下(示例):

#添加椒盐噪声
class AddSaltPepperNoise(object):

    def __init__(self, density=0,p=0.5):
        self.density = density
        self.p = p

    def __call__(self, img):
        if random.uniform(0, 1) < self.p:  # 概率的判断
            img = np.array(img)  # 图片转numpy
            h, w, c = img.shape
            Nd = self.density
            Sd = 1 - Nd
            mask = np.random.choice((0, 1, 2), size=(h, w, 1), p=[Nd / 2.0, Nd / 2.0, Sd])  # 生成一个通道的mask
            mask = np.repeat(mask, c, axis=2)  # 在通道的维度复制,生成彩色的mask
            img[mask == 0] = 0  # 椒
            img[mask == 1] = 255  # 盐
            img = Image.fromarray(img.astype('uint8')).convert('RGB')  # numpy转图片
            return img
        else:
            return img

#添加Gaussian噪声
class AddGaussianNoise(object):

    '''
    mean:均值
    variance:方差
    amplitude:幅值
    '''
    def __init__(self, mean=0.0, variance=1.0, amplitude=1.0):

        self.mean = mean
        self.variance = variance
        self.amplitude = amplitude

    def __call__(self, img):

        img = np.array(img)
        h, w, c = img.shape
        N = self.amplitude * np.random.normal(loc=self.mean, scale=self.variance, size=(h, w, 1))
        N = np.repeat(N, c, axis=2)
        img = N + img
        img[img > 255] = 255                       # 避免有值超过255而反转
        img = Image.fromarray(img.astype('uint8')).convert('RGB')
        return img

#添加模糊
class Addblur(object):

    def __init__(self, p=0.5,blur="normal"):
        #         self.density = density
        self.p = p
        self.blur= blur

    def __call__(self, img):
        if random.uniform(0, 1) < self.p:  # 概率的判断
       		 #标准模糊
            if self.blur== "normal":
                img = img.filter(ImageFilter.BLUR)
                return img
            #高斯模糊
            if self.blur== "Gaussian":
                img = img.filter(ImageFilter.GaussianBlur)
                return img
            #均值模糊
            if self.blur== "mean":
                img = img.filter(ImageFilter.BoxBlur)
                return img

        else:
            return img

3.食用方法

transform = transforms.Compose([
	Addblur(p=1,blur="Gaussian"),
	#注意要加这两个东西
    transforms.ToTensor(),
    transforms.ToPILImage(),
    AddSaltPepperNoise(0.05,1),
    transforms.ToTensor(),
    transforms.RandomVerticalFlip(),
])

总结

直接加到里面就可以使用啦

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
PyTorch 是一个开源的深度学习库,由 Facebook Research 开发,它提供了高效的张量计算功能以及动态计算图,使得研究者和开发者能够方便地构建、训练和部署深度学习模型。在图像增强方面,PyTorch 提供了丰富的工具和功能来处理和增强图像数据,以便于模型更好地泛化和适应不同的输入。 图像增强深度学习中通常用于: 1. **数据扩充(Data Augmentation)**:通过对原始图像进行旋转、翻转、裁剪、缩放、亮度调整、色彩变换等操作,生成多样化的训练样本,防止过拟合并提高模型的鲁棒性。 2. **预处理(Preprocessing)**:标准化或归一化像素值,使其落入特定的数值范围,比如将像素值从 0-255 转换为 -1 到 1 或者 0 到 1。 3. **随机性(Randomness)**:在训练过程中引入随机性,保证每次迭代看到的数据略有不同,模拟真实世界的不确定性。 PyTorch 中可以使用 `torchvision.transforms` 这个模块来进行图像增强。例如: ```python from torchvision import transforms transform = transforms.Compose([ transforms.RandomResizedCrop(size, scale=(0.8, 1.0)), transforms.RandomHorizontalFlip(p=0.5), transforms.ColorJitter(brightness=0.1, contrast=0.1, saturation=0.1), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) ``` 这里定义了一个包含多种增强操作的 `Compose` 对象,你可以根据需要调整这些参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值