网易首页 > 网易号 > 正文 申请入驻

PyTorch那些事儿(五):Transforms—图像处理与增强

0
分享至

正文共: 26893字 32图 预计阅读时间: 68分钟

计算机视觉任务中,对图像的变换(Image Transform)往往是必不可少的操作,例如在迁移学习中,需要对图像尺寸进行变换以使用预训练网络的输入层,又如对数据进行增强以丰富训练数据。

作为深度学习领域的主流框架,pytorch中提供了丰富的图像变换API。这些API实现了常用的图像数据增强操作,可以灵活组合使用。主要特点:

  • 丰富的数据增强操作,包括Crop、Flip、Color变换等

  • 支持PIL Image和Tensor

  • 可以链式组合使用

  • 提供了方便的功能函数接口

本文将对pytorch中torchvision.transforms提供的丰富多样的图像变换API进行整理介绍。为了方便理解记忆以及后续使用过程中查找,我把pytorch中提供的transform分为6大类:

  1. 几何变换:改变图像几何形状和结构的变换,如裁剪、旋转、缩放等。主要用于提升模型对角度、尺寸的鲁棒性。

  2. 色彩变换:改变图像颜色的变换,如调整亮度、对比度、饱和度等。主要用于增强模型对颜色变化的鲁棒性。

  3. 图像格式与数值转换:在PIL Image和Tensor间进行转换。对图像像素值进行正则化等操作。

  4. 图像增强组合:将多个变换组合使用,如RandomApply等。这是Transforms的精髓所在。

  5. 自动搜索学习数据增强策略:一些通过强化学习等方案学习而来的增强方法。

为方便下文展示各种图像变换API的效果,我们借助matplotlib定义一个名为show_image函数来展示图片,如下所示:

import torch
import numpy as np
from torchvision import transforms
from torchvision.io import read_image
import matplotlib as mpl
import matplotlib.pyplot as plt
def show_image(img_lst, **imshow_kwargs):
img_lst: 保存图像和标题的list,形如:[(image1, title1),(image2, title2)]。image可以使Pillow.Image对象,也可以是torch.Tensor。
imshow_kwargs: 需要传递给plt.imshow的参数
fig, axs =plt.subplots(1,len(img_lst), constrained_layout=True, figsize=(2*len(img_lst),2), squeeze=False)
for i, (img, title) in enumerate(img_lst):
if isinstance(img, torch.Tensor): # 如果是torch.Tensor类型,就必须转换成Pillow.Image类型,才能进行展示
img = transforms.ToPILImage()(img)
axs[0, i].imshow(np.asarray(img), **imshow_kwargs)
axs[0, i].set_title(title)
plt.show()
1 加载图片 1.1 PIL库

对于存储在磁盘中的图片文件,使用Pillow库提供的Image类对象进行打开是一种十分常用的方法,如果你还没有安装,你可以通过以下命令方便下文进行:

pip install Pillow
from PIL import Image

我们通过Pillow中提供的方法,打开一张图片,并通过show_image()方法进行展示,下文中各种图像变换,我们都将以此图片为例,进行演示:

raw_img = (Image.open('fruit.jpeg'), '原始图片')
show_image([raw_img])
1.2 pytorch中提供的图像加载方法

pytorch的torchvision.io模块本身也提供有加载图像数据的方法:read_image。该方法直接将图片加载为Tensor类型数据。

from torchvision.io import read_image
raw_img2 = read_image('fruit.jpeg')
raw_img2.shape
torch.Size([3, 448, 596])
type(raw_img2)
torch.Tensor

我们也通过之前定义的show_image()方法进行展示,注意,show_image()方法之所以能展示Tensor类型数据为图像,是因为show_image()方法内将Tensor转为PIL图像了。

show_image([(raw_img2, 'read_image()')])

好了,知道怎么打开与展示图像之后,我们就可以开始介绍本篇中的主角——pytorch中的那些transform们。

2 几何变换

几何变换是指对图像的大小、形状、角度等几何形态和结构进行调整,常用于数据增强,有助于提高模型的泛化能力。一般在图像分类/检测等任务中,会频繁使用这些几何变换,防止过拟合和提高鲁棒性。

需要注意,这些变换大多数会在内部调用PIL来处理图像,因此输入需要是PIL Image格式。几何变换主要分为以下几类:

1. 大小变换。生成不同分辨率和尺寸的图像,增强模型对大小变化的鲁棒性。

  • Resize调整图像大小。

