python - Pytorch 是否允许将给定的转换应用于图像的边界框坐标?

标签 python computer-vision yolo bounding-box

在 Pytorch 中,我知道某些图像处理转换可以这样组合:import torchvision.transforms as transformstransform = transforms.Compose([transforms.ToTensor() ,transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])就我而言,每个图像都有一个对应的 YOLO 格式的边界框坐标注释。 Pytorch 是否也允许将这些转换应用于图像的边界框坐标,然后将它们保存为新的注释?谢谢。

最佳答案

您用作示例的转换不会更改边界框坐标。 ToTensor()将 PIL 图像转换为火炬张量和 Normalize()用于归一化图像的 channel 。
转换如 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
希望有帮助=)

关于python - Pytorch 是否允许将给定的转换应用于图像的边界框坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63068332/

相关文章:

python - 将 python 脚本编译为 C 时如何修复 Cython header 错误

python - 如何添加多个二进制掩码?

python - 仅在检测到的对象内检测文本

python - 在 Windows 上配置 Google 翻译

python - 使用 PyUSB usb.util.get_string() 获取字符串描述符

opencv - 使用opencv检测棋盘上方的手

machine-learning - 训练 Yolo 使用已裁剪的图像检测我的自定义对象

python-3.x - 在 Google Colab 中使用笔记本电脑网络摄像头进行实时 YOLO 对象检测

python - 为什么 Tkinter 中的这个形状更新缓慢?

web-applications - 通过 Web 应用程序流式传输 OpenCV 视频源的想法