1 Star 0 Fork 0

iint/notes

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
20201028dzh.md
20210505大组会.md
210服务器使用方法.md
4MedianofTwoSortedArray.md
51单片机.md
8大主流服务器程序线程模型.md
ArrayList与LinkedList.md
BNCT.md
C#正则表达式.md
C++的typedef.md
C连接mysql.md
FCN.md
G401.md
History命令用法.md
Interpretbytesaspackedbinarydata.md
IoU.md
K-means聚类算法的理解与案例实战.md
Liner Models.md
Linux下快速比较两个目录的不同.md
MRI-CT工作的数据处理02.md
MRI-CT工作的数据处理03.md
MRI-CT工作的数据处理全过程.md
MRI-CT工作的数据预处理01.md
MRI-CT工作的结果分析01.md
MySQL学习笔记.md
OFDR技术.md
PCA.md
PIL图像处理库简介.md
Paper210309_深度学习预测剂量分布.md
PyTorch常用代码段整理.md
Pythonlambda介绍.md
Pythonxrange()函数.md
Python与C的交互.md
Python中os.sep.join()和os.path.join()的用法和区别.md
Python利用生成器读取大文件数据.md
Python可视化.md
Python将字符串作为变量名.md
Python常用的内建模块.md
Python常用第三方模块.md
Python标准库shutil用法实例详解.md
Python正则表达式.md
Python直接反投影重建CT.md
Python类型注解.md
Python类装饰器.md
Python计算皮尔逊相关系数.md
Python通过钩子远程加载模块.md
Python静态类方法.md
Pytorch中train和eval用法区别.md
Pytorch的BatchNorm层使用中容易出现的问题.md
Pytorch的transforms.md
SQL高质量语句.md
Ubuntu压缩及解压文件.md
__slots__是个什么玩意儿.md
batch_normalization.md
centos7 计划任务 定时运行sh.md
conda.md
cpp list node.md
cpp11并发与多线程.md
cppSTLunordered_map容器用法详解.md
cpphashmap.md
cpp中auto类型用法总结.md
cpp中const的用法.md
cpp中lambda函数.md
cpp中malloc、calloc、realloc函数的用法.md
cpp中set用法详解.md
cpp中using的用法.md
cpp中减去'0'的作用(-'0').md
cpp中的内联函数.md
cpp之namespace常见用法.md
cpp信号处理.md
cpp基础.md
cpp左值引用和右值引用.md
cpp异常处理trycatchthrow.md
cpp提高.md
cpp文件读写.md
cpp核心.md
cpp类中成员变量的初始化.md
cpp预处理器.md
effectivePython.md
github_tutorial.md
https与http.md
k折交叉验证.md
latex.md
leetcode-001.md
leetcode1.TwoSum.md
leetcode11.ContainerWithMostWater.md
leetcode12.IntegertoRoman.md
leetcode131.PalindromePartitioning.md
leetcode15.3Sum.md
leetcode17.LetterCombinationsofaPhoneNumber.md
leetcode22.GenerateParentheses.md
leetcode24.SwapNodesinPairs.md
leetcode3.LongestSubstringWithoutRepeatingCharacters.md
leetcode39.CombinationSum.md
leetcode43.MultiplyStrings.md
leetcode5.LongestPalindromicSubstring.md
leetcode6.ZigZagConversion.md
matplotlib colorbar颜色卡自定义偏移量.md
matplotlib.md
matplotlib_tutorial.md
matplotlib的一些小技巧.md
matplotlib风格.md
mcgpu.md
mysql批量删除重复行.md
namedtuple的使用.md
numpy索引和切片.md
office正则.md
pandas.md
pychram快捷键.md
python-mvisdom.server报[Errno98]Addressalreadyinuse错误解决办法.md
python.md
python_cookbook.md
python关于sorted里面key,reverse以及lamdba,operator这几个鸟人.md
python发送邮件.md
python拟合曲线.md
python正则.md
python爬虫实例-iint入组培训.md
python获取当前目录下的所有文件.md
python装饰器.md
python调用dll动态链接库及ctypes的使用.md
python透明图片和不透明图片叠加合成.md
python闭包.md
python骚操作.md
pytorch分割二分类的两种形式.md
pytorch分布式.md
reids是什么.md
shell.md
shell_cookbook.md
str和repr.md
tqdm.md
vector的六种创建和初始化方法.md
visdom服务启动时提示Downloadingscripts,thismaytakealittlewhile解决...
wordpress迁移.md
yolact.md
中值滤波优化图像结果.md
为什么说relu是激活函数.md
云南旅游计划.md
什么是cpp.md
什么是图神经网络.md
从贝叶斯方法谈到贝叶斯网络.md
优势:杀死乏氧细胞乏氧细胞定义.md
传能线密度.md
使用Python把超大文件当成数组读取.md
共线性.md
利用python快速发送博客到wordpress.md
制作h5py数据集.md
医学图像分割数据集制作.md
医学影像一些概念.md
单例模式.md
南航高性能计算平台介绍.md
卷积的优化.md
原理这就是网络.md
口诀理解Python闭包与装饰器.md
回调函数callback.md
图像分割损失函数设计.md
图像的全变分和去噪.md
基于深度学习的自然图像和医学图像分割:网络结构设计.md
基于蝴蝶网络的双能CT图像域双材料分解.md
多级反馈队列调度算法详解.md
大组会文献汇报.md
安装私有的包.md
将CT值转换为器官组织的one_hot编码.md
工厂模式.md
常见分类算法及他们的优缺点.md
平衡二叉树、B树、B+树、B树.md
应用层.md
快速理解numpy的axis.md
批量删除excel单元格中的换行符.md
损失函数在医学图像分割问题中的应用.md
数值分析作业01.md
数据降维.md
数理逻辑——命题逻辑的基本概念.md
朴素贝叶斯原理及python实现.md
机器学习中,频率派和贝叶斯派有什么核心差异?.md
机器学习十大算法.md
深度学习调参技巧.md
理解主成分分析.md
用Pytorch踩过的坑.md
用python更新主图数据库.md
白化.md
硼中子俘获治疗.md
神经网络不收敛的11个问题.md
神经网络中的注意力机制.md
神经网络工作基本流程.md
群论.md
自动抢羽毛球馆预约.md
英语演讲稿.md
计算机网络.md
计算机网络01-概念、基础.md
设计模式.md
详解AVL树基础篇.md
读写二进制数组数据.md
贝叶斯vs频率派.md
迭代.md
阿里云oss搭建个人图床和网盘.md
雷登变换.md
顺序容器.md
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Pytorch的transforms.md 10.63 KB
一键复制 编辑 原始数据 按行查看 历史
nuaazs 提交于 4年前 . first