2. 空间变换。可以增强模型对关键特征的学习,防止过拟合背景信息。

  • RandomCrop随机裁剪图像区域。

  • CenterCrop中心裁剪图像。

  • RandomResizedCrop随机裁剪并resize。

  • FiveCrop与TenCrop从图像的四个角以及中心进行多次裁切

3. 形变变换。可以模拟弹性物体运动时的形变,增强模型对形变的鲁棒性。

  • ElasticTransform给图像添加随机形变。

4. 仿射变换。可以从不同视角获取图像,增强模型对视角变化的鲁棒性。

  • RandomRotation随机旋转图像。

  • RandomAffine进行随机仿射变换。

  • RandomPerspective进行透视变换。

5. 翻转变换。增加图像方向的多样性,防止过拟合某一方向。

  • RandomHorizontalFlip随机水平翻转。

  • RandomVerticalFlip随机垂直翻转。

6. 填充变换。可以防止信息丢失,也可用于模型输入大小不匹配。

  • Pad在图像边缘填充特定像素,扩大图像。

2.1 Resize

按给定尺寸对图像进行缩放,Resize主要参数size可以为int型,此时,原始图像短边将缩放至size像素,长边将缩放至:size×长边÷短边����×长边÷短边 。以上述原始图片为例,假设输入size=300,原始图像短边高是448像素,长边宽是596像素,所以缩放后,长边宽为:300×596÷448=399像素300×596÷448=399像素;当size为序列时,size=(h, w),原始图像将高和宽分别缩放至h和w。除了size参数外,Resize还有其他参数,可以参考[官方文档

raw_img = read_image('data/fruit.jpeg')

transform1 = transforms.Resize(size=300)
transform2 = transforms.Resize(size=(300, 300))
transform3 = transforms.Resize(size=(800, 800))
tran_img1 = transform1(raw_img)
tran_img2 = transform2(raw_img)
tran_img3 = transform3(raw_img)
print(f'size=300,缩放后图像宽高为:{tran_img1.shape}')
print(f'size=(300, 300),缩放后图像宽高为:{tran_img2.shape}')
show_image([
(raw_img, '原始图像'),
(tran_img1, 'size=300'), # 对PIL.Image类型图片进行裁切
(tran_img2, 'size=(300, 300)'), # 对torch.Tensor类型图片进行裁切
(tran_img3, 'size=(800, 800)') # 对torch.Tensor类型图片进行裁切
])

size=300,缩放后图像宽高为:torch.Size([3, 300, 399])
size=(300, 300),缩放后图像宽高为:torch.Size([3, 300, 300])
2.2 RandomCrop

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
随着日本0-2、波兰0-1,U20女足世界杯八强全诞生:2大亚洲劲旅在列

随着日本0-2、波兰0-1,U20女足世界杯八强全诞生:2大亚洲劲旅在列

侧身凌空斩
2026-09-18 02:34:41
别再吹世界第一了!1302根柱子,正在悄悄掀翻中国基建的老套路

别再吹世界第一了!1302根柱子,正在悄悄掀翻中国基建的老套路

刘哥谈体育
2026-09-18 01:42:36
严格按评选标准,金球奖只能是梅西的!

严格按评选标准,金球奖只能是梅西的!

老夏聊球
2026-09-19 00:08:03
怒其不争!中国男篮输球的同时,日本替补席做出哭鼻子的嘲讽动作

怒其不争!中国男篮输球的同时,日本替补席做出哭鼻子的嘲讽动作

十点街球体育
2026-09-18 23:29:04
“中国人不来也没关系”?打脸了!

“中国人不来也没关系”?打脸了!

环球时报国际
2026-09-17 17:15:36
王鹤棣报案风波再失控!发声惹众怒,医院下场,这次谁也'救'不了他

王鹤棣报案风波再失控!发声惹众怒,医院下场,这次谁也'救'不了他

错过美好
2026-09-17 15:14:20
黄宗泽餐厅怒吼服务员视频疯传,反转来得太快

黄宗泽餐厅怒吼服务员视频疯传,反转来得太快

浅遇时光
2026-09-17 09:58:45
快退休的同事在与我交接工作时忽然翻脸:关系从来不是单方面的,反思自己的时候,也要看清局面

快退休的同事在与我交接工作时忽然翻脸:关系从来不是单方面的,反思自己的时候,也要看清局面

LULU生活家
2026-09-18 19:59:43
万亿宁德时代迎至暗时刻:深陷舆论风暴,市值蒸发7000亿,理想、小米等多家车企“去宁化”,风波中的赛力斯坚守

万亿宁德时代迎至暗时刻:深陷舆论风暴,市值蒸发7000亿,理想、小米等多家车企“去宁化”,风波中的赛力斯坚守

金融界
2026-09-18 20:48:18
统一台湾后需多少驻军?香港人口753万,驻军约6000人,澳门人口68万,驻军不足千人,台湾面积是香港的32倍,保守估计,台湾驻军需6-8万人

统一台湾后需多少驻军?香港人口753万,驻军约6000人,澳门人口68万,驻军不足千人,台湾面积是香港的32倍,保守估计,台湾驻军需6-8万人

扶苏聊历史
2026-09-10 15:51:48
特朗普做出“疯狂决定”,成功让全世界破防了!外媒:中国又赢了

特朗普做出“疯狂决定”,成功让全世界破防了!外媒:中国又赢了

关权教授聊经济
2026-09-18 15:31:10
如果中国不让步,就驱逐中方外交官!日本话音刚落,空军王炸登场

如果中国不让步,就驱逐中方外交官!日本话音刚落,空军王炸登场

安珈使者啊
2026-09-18 09:57:19
白举纲敦煌婚礼刷屏!娱乐圈最稀缺的爱情:低调守护,岁岁安稳

白举纲敦煌婚礼刷屏!娱乐圈最稀缺的爱情:低调守护,岁岁安稳

传递满满正能量
2026-09-18 06:24:43
原来他们已离婚!如今一个坚持丁克不再婚,一个儿女双全幸福升级

原来他们已离婚!如今一个坚持丁克不再婚,一个儿女双全幸福升级

林雁飞
2026-09-17 18:37:00
前脚获评“江苏好人”,后脚涉嫌严重违纪违法:“好人校长”姚恒章落马,撕开了什么?

前脚获评“江苏好人”,后脚涉嫌严重违纪违法:“好人校长”姚恒章落马,撕开了什么?

迷世书童
2026-09-18 22:03:12
敬一丹送灵结束,才发现40岁无儿无女的女儿,早被她安排好后路

敬一丹送灵结束,才发现40岁无儿无女的女儿,早被她安排好后路

九号探秘人
2026-09-17 20:26:37
方昊:进球献给老婆和即将出生的孩子,感谢吴总把我带到球队

方昊:进球献给老婆和即将出生的孩子,感谢吴总把我带到球队

懂球帝
2026-09-18 22:03:17
梅西夺冠后,金球奖官方道贺:史上最成功的球员!

梅西夺冠后,金球奖官方道贺:史上最成功的球员!

历史第一人梅西
2026-09-18 10:56:33
广西“替人养子”事件冲上热搜:一个出轨女,害惨三代人……

广西“替人养子”事件冲上热搜:一个出轨女,害惨三代人……

桌子的生活观
2026-09-18 12:45:59
1年倒闭九万家,五个月亏损200万?昔日的暴利生意正批量“失联”

1年倒闭九万家,五个月亏损200万?昔日的暴利生意正批量“失联”

老沮系戏精北鼻
2026-09-18 14:45:02
2026-09-19 00:20:49
Ai学习的老章 incentive-icons
Ai学习的老章
Ai学习的老章
3526文章数 11198关注度
往期回顾 全部

科技要闻

直击iPhone 18新机发售:黄牛加价不如前代

头条要闻

俄杜马选举拉夫罗夫"意外"登顶名单 梅德韦杰夫被拿下

头条要闻

俄杜马选举拉夫罗夫"意外"登顶名单 梅德韦杰夫被拿下

体育要闻

好吧,中国男篮辛苦了

娱乐要闻

陈思诚 佟丽娅不想让儿子知道两人离婚

财经要闻

研发0.25亿理财26亿,敷尔佳豪赌三类器械

汽车要闻

纯电/插混双动力+五座/六座双布局 海狮08应该怎么选?

态度原创

手机
本地
旅游
家居
亲子

手机要闻

iPhone 18 Pro市场需求强于预期 高售价未阻升级热潮

本地新闻

中秋逛白塔寺,体验国医妙荟雅集

旅游要闻

北京新增10处!国庆假期,一起到树底下放空如何?

家居要闻

2026建博会(广州) 公装联探展交流活动

亲子要闻

蓉城幸福家・成长助力站|新学期,怎样构建稳定的家庭养育氛围?

无障碍浏览 进入关怀版