pytorch一致数据增强—独用增强

这篇具有很好参考价值的文章主要介绍了pytorch一致数据增强—独用增强。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前作 [1] 介绍了一种用 pytorch 模仿 MONAI 实现多幅图(如:image 与 label)同用 random seed 保证一致变换的写法,核心是 MultiCompose 类和 to_multi 包装函数。不过 [1] 没考虑各图用不同 augmentation 的情况,如:

  1. ColorJitter 只对 image 做,而不对 label 做;
  2. image 的 resize interpolation 可任选,但 label 只能用 nearest

本篇更新写法,支持各图同用、独用 augmentation。

Code

  • 对比 [1],主要改变是改写 MultiCompose 类,并将 to_multi 吸收入内。
  • MultiCompose 的用法还是和 torchvision.transforms.Compose 几乎一致,不过支持独用 augmentation:只要为各图指定各自的 augmentation 类/函数即可。见下一节例程。
def to_multi():
	"""不用单独的 to_multi 打包了,已并入 MultiCompose"""
	raise NotImplementedError


class MultiCompose:
    """扩展 torchvision.transforms.Compose:支持输入多图,
    且保证各 augmentation 中所有输入都用同一随机状态(如旋转同一随机角度),
    分割任务有用。
    """

    # numpy.random.seed range error:
    #   ValueError: Seed must be between 0 and 2**32 - 1
    MIN_SEED = 0 # - 0x8000_0000_0000_0000
    MAX_SEED = min(2**32 - 1, 0xffff_ffff_ffff_ffff)

    def __init__(self, transforms):
    	"""输入:一个 list/tuple,
    	其中每个元素可以是一个 augmentation 对象(transform)/函数,各输入同用;
    	或一个嵌套的 list/tuple,为每个输入指定独用的 augmentation。
    	"""
        # self.transforms = [to_multi(t) for t in transforms]
        no_op = lambda x: x # i.e. identity function
        self.transforms = []
        for t in transforms:
            if isinstance(t, (tuple, list)):
            	# convert `None` to `no_op` for convenience
                self.transforms.append([no_op if _t is None else _t for _t in t])
            else:
                self.transforms.append(t)

    def __call__(self, *images):
        for t in self.transforms:
            if isinstance(t, (tuple, list)): # 独用
                assert len(images) <= len(t) # allow redundant transform
            else: # 同用
                t = [t] * len(images)

            _aug_images = []
            _seed = random.randint(self.MIN_SEED, self.MAX_SEED)
            for _im, _t in zip(images, t):
                seed_everything(_seed)
                _aug_images.append(_t(_im))

            images = _aug_images

        if len(images) == 1:
            images = images[0]
        return images

Usage & Test

例程沿用 [1],但改一下 augmentation:

train_trans = MultiCompose([
	# image 用 bilinear,label 用 nearest
    (ResizeZoomPad((224, 256), "bilinear"), ResizeZoomPad((224, 256), "nearest")), # 独用
    transforms.RandomAffine(30, (0.1, 0.1)), # 同用,传一个就行
    transforms.RandomHorizontalFlip(), # 同用
    # ColorJitter 只对 image 做,label 不做(None)
    [transforms.ColorJitter(0.1, 0.2, 0.3, 0.4), None], # 独用
])
  • 效果:

pytorch一致数据增强—独用增强,机器学习,pytorch,python,torchvision,数据增强,random文章来源地址https://www.toymoban.com/news/detail-795786.html

References

  1. pytorch一致数据增强