变换是常见的图像变换。它们可以使用链接在一起Compose。此外,还有torchvision.transforms.functional模块。功能转换可以对转换进行细粒度控制。如果您必须构建更复杂的转换管道(例如,在分段任务的情况下),这将非常有用。

torchvision.transforms.Compose(transforms)
transforms.Compose([
    transforms.CenterCrop(10),
    transforms.ToTensor(),    
])

〇、常见的图像变换概述

  1. 裁剪(Crop)

    1. 中心裁剪:transforms.CenterCrop
    2. 随机裁剪:transforms.RandomCrop
    3. 随机长宽比裁剪:transforms.RandomResizedCrop
    4. 上下左右中心裁剪:transforms.FiveCrop
    5. 上下左右中心裁剪后翻转: transforms.TenCrop
  2. 翻转和旋转(Flip and Rotation)

    1. 依概率p水平翻转:transforms.RandomHorizontalFlip(p=0.5)
    2. 依概率p垂直翻转:transforms.RandomVerticalFlip(p=0.5)
    3. 随机旋转:transforms.RandomRotation
  3. 图像变换(resize)

    1. 大小变化:transforms.Resize
    2. 标准化:transforms.Normalize
    3. 转为tensor,并归一化至[0-1]:transforms.ToTensor
    4. 填充:transforms.Pad
    5. 修改亮度、对比度和饱和度:transforms.ColorJitter
    6. 转灰度图:transforms.Grayscale
    7. 线性变换:transforms.LinearTransformation()
    8. 仿射变换:transforms.RandomAffine
    9. 依概率p转为灰度图:transforms.RandomGrayscale
    10. 将数据转换为PILImage:transforms.ToPILImage
    11. transforms.Lambda:Apply a user-defined lambda as a transform.
  4. 对transforms操作

    1. transforms.RandomChoice(transforms)从给定的一系列transforms中选一个进行操作
    2. transforms.RandomApply(transforms, p=0.5)给一个transform加上概率,依概率进行操作
    3. transforms.RandomOrder将transforms中的操作随机打乱

