Pytorch中对图片数据的tensor进行HWC和CHW转换、RGB和BGR的转换是常常使用到的数据预处理操作。

1 HWC与CHW互转

HWC转CHW

假设输入图片tensor格式为BHWC,比如1x224x224x3,在Pytorch转成BCHW其实也就是简单的维度变换

x = x.permute(0, 3, 1, 2) # 从BHWC转为BCHW

CHW转HWC

那如果输入图片tensor格式为BCHW,比如1x3x224x224,与上面一样也是变换维度就行

x = x.permute(0, 2, 3, 1)

2 RGB与BGR互转

RGB转BGR

假设输入图片tensor格式为BHWC,RGB,在Pytroch中实现RGB转BGR,就是最后一个维度C进行维度变换,交换R和B的位置,具体代码如下

x = x[..., [2, 1, 0]]

BGR转RGB

假设输入图片tensor格式为BHWC,BGR,在Pytroch中实现BGR转RGB,就是最后一个维度C进行维度变换,交换R和B的位置,具体代码如下

x = x[..., [2, 1, 0]]