【深度之眼】Pytorch框架班第五期-transforms运行机制的代码调试

torchvision.transforms

常用的图像预处理方法

# ============================ step 1/5 数据 ============================
split_dir = os.path.join(BASE_DIR, "..", "..", "data", "rmb_split")
if not os.path.exists(split_dir):
    raise Exception(r"数据 {} 不存在, 回到lesson-06\1_split_dataset.py生成数据".format(split_dir))
train_dir = os.path.join(split_dir, "train")
valid_dir = os.path.join(split_dir, "valid")

norm_mean = [0.485, 0.456, 0.406]
norm_std = [0.229, 0.224, 0.225]

train_transform = transforms.Compose([
    transforms.Resize((32, 32)),
    transforms.RandomCrop(32, padding=4),
    transforms.ToTensor(),
    transforms.Normalize(norm_mean, norm_std),
])

valid_transform = transforms.Compose([
    transforms.Resize((32, 32)),
    transforms.ToTensor(),
    transforms.Normalize(norm_mean, norm_std),
])

# 构建MyDataset实例
train_data = RMBDataset(data_dir=train_dir, transform=train_transform)
valid_data = RMBDataset(data_dir=valid_dir, transform=valid_transform)

# 构建DataLoder
train_loader = DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)
valid_loader = DataLoader(dataset=valid_data, batch_size=BATCH_SIZE)

transforms.Compose():将一系列的transforms的方法进行有序的组合。在验证过程中的transforms不需要对数据进行增强。
在这里插入图片描述

1、在96行设置断点进行Debug.
在这里插入图片描述
2、采用C按钮,跳转到dataloader.py中DataLoader类的__iter__(self)函数中。
在这里插入图片描述

3、以单进程为例,点击B按钮然后点击C按钮,进入单进程的类当中。将光标放在346行并点击F按钮,运行到该行。
在这里插入图片描述
4、点击C按钮进入fetch函数,在fetch函数中,第44行调用了dataset函数,我们将光标放到第44行点击F按钮运行到该行,并点击C按钮进入该函数(C按钮点击两次)。
在这里插入图片描述
5、此时我们进入到我们创建的数据集类RMBDataset中,在__getitem__()中调用了transforms。
在这里插入图片描述
6、我们将光标放在45行点击F按钮运行到该行,并点击C按钮进入该函数。我们可以发现我们进入了transforms.py文件中Compose类的__call__()函数中,该函数通过一个for循环依次有序的从Compose中调用预处理方法。在这里插入图片描述
7、点击B按钮运行到第61行,我们可以发现第一个预处理方法t为Resize,正好对应我们设置的transforms的第一个方法。我们可以继续点击B按钮,t函数按照我们设置的transforms预处理顺序来调用函数。
在这里插入图片描述
在这里插入图片描述
8、运行到62行,我们的transforms运行完毕,点击E按钮返回我们的图片。从这里我们知道transforms在__getitem__()中调用,并实现数据预处理。
在这里插入图片描述
通过以上步骤我们可以清楚的了解transforms的运行机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值