关于transforms.toTensor()转换的问题 对应灰度图和RGB图均可转换 且自动加一个维度

target1 = imread(r"D:\pku\new desktop\dataset-DIV2k\Set14\bridge.bmp")
target2 = Image.open(r"D:\pku\new desktop\dataset-DIV2k\Set14\bridge.bmp")
print('yes')
mm = target1/255.0
nn = torch.ones([2,2])
nn_new = nn.float()

trans = transforms.ToTensor()
target1_tensor = trans(target1)
target2_tensor = trans(target2)
print('yes')
#如果输入三通道 输出则转换位CHW的[0.0 1.0]的float tensor
#重点 如果输入的是灰度图 输出的仍然会是三通道的 源码中 如果检测到图片是二维的 会自动加一个维度
dudu1 = np.ones([2,2])
dudu2 = dudu1[:,:,None]#加一个维度
print(dudu1.size)
print(dudu2.size)

#源码的话参照下面的图片

如下图所示:我们读入的为uint8数据,因此我们可以进行直接的转换

 

 

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以回答这个问题,一般来说,transforms.Resize应该在transforms.ToTensor之前使用,因为如果先进行ToTensor操作,图像的尺寸已经被改变了,可能会影响模型的训练效果。而如果先进行Resize操作,可以保证图像的尺寸符合模型的输入要求,再进行ToTensor操作。 ### 回答2: 在进行图像预处理时,transforms.Resize应当位于transforms.ToTensor之前。 transforms.Resize用于调整图像的大小,它可以根据指定的尺寸来缩放图像。如果将transforms.ToTensor放在transforms.Resize之前,那么在进行ToTensor转换时,将会将未调整大小的原始图像转换为张量形式。这样处理后的张量在维度上与原始图像大小不一致,可能会导致训练时的错误。 因此,为了确保将调整大小后的图像转换为张量时维度一致,应当首先进行transforms.Resize转换,然后再进行transforms.ToTensor转换。这样,在最终得到的张量中,每个像素点将以正确的位置被表示,并且在维度上与原始图像一致,方便后续的操作和训练。 ### 回答3: 在进行图像预处理的时候,transforms.ToTensortransforms.Resize可以按照需要选择先后顺序。 transforms.ToTensor是将PIL图像或numpy.ndarray转换为torch.Tensor,它将图像数据从范围[0, 255]转换为范围[0.0, 1.0],并改变维度顺序。这是因为在深度学习中,常用的图片数据表示方式是通道-高度-宽度(C-H-W),而不是常见的高度-宽度-通道(H-W-C)顺序。因此,如果先使用transforms.ToTensor,会将图片数据转换Tensor格式。 transforms.Resize用于调整图像尺寸大小,可以通过参数指定调整后的目标尺寸。一般来说,在进行图像预处理时,相关调整操作需要在尺寸调整之后进行,因为部分预处理操作可能依赖于特定的图像尺寸。所以,如果需要在调整尺寸之后再进行其他操作,需要先使用transforms.Resize。 总的来说,先使用transforms.Resize再使用transforms.ToTensor是比较常见的处理顺序。这样可以先将图像调整到所需的尺寸,然后再将其转换Tensor格式,以便进行后续的深度学习相关操作。当然,对于具体的任务和需求,这个顺序也可以进行灵活调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值