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

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.

相关推荐
热点推荐
3度染毒入狱!韩瑞希现踪巴黎「最新近照曝光」网惊:变成熟了

3度染毒入狱!韩瑞希现踪巴黎「最新近照曝光」网惊:变成熟了

ETtoday星光云
2026-07-31 13:35:03
央视怒批:戏子误国!这三位明星恶贯满盈,真没一个人值得同情!

央视怒批:戏子误国!这三位明星恶贯满盈,真没一个人值得同情!

徐慍解说
2026-07-30 17:49:42
广州男篮一日官宣5人离队:赛季报销郭艾伦领衔 前国手李祥波在列

广州男篮一日官宣5人离队:赛季报销郭艾伦领衔 前国手李祥波在列

醉卧浮生
2026-07-31 16:55:36
保底能进总决赛!广东最适合的小外援曝光,奎因为他让位?

保底能进总决赛!广东最适合的小外援曝光,奎因为他让位?

绯雨儿
2026-07-31 10:52:08
逐客令已发,新西兰高官全面反华,中国使馆已读速回,这回不惯着

逐客令已发,新西兰高官全面反华,中国使馆已读速回,这回不惯着

古史青云啊
2026-07-31 19:13:15
今天才知道,张柏芝同意陈冠希拍照,竟是这3个现实又露骨的原因

今天才知道,张柏芝同意陈冠希拍照,竟是这3个现实又露骨的原因

秋姐居
2026-07-30 19:30:12
一位17年的高中班主任,提醒家长:一定要让孩子远离"伥鬼"朋友…

一位17年的高中班主任,提醒家长:一定要让孩子远离"伥鬼"朋友…

育儿教育日记
2026-07-24 07:29:06
老詹彻底掌控费城!夸梅:76人上下全是富保罗的人,年轻人完了

老詹彻底掌控费城!夸梅:76人上下全是富保罗的人,年轻人完了

胡一舸南游y
2026-07-30 19:18:28
“我儿子没事,就是精力旺盛!”男婴角弓反张严重,亲妈却视若无睹!

“我儿子没事,就是精力旺盛!”男婴角弓反张严重,亲妈却视若无睹!

林林先生
2026-07-30 11:30:16
1965年形势转变,周总理提醒薛明:中央决定将贺龙的元帅军衔撤下

1965年形势转变,周总理提醒薛明:中央决定将贺龙的元帅军衔撤下

墨策讲历史
2026-07-30 23:44:37
美参议员班克斯:前科技大亨移居上海,掷2.78亿美元为中共搭建反美抗议网络

美参议员班克斯:前科技大亨移居上海,掷2.78亿美元为中共搭建反美抗议网络

野生运营
2026-07-31 00:05:44
绝妙头球吊射!古斯塔沃主场2场3球,碾压大连中卫,钟义浩助攻

绝妙头球吊射!古斯塔沃主场2场3球,碾压大连中卫,钟义浩助攻

奥拜尔
2026-07-31 20:11:07
“只顾自己纹眉,不管女儿死活?”14岁女孩生日照,脸上全是槽点

“只顾自己纹眉,不管女儿死活?”14岁女孩生日照,脸上全是槽点

泽泽先生
2026-04-18 22:17:16
7月31号收评:三大指数全天冲高回落集体收涨,大盘下周将何去何从?

7月31号收评:三大指数全天冲高回落集体收涨,大盘下周将何去何从?

春江财富
2026-07-31 15:12:58
冯提莫自曝身高不高的原因:小时候爷爷奶奶照料,常吃稀饭配腌菜

冯提莫自曝身高不高的原因:小时候爷爷奶奶照料,常吃稀饭配腌菜

韩小娱
2026-07-30 10:22:40
最低调普京女婿被亿万富豪当街暴打:拒绝10亿赔偿,只提一个要求

最低调普京女婿被亿万富豪当街暴打:拒绝10亿赔偿,只提一个要求

刀刃故事
2024-11-11 10:40:21
局势失控,外资纷纷撤离,正副总统同台断交,印尼政坛迎来大清洗

局势失控,外资纷纷撤离,正副总统同台断交,印尼政坛迎来大清洗

凡知
2026-07-30 23:12:05
吴琼现状:退休定居北京,头发全白照顾大11岁婆婆,坚持登台唱戏

吴琼现状:退休定居北京,头发全白照顾大11岁婆婆,坚持登台唱戏

一盅情怀
2026-07-30 18:33:51
CBA3消息:“功勋魔王”投奔广东!李添荣“炮轰”球迷,石奎定了

CBA3消息:“功勋魔王”投奔广东!李添荣“炮轰”球迷,石奎定了

娱说瑜悦
2026-07-30 16:39:37
认证机构被集体“敲警钟”:市场监管总局约谈8机构要求抓紧整改

认证机构被集体“敲警钟”:市场监管总局约谈8机构要求抓紧整改

新京报
2026-07-30 18:00:17
2026-07-31 22:40:49
Ai学习的老章 incentive-icons
Ai学习的老章
Ai学习的老章
3490文章数 11187关注度
往期回顾 全部

科技要闻

DeepSeek-V4-Flash正式版API上线公测

头条要闻

教师在校内游泳馆溺亡 家属:长达3分40秒救生员未察觉

头条要闻

教师在校内游泳馆溺亡 家属:长达3分40秒救生员未察觉

体育要闻

欧足联掀桌!因凡蒂诺这次真玩大了?

娱乐要闻

百花奖影帝影后即将决出

财经要闻

华强北显卡涨价潮 有显卡一周暴涨4000元

汽车要闻

听劝!换回机械门把手,这才是碳基生物该开的车!

态度原创

教育
家居
时尚
亲子
军事航空

教育要闻

L3秋|成为多元包容、拥有勇气、不盲从大众的孩子

家居要闻

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

舞剧剧女的乐趣,终究是为世人知了

亲子要闻

小朋友和孕妇都可以喝的铁剂

军事要闻

特朗普称哈马斯将全面解除武装

无障碍浏览 进入关怀版