Pytorch 是否允许将给定的变换应用于图像的边界框坐标?
Does Pytorch allow to apply given transformations to bounding box coordinates of the image?
在Pytorch中,我知道某些图像处理变换可以这样组合:
import torchvision.transforms as transforms
transform = transforms.Compose([transforms.ToTensor()
、
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
在我的例子中,每张图像都有相应的 YOLO 格式的边界框坐标注释。 Pytorch 是否也允许将这些转换应用于图像的边界框坐标,然后将它们保存为新的注释?谢谢
您用作示例的转换不会更改边界框坐标。 ToTensor()
将 PIL 图像转换为火炬张量,Normalize()
用于归一化图像的通道。
RandomCrop()
和 RandomRotation()
等变换将导致边界框的位置与(修改后的)图像不匹配。
但是,Pytorch 使您可以非常灵活地创建自己的转换并控制边界框坐标发生的情况。
文档了解更多详情:
https://pytorch.org/docs/stable/torchvision/transforms.html#functional-transforms
举个例子(根据文档修改):
import torchvision.transforms.functional as TF
import random
def my_rotation(image, bonding_box_coordinate):
if random.random() > 0.5:
angle = random.randint(-30, 30)
image = TF.rotate(image, angle)
bonding_box_coordinate = TF.rotate(bonding_box_coordinate, angle)
# more transforms ...
return image, bonding_box_coordinate
希望对您有所帮助 =)
在Pytorch中,我知道某些图像处理变换可以这样组合:
import torchvision.transforms as transforms
transform = transforms.Compose([transforms.ToTensor()
、
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
在我的例子中,每张图像都有相应的 YOLO 格式的边界框坐标注释。 Pytorch 是否也允许将这些转换应用于图像的边界框坐标,然后将它们保存为新的注释?谢谢
您用作示例的转换不会更改边界框坐标。 ToTensor()
将 PIL 图像转换为火炬张量,Normalize()
用于归一化图像的通道。
RandomCrop()
和 RandomRotation()
等变换将导致边界框的位置与(修改后的)图像不匹配。
但是,Pytorch 使您可以非常灵活地创建自己的转换并控制边界框坐标发生的情况。
文档了解更多详情: https://pytorch.org/docs/stable/torchvision/transforms.html#functional-transforms
举个例子(根据文档修改):
import torchvision.transforms.functional as TF
import random
def my_rotation(image, bonding_box_coordinate):
if random.random() > 0.5:
angle = random.randint(-30, 30)
image = TF.rotate(image, angle)
bonding_box_coordinate = TF.rotate(bonding_box_coordinate, angle)
# more transforms ...
return image, bonding_box_coordinate
希望对您有所帮助 =)