到了这里,关于pytorch一致数据增强—独用增强的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pytorch(torchvision)和python对应版本关系

    1.当你在确定好pytorch的版本后,https://pytorch.org/get-started/previous-versions/该网址会自动配置torchvision的版本。 2.当你确定了pytorch的版本后,可以在https://github.com/pytorch/vision#installation该网址中寻找对应的python版本

    2024年02月12日
    浏览(25)
  • PyTorch与torchvision、torchaudio、python版本对应关系

    PyTorch与torchvision、python 对应关系 torch    torchvision    python main / nightly    main / nightly    =3.7, =3.10 1.12.0    0.13.0    =3.7, =3.10 1.11.0    0.12.3    =3.7, =3.10 1.10.2    0.11.3    =3.6, =3.9 1.10.1    0.11.2    =3.6, =3.9 1.10.0    0.11.1    =3.6, =3.9 1.9.1    0.10.1    =3.6, =3.9 1.

    2024年02月09日
    浏览(23)
  • python的pytorch和torchvision利用wheel文件安装

    在做人工智能的时候,我们需要下载pytorch和torchvision,那么如何下载呢。利用wheel文件+pip安装 首先要看你的python版本,打开命令行,输入: 就可以看到了 打开下载网址 pytorch和torchvision下载地址 根据你的电脑下载相应的wheel包,我的电脑是windows,cpu,x64,python3.9所以我选择

    2024年02月07日
    浏览(24)
  • 数据一致性在人工智能与机器学习中的应用

    数据一致性是指在分布式系统中,当多个节点或进程访问和修改共享数据时,确保所有节点或进程看到的数据都是一致的状态。在人工智能(AI)和机器学习(ML)领域,数据一致性是一个重要且复杂的问题。随着数据规模的增加,分布式计算变得越来越普遍,这使得数据一致性问

    2024年02月21日
    浏览(35)
  • [pytorch入门] 4. torchvision中数据集的使用

    可以去看官方文档 可以在里面找到一些数据集的使用 这就可以在项目目录下看到下载的压缩文件,若文件已经下载好,再次运行时不会重复下载 文件下载下来比较慢,可以复制链接用迅雷等工具下

    2024年01月23日
    浏览(24)
  • Anaconda搭建深度学习虚拟环境:cuda+cudnn+pytorch+torchvision(并验证)

    1.以管理员的身份打开Anaconda Prompt窗口: 2.创建新的虚拟环境: 3.激活刚刚创建好的虚拟环境: 1.右击鼠标打开NVIDIA控制面板,查看显卡支持的最高CUDA版本: 2.Anaconda 换清华镜像源,提高下载速度: 3.我电脑的CUDA最高支持12.0,但注意 在环境中安装比电脑CUDA版本低的 ,因为

    2023年04月09日
    浏览(44)
  • PyTorch中torch、torchtext、torchvision、torchaudio与Python版本兼容性

    torch与torchtext,Python对应关系,来源:https://pypi.org/project/torchtext/ 截止发文,最新版本:torch 2.0.0,torchtext 0.15.1 安装方法: 或 torch与torchvision,Python对应关系,来源:https://github.com/pytorch/vision 截止发文,最新版本:torch 2.0.0,torchvision 0.15.1 安装方法: 或 torch与torchaudio,Pyt

    2024年02月04日
    浏览(38)
  • 深度学习:Pytorch安装的torch与torchvision的cuda版本冲突问题与解决历程记录

    今天不小心将conda环境中的一个pytorch环境中的torch包给搞混了,将其更新了一下,发生了一些问题: 当时运行了一下这个代码:  pip install torchvision --upgrade 导致了环境中包的混乱: 只能说欲哭无泪,当时这个 pytorch环境中我是安装的CUDA11.8的版本应该,后来安装了cpu版本的将

    2024年02月20日
    浏览(31)
  • Pytorch使用torchvision.datasets.ImageFolder读取数据集,数据集的内容排列状况

    当使用torchvision.datasets.ImageFolder读取猫狗数据集时,dataset中存的图片是 \\\'猫狗猫狗猫狗猫狗\\\' 还是 \\\'猫猫猫猫狗狗狗狗\\\' 呢? 数据集文件的存放路径如下图 测试代码如下 输出结果如下 可以得知,是 \\\'猫猫猫猫狗狗狗狗\\\'

    2024年02月08日
    浏览(30)
  • Python小知识 - 【Python】如何使用Pytorch构建机器学习模型

    【Python】如何使用Pytorch构建机器学习模型 机器学习是人工智能的一个分支,它的任务是在已有的数据集上学习,最终得到一个能够解决新问题的模型。Pytorch是一个开源的机器学习框架,它可以让我们用更少的代码构建模型,并且可以让模型训练的过程更加简单。 首先,我们

    2024年02月09日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包