美文网首页Deep Learning
深度学习 分别利用PyTorch 与numpy实现数据增强

深度学习 分别利用PyTorch 与numpy实现数据增强

作者: yuanthu | 来源:发表于2022-02-23 23:02 被阅读0次
  1. PyTorch有自带的数据增强包在torchvision.transforms中, 可以使用
import torchvision.transforms as transforms

my_transforms = transforms.Compose([
        transforms.RandomCrop(32),
        transforms.Grayscale(),
        transforms.RandomHorizontalFlip(),
        transforms.RandomVerticalFlip(),
        transforms.Resize(img_size),#for example img_size=(128, 128)
        transforms.ToTensor(),
        transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
    ])

实现张量空间的数据增强.

  1. 当然也可以使用numpy, openCV自行实现, 这样更加自由, 给出我自己的实例如下, 在main中transforms.compose([Normalize()...])调用就可以了:
# normalization
class Normalize(object):
    def __init__(self, mean=0.5, std=0.5):
        self.mean = mean
        self.std = std

    def __call__(self, data):
        data["img"] = (data["img"] - self.mean) / self.std
        return data

# to PyTorch tensor
class ToTensor(object):
    def __init__(self):

    def __call__(self, data):
        data["img"] = torch.from_numpy(data["img"].transpose((2, 0, 1)).astype(np.float32))

        return data

# horizontal flip with probability p
class RandomHorizontalFlip(object):
    def __init__(self, p=0.5):
        self.p = p

    def __call__(self, data):
        if np.random.rand() < self.p:
            np.flip(data["img"], axis=1)
        else:
            data["img"] = data["img"]
        return data

# vertical flip with p
class RandomVerticalFlip(object):
    def __init__(self, p=0.5):
        self.p = p

    def __call__(self, data):
        if np.random.rand() < self.p:
            np.flip(data["img"], axis=0)
        else:
            data["img"] = data["img"]
        return data

相关文章

网友评论

    本文标题:深度学习 分别利用PyTorch 与numpy实现数据增强

    本文链接:https://www.haomeiwen.com/subject/mnvalrtx.html