如何将从流中读取的原始图像字节转换为有效执行Conv2d的形状的张量



社区,

我有一个字节文件,它被组织成16384个字节的块。每个块都包含一个大小为64x64像素的未压缩图像。图像像素的格式为8位ABGR。

假设我已经成功地将区块读取到numpy.array:中

buf = numpy.fromfile( dataFile, dtype=np.uint8, count=16384, offset=offs)

问题是,我如何将这个字节数组转换为Pytorch张量,以便能够执行卷积(Conv2d)?

如果我理解得当,前面提到的卷积(Conv2d)期望张量具有单独的通道平面,而不是多通道像素的单个平面。

额外的问题是,如何在这期间摆脱阿尔法通道?

在下面的代码中,我假设您的图像以行为主的方式存储(因此您的字节是abgrabgrabgr....而不是aaaa....bbbb....gggg....rrrr)

# First I reshape the buf into an image with 4 channels
buf = buf.reshape((4, 64, 64))
# Then I remove the alpha channel by taking only the 3 last :
bgr_buf = buf[1:, :, :]
# Then I make it into a pytorch tensor : 
tensor = torch.from_numpy(bgr_buf)
# And finally, pytorch convolutions expects batchs of images. So let's make it a batch of 1
batch = tensor.view(1, 3, 64, 64)

相关内容

  • 没有找到相关文章

最新更新