Pytorch transforms 的研究

绝对路径与相对路径差别

transforms的使用

复制代码
from torchvision import transforms
from PIL import Image


img_path ="dataset/train/bees/16838648_415acd9e3f.jpg"
img = Image.open(img_path)
tensor_trans = transforms.ToTensor()
tensor_img =tensor_trans(img)
print(tensor_img)

python中 导包写法复习

复制代码
transforms.ToTensor() 的写法 transforms表示模块 ToTensor 表示函数 
复制代码
from torchvision import transforms
  • from: 指明我们要从某个包或模块中导入。
  • torchvision: 这是一个包(package),是 PyTorch 生态系统中专门用于计算机视觉任务的库。
  • import: 指明我们要导入什么。
  • transforms: 这是 torchvision 包中的一个模块,专门用于图像转换和数据增强

Transforms 的使用(二)

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


img_path ="dataset/train/bees/16838648_415acd9e3f.jpg"
img = Image.open(img_path)

writer = SummaryWriter("logs")

tensor_trans = transforms.ToTensor()
tensor_img =tensor_trans(img)
writer.add_image("Tensor_img",tensor_img)
writer.close()

常见的transform

__call__的作用:

Totensor的使用 :

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.close()

代码分析

三维均值与标准差

  1. 彩色图像结构:

    大多数彩色图像使用RGB(红、绿、蓝)颜色模型。每个像素由这三个颜色通道的值组成。

  2. 通道独立处理:

    在图像处理和深度学习中,通常会对每个颜色通道独立进行标准化。这意味着每个通道都有自己的均值和标准差。

  3. 三维均值和标准差:

    • 均值:[mean_R, mean_G, mean_B]
    • 标准差:[std_R, std_G, std_B]

    其中,mean_R 和 std_R 分别是红色通道的均值和标准差,以此类推。

标准化公式

def forward(self, tensor: Tensor) -> Tensor: return F.normalize(tensor, self.mean, self.std, self.inplace)

这里的 F.normalize 是 PyTorch 的函数式接口中的一个函数,它封装了标准化的具体实现。虽然我们在这个类的定义中没有看到具体的计算过程,但是这个标准化公式是 F.normalize 函数内部实现的核心逻辑。

PyTorch 的文档和源码中会详细说明 F.normalize 函数的具体实现。标准化公式 output[channel] = (input[channel] - mean[channel]) / std[channel] 是在 F.normalize 函数内部执行的。

Resize的使用

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

Compose 的使用 :

Compose 将两个函数功能结合

复制代码
trans_resize_2 = transforms.Resize(512)
trans_compose =  transforms.Compose([trans_resize_2,tensor_trans])
img_resize2 = trans_compose(img)
writer.add_image("Resize2",img_resize2,1)
writer.close()

RandomCrop裁剪:

复制代码
trans_Randomcrop = transforms.RandomCrop(256)
trans_compose2 = transforms.Compose([trans_Randomcrop,tensor_trans])
for i in range(10):
    img_crop = trans_compose2(img)
    writer.add_image("Randomcrop",img_crop,i)
writer.close()

完整代码

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


img_path ="dataset/train/bees/16838648_415acd9e3f.jpg"
img = Image.open(img_path)

writer = SummaryWriter("logs")

tensor_trans = transforms.ToTensor()
tensor_img =tensor_trans(img)
writer.add_image("Tensor_img",tensor_img)
#print(tensor_img)
#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("Normalize",img_norm)
writer.close()

##Resize
print(img.size)
trans_resize = transforms.Resize((512,512))
img_resize = trans_resize(img)
img_resize = tensor_trans(img_resize)
writer.add_image("Resize",img_resize,0)
print(img_resize)

#Compose
trans_resize_2 = transforms.Resize(64)
trans_compose =  transforms.Compose([trans_resize_2,tensor_trans])
img_resize2 = trans_compose(img)
writer.add_image("Resize2",img_resize2,1)
writer.close()
#RandomCrop
trans_Randomcrop = transforms.RandomCrop(256)
trans_compose2 = transforms.Compose([trans_Randomcrop,tensor_trans])
for i in range(10):
    img_crop = trans_compose2(img)
    writer.add_image("Randomcrop",img_crop,i)
writer.close()
相关推荐
weiwenhao14 小时前
关于 nature 编程语言
人工智能·后端·开源
神经星星14 小时前
训练成本29.4万美元,DeepSeek-R1登Nature封面,首个通过权威期刊同行评审的主流大模型获好评
人工智能
神州问学14 小时前
【AI洞察】别再只想着“让AI听你话”,人类也需要学习“适应AI”!
人工智能
DevUI团队14 小时前
🚀 MateChat V1.8.0 震撼发布!对话卡片可视化升级,对话体验全面进化~
前端·vue.js·人工智能
聚客AI14 小时前
🎉7.6倍训练加速与24倍吞吐提升:两项核心技术背后的大模型推理优化全景图
人工智能·llm·掘金·日新计划
黎燃14 小时前
当 YOLO 遇见编剧:用自然语言生成技术把“目标检测”写成“目标剧情”
人工智能
算家计算14 小时前
AI教母李飞飞团队发布最新空间智能模型!一张图生成无限3D世界,元宇宙越来越近了
人工智能·资讯
掘金一周14 小时前
Flutter Riverpod 3.0 发布,大规模重构下的全新状态管理框架 | 掘金一周 9.18
前端·人工智能·后端
CoovallyAIHub15 小时前
开源的消逝与新生:从 TensorFlow 的落幕到开源生态的蜕变
pytorch·深度学习·llm
用户51914958484515 小时前
C#记录类型与集合的深度解析:从默认实现到自定义比较器
人工智能·aigc