FuyaLuo移植记录


一、维度准换总结

  • PIL与OpenCV读出的图片的numpy维度顺序都是: HWC(非单通道), HW(单通道)

  • OpenCV的RGB维度顺序是:BGR; PIL的RGB维度顺序是:RGB

  • Pytorch Dalaloader出来之后, Numpy都会转Tensor, 得到Tensor的维度顺序是: BCHW(非单通道),BHW(单通道)

  • PyTorch中ToTensor的操作: 除以255,并进行维度调整

  • PyTorch中ToTensor维度调整: HWC->CHW, HW->CHW

  • Pytorch中ToTensor要求输入的数据类型: PIL图像对象或Numpy数组

  • ToTensor与不ToTensor的区别:

# 对于Edge的处理
img_B_edge = Image.open(img_B_edge_path).convert('L') #PIL HW 0~255
img_B_edge = transforms.ToTensor()(img_B_edge) #Tensor CHW 0~1
output of dataloader #Tensor BCHW 0~1

# 对于Mask的处理
img_B_mask = Image.open(img_B_mask_path).convert('L') #PIL HW 0~255
img_B_mask = np.array(img_B_mask, dtype=np.int64) #Numpy HW 0~255
output of dataloader #Tensor BHW 0~255

# 对于RGB图像的处理
img_B = Image.open(img_B_path).convert('RGB') #PIL HWC 0~255
img_B = transforms.ToTensor()(img_B) #Tensor CHW 0~1
output of dataloader #Tensor BCHW 0~1

# 对于灰度图像的处理
img = Image.open(img_path).convert('L') #PIL HW 0~255
img = transforms.ToTensor()(img) #Tensor CHW 0~1
output of dataloader #Tensor BCHW 0~1

所以:之前就只有BCHW的区别和BHW的区别

二、可能存在的问题

  • 已经解决

  • 更正:不存在了,因为是.convert(‘L’)操作,到numpy时只有单通道。

  • numpy时: hw

  • dataloader时: bhw

    对于:img_A_edge和img_B_edge
    官方的:直接除以255
    我的:直接ToTensor
    区别:我的维度为chw,别人的为hwc
  • 已经解决

  • 确实默认是固定住,也已经固定住

    按照目前这种形式,每次加载图片的顺序,都需要固定住
  • 等待解决

    IR_pos_h = np.random.randint(0, 32)
    IR_pos_w = np.random.randint(0, 104)
    当中的具体数值也需要注意
    注意:这是红外的训练过程,为什么这样裁剪,应当看训练过程
  • 已经解决

  • 不需要固定住,原版也没有固定住

    随机缩放裁剪的情况,可能需要固定住
  • 等待解决

    是不是bhw影响了获取梯度的那个函数

Author: Ruimin Huang
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Ruimin Huang !
  TOC