Pytorch transforms 的研究

绝对路径与相对路径差别

transforms的使用
from torchvision import transforms
from PIL import Imageimg_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 SummaryWriterimg_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()

代码分析
三维均值与标准差
-
彩色图像结构:
大多数彩色图像使用RGB(红、绿、蓝)颜色模型。每个像素由这三个颜色通道的值组成。 -
通道独立处理:
在图像处理和深度学习中,通常会对每个颜色通道独立进行标准化。这意味着每个通道都有自己的均值和标准差。 -
三维均值和标准差:
- 均值:[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 SummaryWriterimg_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()
相关文章:
Pytorch transforms 的研究
绝对路径与相对路径差别 transforms的使用 from torchvision import transforms from PIL import Imageimg_path "dataset/train/bees/16838648_415acd9e3f.jpg" img Image.open(img_path) tensor_trans transforms.ToTensor() tensor_img tensor_trans(img) prin…...
一个C++模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等
一窥模板的替换和匹配方式:偏特化的参数比泛化版本的还要多:判断是不是std::pair<,>。_stdpair模板参数太多-CSDN博客 简介 在一个项目里,调用了第三封的库,这个库里面有个类用的很多,而且其构…...
《昇思 25 天学习打卡营第 20 天 | Pix2Pix实现图像转换 》
《昇思 25 天学习打卡营第 20 天 | Pix2Pix实现图像转换 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 Pix2Pix模型概述 Pix2Pix是一种基于条件生成对抗网络(cGAN)的图像转换模型&#x…...
关于c#的简单应用三题
#region 输入一个正整数,求1~这个数的阶乘 public static void Factorial(int a) { int result 1; for (int i 1; i < a; i) { result result * i; } Console.WriteLine(result); } #endregion #region 一个游戏&#…...
(十三)Spring教程——依赖注入之工厂方法注入
1.工厂方法注入 工厂方法是在应用中被经常使用的设计模式,它也是控制反转和单例设计思想的主要实现方法。由于Spring IoC容器以框架的方式提供工厂方法的功能,并以透明的方式开放给开发者,所以很少需要手工编写基于工厂方法的类。正是因为工厂…...
Redission中的Lua脚本写法、理解
对于Redission看门狗机制中的为了保证原子性的Lua脚本的写法规则是什么样的呢 ? 对于源码中的Lua脚本又是什么意思? 我们一起来看一下 首先,我们先基本的熟悉一下lua脚本的逻辑 在Lua脚本中,if (…) then … end 语句的执行过程…...
视频共享融合赋能平台LntonCVS视频监控管理平台视频云解决方案
LntonCVS是基于国家标准GB28181协议开发的视频监控与云服务平台,支持多设备同时接入。该平台能够处理和分发多种视频流格式,包括RTSP、RTMP、FLV、HLS和WebRTC。主要功能包括视频直播监控、云端录像与存储、检索回放、智能告警、语音对讲和平台级联&…...
GraphRAG + GPT-4o mini 低成本构建 AI 图谱知识库
更好的效果,更低的价格,听起来是不是像梦呓? 限制 首先,让我们来介绍一个词:RAG。 简单来说,RAG(Retrieval-Augmented Generation,检索增强生成) 的工作原理是将大型文档…...
全国区块链职业技能大赛第十套区块链产品需求分析与方案设计
任务1-1:区块链产品需求分析与方案设计 养老保险平台中涉及到参保人、社保局、公安局、工作单位等参与方,他们需要在区块链养老保险平台中完成账户注册、身份上链、社保代缴、信息核查等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于养老保险…...
分布式Apollo配置中心搭建实战
文章目录 环境要求第一步、软件下载第二步、创建数据库参考文档 最近新项目启动,采用Apollo作为分布式的配置中心,在本地搭建huanj 实现原理图如下所示。 环境要求 Java版本要求:JDK1.8 MySql版本要求:5.6.5 Apollo版本要求&…...
Android monkey命令和monkey脚本详解
Monkey命令 monkey 是 Android 平台上一个非常有用的工具,它可以帮助开发者在设备上生成随机的用户事件流,如按键输入、触摸屏手势等,以此来测试应用的稳定性。这对于发现应用中的崩溃、异常和性能问题特别有用。 基本语法 adb shell monk…...
vue 实现对图片的某个区域点选, 并在该区域上方显示该部分内容
目录 1、通义灵码实现: 2、csdn的C知道: 3、百度comate: 1、通义灵码实现: 在 Vue 中实现对图片某个区域的点选并显示该区域属于哪一部分,通常涉及到几个关键步骤: 图片区域划分: 首先&#…...
配置文件格式 INI 快速上手
文章目录 1.简介2.语法节键值对注释大小写空白行数据类型字符串 (String)整数 (Integer)浮点数 (Float)布尔值 (Boolean)列表 (List) 3.示例4.解析参考文献 1.简介 INI 的全称是 Initialization,即为初始化文件,最早是 Windows 系统配置文件所采用的格式…...
基于WebGoat平台的SQL注入攻击
目录 引言 一、安装好JAVA 二、下载并运行WebGoat 三、注册并登录WebGoat 四、模拟攻击 1. 第九题 2. 第十题 3. 第十一题 4. 第十二题 5. 第十三题 五、思考体会 1. 举例说明SQL 注入攻击发生的原因。 2. 从信息的CIA 三要素(机密性、完整性、可用性&…...
SpringMvc有几个上下文
你好,我是柳岸花明。 SpringMVC作为Spring框架的重要组成部分,其启动流程和父子容器机制是理解整个框架运行机制的关键。本文将通过一系列详细的流程图,深入剖析SpringMVC的启动原理与父子容器的源码结构。 SpringMVC 父子容器 父容器的创建 …...
k8s部署rabbitmq集群
1 部署集群 1.1 安装 # 创建一个中间件的命名空间 kubectl create namespace middleware # 创建ConfigMap,包含RabbitMQ的配置文件内容 kubectl apply -f rabbitmq-configmap.yaml # 配置用于存储RabbitMQ数据的PersistentVolume(PV)和PersistentVolum…...
Python利用包pypinyin汉字转拼音(处理多音字)
一、汉字转拼音 在python中将汉字的拼音输出可以采用pypinyin包,一下是简单的demo示例: 默认调用pinyin方法转换时时默认时带声调的,不带声调需要添加“styleStyle.NORMAL”参数。 from pypinyin import pinyin, Styledef pinyin_transfer…...
推荐系统三十六式学习笔记:工程篇.常见架构24|典型的信息流架构是什么样的
目录 整体框架数据模型1.内容即Activity2.关系即连接 动态发布信息流排序数据管道总结 从今天起,我们不再单独介绍推荐算法的原理,而是开始进入一个新的模块-工程篇。 在工程实践的部分中,我首先介绍的内容是当今最热门的信息流架构。 信息…...
解决QEMU无法从非0x80000000处开始执行
解决QEMU无法从非0x80000000处开始执行 1 背景介绍2 问题描述3 原因分析4 解决办法5 踩坑回忆5.1 坑1 - 怀疑设备树有问题5.2 坑2 - 怀疑QEMU中内存未写入成功5.3 QEMU地址空间分析过程 1 背景介绍 在使用NEMU与QEMU做DiffTest的场景下,运行的固件为《RISC-V体系结…...
AI在候选人评估中的作用:精准筛选与HR决策的助力
一、引言 随着科技的迅猛发展,人工智能(AI)技术已逐渐渗透到各个行业和领域,人力资源管理(HRM)亦不例外。在候选人评估的环节中,AI技术以其高效、精准的特性,正在逐步改变着传统的招…...
AI 自动获客系统正在重构企业线索获取方式
在数字化营销持续深化的当下,企业获客成本逐年攀升,传统 “广撒网” 的线索获取模式早已难以为继。销售团队大量时间耗费在无效线索筛选上,真正用于精准跟进、成交的时间不足两成,人力与投入的失衡让企业陷入增长内耗。而 AI 自动…...
嵌入式开发板选型:需求、预算与扩展性平衡
嵌入式开发板选型策略:平衡需求、预算与扩展性1. 项目概述1.1 嵌入式开发面临的挑战现代嵌入式系统开发面临三大核心矛盾:有限预算与功能需求的矛盾、当前项目需求与未来技术升级的矛盾、性能要求与功耗限制的矛盾。特别是在AIoT和边缘计算领域ÿ…...
ncmdumpGUI:突破网易云音乐NCM格式限制的高效解决方案
ncmdumpGUI:突破网易云音乐NCM格式限制的高效解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI ncmdumpGUI是一款开源的音频格式转换工具&am…...
实战指南:用快马为django项目生成定制化vmware开发环境,开箱即用
实战指南:用快马为Django项目生成定制化VMware开发环境,开箱即用 在实际开发场景中,虚拟机环境需要与具体项目需求紧密结合。最近我在做一个Django项目时,发现每次换电脑或重装系统都要重新配置开发环境,特别浪费时间…...
重构直播互动体验:BLiveChat的跨平台弹幕解决方案
重构直播互动体验:BLiveChat的跨平台弹幕解决方案 【免费下载链接】blivechat 用于OBS的仿YouTube风格的bilibili直播评论栏 项目地址: https://gitcode.com/gh_mirrors/bl/blivechat BLiveChat作为一款开源的B站直播弹幕工具,通过仿YouTube风格的…...
别再混淆了!FFmpeg提取AAC/H264流时常见的3个容器格式误区
别再混淆了!FFmpeg提取AAC/H264流时常见的3个容器格式误区 第一次用FFmpeg提取音频时,我把.m4a文件直接重命名为.aac,结果播放器报错——这个看似简单的操作背后,隐藏着容器格式与编码格式的深层差异。本文将用真实踩坑案例&#…...
Teensy41嵌入式FTP服务器库:轻量协议栈与多网络适配
1. 项目概述FTP_Server_Teensy41 是一款专为 Teensy 4.x 系列微控制器(特别是 Teensy 4.0 和 Teensy 4.1)深度定制的嵌入式 FTP 服务器库。它并非从零构建,而是基于 Jean-Michel Gallego 开发的成熟开源项目 Arduino-Ftp-Server 进行了系统性…...
避坑指南:Virtio-PCI设备初始化失败的6个常见原因及解决方案
Virtio-PCI设备初始化故障深度排查手册 虚拟化技术在现代数据中心的应用已无处不在,而Virtio作为半虚拟化的事实标准协议,其PCI设备初始化过程却常常成为运维人员的"暗礁区"。上周处理某金融云平台故障时,我发现一个反复出现的现象…...
C语言回调函数在TCP客户端中的实现与应用
C语言回调函数在TCP客户端中的实现与应用1. 回调函数基础概念回调函数是一种通过函数指针实现的编程机制,允许将一个函数作为参数传递给另一个函数。在C语言中,回调函数的实现完全依赖于函数指针,这与C、Python等现代语言中可能使用仿函数或匿…...
5个必知技巧:让你的PT下载效率提升300%的浏览器插件指南
5个必知技巧:让你的PT下载效率提升300%的浏览器插件指南 【免费下载链接】PT-Plugin-Plus PT 助手 Plus,为 Microsoft Edge、Google Chrome、Firefox 浏览器插件(Web Extensions),主要用于辅助下载 PT 站的种子。 项…...
