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 NotImplementedErrorclass MultiCompose:"""扩展 torchvision.transforms.Compose:支持输入多图,且保证各 augmentation 中所有输入都用同一随机状态(如旋转同一随机角度),分割任务有用。"""# numpy.random.seed range error:#   ValueError: Seed must be between 0 and 2**32 - 1MIN_SEED = 0 # - 0x8000_0000_0000_0000MAX_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 functionself.transforms = []for t in transforms:if isinstance(t, (tuple, list)):# convert `None` to `no_op` for convenienceself.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 transformelse: # 同用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_imagesif 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], # 独用
])
  • 效果:

test-dataset-1.png

References

  1. pytorch一致数据增强

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/629066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生物制药厂污水处理需要哪些工艺设备

生物制药厂是一种特殊的工业场所&#xff0c;由于其生产过程中涉及的有机物较多&#xff0c;导致废水中含有高浓度的有机物和微生物等污染物&#xff0c;因此需要采用一些特殊的工艺设备来进行污水处理。本文将介绍生物制药厂污水处理中常用的工艺设备。 首先&#xff0c;对于生…

【面试合集】说说微信小程序的支付流程?

面试官&#xff1a;说说微信小程序的支付流程&#xff1f; 一、前言 微信小程序为电商类小程序&#xff0c;提供了非常完善、优秀、安全的支付功能 在小程序内可调用微信的API完成支付功能&#xff0c;方便、快捷 场景如下图所示&#xff1a; 用户通过分享或扫描二维码进入商…

2024年华数杯国际赛赛题浅析

21号完赛&#xff0c;28号出成绩的华数杯国际赛&#xff0c;作为美赛最合适的练手赛正式开赛。为了让大家更好地比赛&#xff0c;首先为大家带来本次竞赛两道题目的浅要解析。主要分析两道题目适合的群体&#xff0c;未来大家求解过程中可能遇到的问题。方便大家快速完成选题。…

农业四情监测管理系统的特点优势

TH-Q2农业四情监测管理系统是一种利用现代信息技术&#xff0c;对农业生产中的墒情、苗情、虫情、灾情进行实时监测和管理的智能化系统。那么&#xff0c;这个系统到底有哪些特点和优势呢&#xff1f;让我们一起来了解一下。 1.实时监测&#xff1a;通过传感器、摄像头等设备&a…

美国智库发布《用人工智能展望网络未来》的解析

文章目录 前言一、人工智能未来可能改善网络安全的方式二、人工智能可能损害网络安全的方式三、人工智能使用的七条建议四、人工智能的应用和有效使用AI五、安全有效地使用人工智能制定具体建议六、展望网络未来的人工智能&#xff08;一&#xff09;提高防御者的效率&#xff…

DWM1000 MAC层

DWM1000 MAC层 MAC层 概述 MAC层&#xff0c;即媒体访问控制层&#xff0c;是数据通信协议栈中的一个重要部分&#xff0c;位于链路层的下半部分&#xff0c;紧邻物理层。在OSI模型中&#xff0c;它属于第二层&#xff0c;即数据链路层的一部分。MAC层的主要职责是控制如何在…

框架基础-Maven+SpringBoot入门

框架基础 Maven基础 Maven概述 Maven是为Java项目提供项目构建和依赖管理的工具 Maven三大功能 - 项目构建构建&#xff1a;是一个将代码从开发阶段到生产阶段的一个过程&#xff1a;清理&#xff0c;编译&#xff0c;测试&#xff0c;打包&#xff0c;安装&#xff0c;部署…

运筹说 第46期 | 目标规划-数学模型

经过前几期的学习&#xff0c;想必大家已经对线性规划问题有了详细的了解&#xff0c;但线性规划作为一种决策工具&#xff0c;在解决实际问题时&#xff0c;存在着一定的局限性&#xff1a;(1)线性规划只能处理一个目标&#xff0c;而现实问题往往存在多个目标&#xff1b;(2)…

GEE时序——利用sentinel-2(哨兵-2)数据进行地表物候学分析(时间序列平滑法估算和非平滑算法代码)

简介 哨兵-2A/B 串联卫星的空间分辨率高、重访时间长,有可能改进对陆地表面物候的检索。不过,生物群落和区域特征在很大程度上限制了陆表物候学算法的设计。在北极地区,这种生物群落特有的特征包括长期积雪、持续云层覆盖和生长季节短暂。在此,我们评估了哨兵-2 获取北极高…

【jupyter添加虚拟环境内核(pytorch、tensorflow)- 实操可行】

