我有一个input
尺寸为 64x21x21 的张量。它是 64 个图像的小批量,每个图像 21x21 像素。我想将每个图像裁剪为 11x11 像素。所以我想要的输出张量的尺寸为 64x11x11。
我想围绕不同的“中心像素”裁剪每个图像。中心像素由尺寸为 64x2 的二维长张量给出center
。对于图像 i,给出应位于输出中心的像素的center[i][0]
行索引和列索引。center[i][1]
我们可以假设中心像素总是距离边界至少 5 个像素。
有没有一种有效的方法可以在 pytorch(在 GPU 上)中执行此操作?
更新:让我澄清一下,center
张量是由深度神经网络形成的。用强化学习术语来说,它充当“硬注意力机制”。“裁剪”图像后,该子图像将成为另一个神经网络的输入。这就是为什么我想在Pytorch中进行裁剪:因为裁剪前后的操作都是在Pytorch中进行的。我想避免将任何内容从 GPU 传输回 CPU。
torchvision包含变换,包括RandomCrop
,但如果您希望以特定方式裁剪图像,它似乎不适合您的用例。我认为 PyTorch 这种深度学习框架并不是裁剪图像的合适工具。
相反,请查看本使用pillow的教程。您应该能够用它来实现您的用例。还可以看看pillow-simd,它可以更快地完成一些操作。
归档时间: |
|
查看次数: |
6190 次 |
最近记录: |