存储使用 Torchvision 变换时应用的精确变换

问题描述 投票:0回答:1

当我们使用 torchvision 或 albumentations 的变换时,我们可以使用随机裁剪和随机亮度对比度等功能来生成增强图像。有没有可能的方法来存储应用于图像的精确变换以获得相应的图像?

machine-learning deep-learning pytorch conv-neural-network torchvision
1个回答
0
投票

是的,有,但这需要您做一些额外的工作。大多数随机变换类都有一个

get_params
方法(如果使用较新的
_get_params
命名空间,则为
v2
),该方法生成用于增强的随机参数,然后将这些参数与图像一起传递到功能变换。

如果您想在训练期间存储每个转换的参数,最简单的方法可能是子类化转换,并添加感兴趣的值的日志。使用旧 API 的最小示例:

import logging
import torchvision
import torchvision.transforms.functional as F

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

class MyRandomCrop(torchvision.transforms.RandomCrop):
    def forward(self, img):
        i, j, h, w = self.get_params(img, self.size)
        logger.info("Cropping image with parameters %d %d %d %d", i, j, h, w)
        return F.crop(img, i, j, h, w)

image = torchvision.io.read_image("/path/to/image.jpg")
transform = MyRandomCrop(size=(100, 100))
image = transform(image)
>>> INFO:__main__:Cropping image with parameters 789 769 100 100
© www.soinside.com 2019 - 2024. All rights reserved.