You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PyTorch Torchvision实现仅45°/-45°的随机图像旋转

实现仅随机旋转±45°的图像变换

要实现仅以50%概率选择45°或-45°旋转图像,你可以用以下几种简洁方法替代原有的RandomRotation:

方法1:使用RandomChoice(最简便)

torchvision.transforms.RandomChoice会从给定的变换列表中等概率随机选择一个执行,刚好匹配你50%概率选两种角度的需求:

import torchvision.transforms as T

transforms = T.Compose([
    T.RandomChoice([
        T.RandomRotation([45, 45]),  # 固定旋转45°
        T.RandomRotation([-45, -45]) # 固定旋转-45°
    ])
])

给RandomRotation传入长度为1的区间,就能确保每次只应用指定角度的旋转。

方法2:自定义变换类

如果需要后续调整概率等更灵活的逻辑,可以自定义一个继承自T.Transform的类:

import torchvision.transforms as T
import random

class FixedAngleRandomRotation(T.Transform):
    def __init__(self, angles):
        self.angles = angles
    
    def __call__(self, img):
        angle = random.choice(self.angles)
        return T.functional.rotate(img, angle)

# 使用时传入目标角度列表,默认等概率选择
transforms = T.Compose([
    FixedAngleRandomRotation([45, -45])
])

后续如果要调整两种角度的概率,只需把random.choice换成random.choices并指定权重即可。

方法3:使用Lambda变换

用T.Lambda快速封装简单的随机旋转逻辑,代码最简洁:

import torchvision.transforms as T
import random

transforms = T.Compose([
    T.Lambda(lambda img: T.functional.rotate(img, random.choice([45, -45])))
])

内容的提问来源于stack exchange,提问作者Lézard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 10:16:00