一、裁剪Crop

1.1 随机裁剪:transforms.RandomCrop

torchvision.transforms.RandomCrop(size,padding=None,pad_if_needed=False,fill=0,padding_mode='constant')
  • size(sequence 或int):所需输出大小
  • padding(int或sequence ,optional): 图像每个边框上的可选填充。默认值为None,即无填充。如果提供长度为4的序列,则它用于分别填充左,上,右,下边界。如果提供长度为2的序列,则分别用于填充左/右,上/下边界。
  • pad_if_needed(boolean) :如果小于所需大小,它将填充图像以避免引发异常。由于在填充之后完成裁剪,因此填充似乎是在随机偏移处完成的。
  • fill:恒定填充的像素填充值。默认值为0。如果长度为3的元组,则分别用于填充R,G,B通道。仅当padding_mode为常量时才使用此值。
  • padding_mode:填充类型。应该是:常量,边缘,反射或对称。默认值是常量。
    • 常量:具有常量值的焊盘,该值用填充指定
    • edge:填充图像边缘的最后一个值
    • 反射:具有图像反射的垫(不重复边缘上的最后一个值),填充[1,2,3,4]在反射模式下两侧有2个元素将导致[3,2,1,2,3,4,3,2]
    • 对称:具有图像反射的垫(重复边缘上的最后一个值),填充[1,2,3,4]在对称模式下两侧有2个元素将导致[2,1,1,2,3,4,4,3]

1.2 中心裁剪:transforms.CenterCrop

torchvision.transforms.CenterCrop(size)
  • 依据给定的size从中心裁剪 参数: size (sequence or int),若为sequence,则为(h,w),若为int,则(size,size)

1.3 随机长宽比裁剪:transforms.RandomResizedCrop

torchvision.transforms.RandomResizedCrop(size, scale=(0.08,1.0), ratio=(0.75,1.333333), interpolation=2)

将给定的PIL图像裁剪为随机大小和宽高比。将原始图像大小变成随机大小(默认值:是原始图像的0.08到1.0倍)和随机宽高比(默认值:3/4到4/3倍)。这种方法最终调整到适当的大小。这通常用于训练Inception网络

  • size:每条边的预期输出大小
  • scale:裁剪的原始尺寸的大小范围
  • ratio:裁剪的原始宽高比的宽高比范围
  • interpolation:默认值:PIL.Image.BILINEAR

1.4 上下左右中心裁剪:transforms.FiveCrop

torchvision.transforms.FiveCrop(size)

将给定的PIL图像裁剪为四个角和中央裁剪。此转换返回图像元组,并且数据集返回的输入和目标数量可能不匹配。

  • 对图片进行上下左右以及中心裁剪,获得5张图片,返回一个4D-tensor 参数: size(sequence or int),若为sequence,则为(h,w),若为int,则(size,size)

1.5 上下左右中心裁剪后翻转:transforms.TenCrop

torchvision.transforms.TenCrop(size, vertical_flip=False)

将给定的PIL图像裁剪为四个角,中央裁剪加上这些的翻转版本(默认使用水平翻转)。此转换返回图像元组,并且数据集返回的输入和目标数量可能不匹配。

  • size(sequence 或int) -作物的所需输出大小。如果size是int而不是像(h,w)这样的序列,则进行正方形裁剪(大小,大小)。
  • vertical_flip(bool) - 使用垂直翻转而不是水平翻转

二、翻转和旋转 Flip Rotation

2.1 依概率p水平翻转:transforms.RandomHorizontalFlip

torchvision.transforms.RandomHoriziontalFlip(p=0.5)

2.2 依概率p垂直翻转:transforms.RandomVerticalFlip

torchvision.transforms.RandomVerticalFlip(p=0.5)

2.3 随机旋转:transforms.RandomRotation

torchvision.transforms.RandomRotation(degrees, resample=False, expand=False, center=None)
  • degrees(sequence 或float或int):要选择的度数范围。如果degrees是一个数字而不是像(min,max)这样的序列,则度数范围将是(-degrees, +degrees)
  • resample({PIL.Image.NEAREST ,PIL.Image.BILINEAR ,PIL.Image.BICUBIC} ,可选): 可选的重采样过滤器。如果省略,或者图像具有模式“1”或“P”,则将其设置为PIL.Image.NEAREST
  • expand(bool,optional):可选的扩展标志。如果为True,则展开输出以使其足够大以容纳整个旋转图像。如果为False或省略,则使输出图像与输入图像的大小相同。请注意,展开标志假定围绕中心旋转而不进行平移。
  • center(2-tuple ,optional): 可选的旋转中心。原点是左上角。默认值是图像的中心。