jupyter添加虚拟环境内核&#xff08;pytorch、tensorflow&#xff09;- 实操可行 1、查看当前状态(winR&#xff0c;cmd进入之后)2、激活虚拟环境并进入3、安装ipykernel5、完整步骤代码总结6、进入jupyter 添加pytorch、tensorflow内核操作相同&#xff0c;以下内容默认已经安…

Klocwork—符合功能安全要求的自动化静态测试工具

产品概述 Klocwork是Perforce公司产品&#xff0c;主要用于C、C、C#、Java、 python和Kotlin代码的自动化静态分析工作&#xff0c;可以提供编码规则检查、代码质量度量、测试结果管理等功能。Klocwork可以扩展到大多数规模的项目&#xff0c;与大型复杂环境、各种开发工具集成…

低代码自动化测试的实践

何为低代码测试 传统上&#xff0c;功能、 UI、端到端等测试自动化的实现都涉及编写测试脚本&#xff0c;代替测试人员执行重复的手动测试任务。自动化脚本的开发工作通常由 QA 工程师或开发人员完成&#xff0c;这需要编写大量代码。 而低代码甚至无代码的理念也是在自动化测…

【ubuntu】ubuntu 20.04安装docker,使用nginx部署前端项目,nginx.conf文件配置

docker 官网&#xff1a;Install Docker Engine on Ubuntu 一、安装docker 1.将apt升级到最新 sudo apt update2.使用apt安装 docker 和 docker-compose &#xff08;遇到提示输入y&#xff09; sudo apt install docker.io docker-compose3.将当前用户添加到docker用户组 …

HNU-模式识别-作业2-面向应用分类系统

模式识别-作业2 计科210X 甘晴void 202108010XXX 【具体实现思路是按照去年数学建模国赛题来做的&#xff0c;就放个思路&#xff0c;完整不放全了】 题目&#xff1a; 查阅文献资料&#xff0c;构建一个面向应用的分类系统。 要求&#xff1a; 至少3页A4纸&#xff0c;文…

Leetcode951. 翻转等价二叉树

Every day a Leetcode 题目来源&#xff1a;951. 翻转等价二叉树 解法1&#xff1a;递归 存在三种情况&#xff1a; 如果 root1 或者 root2 是 nullptr&#xff0c;那么只有在他们都为 nullptr 的情况下这两个二叉树才等价。如果 root1&#xff0c;root2 的值不相等&#x…

人民网(人民日报官网)投稿方式解读

当今社交媒体风行的时代&#xff0c;人民网作为我国最大的新闻门户网站&#xff0c;扮演着传递信息、引导民意的重要角色。人民网积极鼓励社会各界朋友&#xff0c;尤其是普通民众&#xff0c;分享自己的见闻和观点&#xff0c;通过投稿的方式参与到新闻报道中来。那么&#xf…

已实现:JS如何根据视频的http(s)地址,来截取帧图片,并实现大图压缩的功能

现在&#xff0c;我们已经有了视频的http地址&#xff0c;我们怎么截取帧图片呢&#xff1f;我以Vue为基础架构&#xff0c;来写写代码。 1、先写布局&#xff0c;先得有video&#xff0c;然后得有canvas <video id"videoPlay" style"width: 100%; height:1…

查看centos的CPU、内存、磁盘空间等配置信息

目录 查看CPU/proc/cpuinfo中的信息 查看内存/proc/meminfo中的信息 查看磁盘空间df 命令du命令使用fdisk命令 查看CPU /proc/cpuinfo中的信息 前置&#xff1a; [ltkjltkj front]$ cat /proc/cpuinfo| grep "physical id" physical id : 0 physical id : 0 physi…

Ubuntu系统默认的dash shell改成bash shell

在Ubuntu系统中&#xff0c;如果默认的/bin/sh链接指向了dash&#xff0c;而你希望将其更改为指向bash&#xff0c;可以通过以下步骤操作&#xff1a; sudo rm /bin/sh sudo ln -s /bin/bash /bin/sh 但是&#xff0c;这种做法并不推荐&#xff0c;因为某些系统服务和脚本依赖…

【文本到上下文 #2】:NLP 的数据预处理步骤

一、说明 欢迎阅读此文&#xff0c;NLP 爱好者&#xff01;当我们继续探索自然语言处理 (NLP) 的广阔前景时&#xff0c;我们已经在最初的博客中探讨了它的历史、应用和挑战。今天&#xff0c;我们更深入地探讨 NLP 的核心——数据预处理的复杂世界。 这篇文章是我们的“完整 N…