动手学深度学习(pytorch土堆)-03常见的Transforms

Compose

transforms.Compose 是 PyTorch 中的一个函数,用于将多个图像变换操作组合在一起,形成一个变换流水线。这样可以将一系列的图像处理操作整合为一个步骤,便于对图像进行批量预处理或增强。

基本用法

transforms.Compose 接受一个列表,列表中的每个元素是一个变换操作。这些操作会按照给定的顺序依次作用在输入的图像上。

c 复制代码
  Example:
        >>> transforms.Compose([
        >>>     transforms.CenterCrop(10),
        >>>     transforms.PILToTensor(),
        >>>     transforms.ConvertImageDtype(torch.float),
        >>> ])
c 复制代码
#compose
trans_resize1=transforms.Resize((512,512))
trans_compose=transforms.Compose([trans_resize1,tensor_trans])
img_resize_1=trans_compose(img)

ToTensor

将图片变为Tensor数据类型

normalize(归一化)

计算公式:output[channel] = (input[channel] - mean[channel](均值)) / std[channel](标准差)

c 复制代码
Normalize

print(tensor_img[0][0][0])
trans_norm=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
img_norm= trans_norm(tensor_img)
print(img_norm[0][0][0])
writer.add_image("Noramlize",img_norm)
writer.close()

归一化图片前后对比

Resize

transforms.Resize 是 PyTorch 中 torchvision.transforms 模块的一个变换操作,用于调整图像的大小。它可以将输入图像调整为指定的尺寸,通常用于图像预处理以确保所有输入图像具有相同的尺寸,这对深度学习模型的输入非常重要。

size: 目标尺寸,可以是单个整数或一个元组 (height, width)。

如果是单个整数:将按保持宽高比的方式调整图像,较短的一边将被调整为该值。

如果是元组 (height, width):将直接调整图像为指定的高度和宽度。

c 复制代码
#Resize
print(img.size)
trans_resize=transforms.Resize((512,512))
img_resize =trans_resize(img)
img_resize_tensor=tensor_trans(img_resize)
print(img_resize_tensor)
writer.add_image("img_resize",img_resize_tensor,0)
writer.close()

整体代码

c 复制代码
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from torchvision.transforms import ToTensor

img_path="hymenoptera_data/train/ants/0013035.jpg"
img=Image.open(img_path)
writer=SummaryWriter("logs")
tensor_trans=ToTensor()
tensor_img=tensor_trans(img)#将img图片转换成tensor数据类型的图片
# print(tensor_img)
writer.add_image("img",tensor_img,2)

#Normalize
print(tensor_img[0][0][0])
trans_norm=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
img_norm= trans_norm(tensor_img)
print(img_norm[0][0][0])
writer.add_image("Noramlize",img_norm,1)
#Resize
print(img.size)
trans_resize=transforms.Resize((512,512))
img_resize =trans_resize(img)
img_resize_tensor=tensor_trans(img_resize)
print(img_resize_tensor)
writer.add_image("img_resize",img_resize_tensor,0)
#compose
trans_resize1=transforms.Resize((512,512))
trans_compose=transforms.Compose([trans_resize1,tensor_trans])
img_resize_1=trans_compose(img)
writer.close()
相关推荐
橙子小哥的代码世界3 分钟前
【机器学习】【KMeans聚类分析实战】用户分群聚类详解——SSE、CH 指数、SC全解析,实战电信客户分群案例
人工智能·python·机器学习·kmeans·数据科学·聚类算法·肘部法
k layc7 分钟前
【论文解读】《Training Large Language Models to Reason in a Continuous Latent Space》
人工智能·python·机器学习·语言模型·自然语言处理·大模型推理
代码猪猪傻瓜coding16 分钟前
【模块】 ASFF 模块
人工智能·深度学习
阿正的梦工坊22 分钟前
Sliding Window Attention(滑动窗口注意力)解析: Pytorch实现并结合全局注意力(Global Attention )
人工智能·pytorch·python
rgb2gray1 小时前
GeoHD - 一种用于智慧城市热点探测的Python工具箱
人工智能·python·智慧城市
火车叼位1 小时前
5个Why、SWOT, 5W2H等方法论总结,让你的提示词更加精炼
人工智能
阿正的梦工坊1 小时前
PyTorch下三角矩阵生成函数torch.tril的深度解析
人工智能·pytorch·矩阵
说私域2 小时前
电商运营中私域流量的转化与变现:以开源AI智能名片2+1链动模式S2B2C商城小程序为例
人工智能·小程序·开源·流量运营
老A的AI实验室2 小时前
通俗理解Test time Scaling Law、RL Scaling Law和预训练Scaling Law
人工智能·深度学习·算法·chatgpt·llm·agi·rl
多云的夏天2 小时前
AI(14)-prompt
人工智能