三、图像变换

3.1 resize:transforms.Resize

torchvision.transforms.Resize(size, interpolation=2)

将输入PIL图像的大小调整为给定大小。

  • size(sequence 或int):所需的输出大小。如果size是类似(h,w)的序列,则输出大小将与此匹配。如果size是int,则图像的较小边缘将与此数字匹配。即,如果高度>宽度,则图像将重新缩放为(尺寸*高度/宽度,尺寸)
  • interpolation(int,optional):所需的插值。默认是 PIL.Image.BILINEAR

3.2 标准化:transforms.Normalize

torchvision.transforms.Normalize(mean, std)

平均值标准偏差归一化张量图像。给定mean:(M1,…,Mn)和std:(S1,…,Sn)对于n通道,此变换将标准化输入的每个通道,torch.*Tensor即 input[channel] = (input[channel] - mean[channel]) / std[channel]

  • mean(sequence):每个通道的均值序列。
  • std(sequence):每个通道的标准偏差序列。

3.3 转为tensor:transforms.ToTensor

torchvision.transforms.ToTensor

功能:将PIL Image或者 ndarray 转换为tensor,并且归一化至[0-1]

注意事项:归一化至[0-1]直接除以255,若自己的ndarray数据尺度有变化,则需要自行修改。

3.4 填充:transforms.Pad

torchvision.transforms.Pad(padding, fill=0, padding_mode='constant')

使用给定的pad值在所有面上填充给定的PIL图像

  • padding(int或tuple):每个边框上的填充。如果提供单个int,则用于填充所有边框。如果提供长度为2的元组,则分别为左/右和上/下的填充。如果提供长度为4的元组,则分别为左,上,右和下边框的填充。
  • fill(int或tuple):常量填充的像素填充值。默认值为0。如果长度为3的元组,则分别用于填充R,G,B通道。仅padding_mode为常量时才使用此值 。
  • padding_mode(str):填充类型。应该是:常量,边缘,反射或对称。默认值是常量。

3.5 修改亮度、对比度和饱和度:transforms.ColorJitter

torchvision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)

随机更改图像的亮度,对比度和饱和度。

3.6 转灰度图:transforms.Grayscale

torchvision.transforms.Grayscale(num_output_channels=1)

将图像转换为灰度。功能:将图片转换为灰度图

num_output_channels(int):当为1时,正常的灰度图。

3.7 线性变换:transforms.LinearTransformation()

torchvision.transforms.LinearTransformation(transformation_matrix)

3.8 仿射变换:transforms.RandomAffine

torchvision.transforms.RandomAffine(degrees,translate=None,scale=None,shear=None,resample=False,fillcolor=0)

图像保持中心不变的随机仿射变换。

3.9 依概率p转为灰度图:transforms.RandomGrayscale

torchvision.transforms.RandomGrayscale(p=0.1)

3.10 将数据转换为PILImage:transforms.ToPILImage

torchvision.transforms.ToPILImage(mode=None)

功能:将tensor 或者 ndarray的数据转换为 PIL Image 类型数据

mode 为None时,为1通道, mode=3通道默认转换为RGB,4通道默认转换为RGBA。

3.11 transforms.Lambda

torchvision.transforms.Lambda(lambd)

将用户定义的lambda应用为变换。

  • lambd(函数):用于转换的Lambda /函数。

四、对transforms操作,使数据增强更灵活

4.1 transforms.RandomChoice(transforms)

torchvision.transforms.RandomChoice(transforms)

从给定的一系列transforms中选一个进行操作,randomly picked from a list

4.2 transforms.RandomApply(transforms,p=0.5)

torchvision.transforms.RandomApply(transforms,p=0.5)

给一个transform加上概率,以一定的概率执行该操作

  • transforms(列表或元组):转换列表
  • p(浮点数):概率

4.3 transforms.RandomOrder

torchvision.transforms.RandomOrder(transforms)

将transforms中的操作顺序随机打乱。

Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/iint/notes.git
git@gitee.com:iint/notes.git
iint
notes
notes
master

搜索帮助