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()
相关推荐
之墨_43 分钟前
【大语言模型】—— 自注意力机制及其变体(交叉注意力、因果注意力、多头注意力)的代码实现
人工智能·语言模型·自然语言处理
查士丁尼·绵1 小时前
笔试-羊狼过河
python
摸鱼的老谭1 小时前
构建Agent该选Python还是Java ?
java·python·agent
2301_821919921 小时前
深度学习(四)
pytorch·深度学习
从孑开始1 小时前
ManySpeech.MoonshineAsr 使用指南
人工智能·ai·c#·.net·私有化部署·语音识别·onnx·asr·moonshine
涛涛讲AI1 小时前
一段音频多段字幕,让音频能够流畅自然对应字幕 AI生成视频,扣子生成剪映视频草稿
人工智能·音视频·语音识别
鄃鳕2 小时前
python 字典 列表 类比c++【python】
c++·python
可触的未来,发芽的智生2 小时前
新奇特:黑猫警长的纳米世界,忆阻器与神经网络的智慧
javascript·人工智能·python·神经网络·架构
程序员三藏2 小时前
Jmeter接口测试与压力测试
自动化测试·软件测试·python·测试工具·jmeter·接口测试·压力测试
WWZZ20252 小时前
快速上手大模型:机器学习2(一元线性回归、代价函数、梯度下降法)
人工智能·算法·机器学习·计算机视觉·机器人·大模型·slam