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()
相关推荐
彷徨的蜗牛几秒前
定义 AI 驱动的研发新范式:HAFW从需求到部署的端到端智能工作流
人工智能·架构·系统架构
智算菩萨1 分钟前
与AI一起记忆:从分布式记忆到AI策划记忆与人机共忆——文献精读
论文阅读·人工智能·分布式·深度学习·ai·文献
njsgcs2 分钟前
那我不训练,有面邻接图和面类型怎么搞图结构+原型网络 图核 (Graph Kernels)
人工智能
瓦哥架构实战2 分钟前
CentOS 7 编译安装 Python 3.9 解决 SSL 模块缺失问题
开发语言·python
python猿3 分钟前
打卡Python王者归来--第29天
python
catchadmin5 分钟前
Laravel 13 正式发布 使用 Laravel AI 无缝平滑升级
人工智能·laravel
璞华Purvar5 分钟前
2026流程制造PLM系统解决方案:璞华易研PLM如何驱动化工、食品、日化行业数字化转型
人工智能
唐天下闻化5 分钟前
2026操作系统竞争格局深度解析:国产崛起与生态演进
人工智能
MicrosoftReactor5 分钟前
技术速递|面向无障碍的持续 AI:GitHub 如何将反馈转化为包容性
人工智能·github
OidEncoder10 分钟前
工业安全选型避坑|安全编码器与双编码器方案,各有适配场景(含参数指南)
网络·人工智能·安全