当前位置: 首页 > news >正文

PIL,OpenCV,Pytorch处理图像时的通道顺序(颜色,长宽深)

项目颜色通道顺序长宽通道顺序数据类型取值范围
PILRGBHWCndarray0-255 (byte)
OpenCVBGRHWCndarray0-255 (byte)
PyTorchRGB/BGR (取决于如何读取)(N)CHWtensor0-1 (float, 标准化后); 0-255 (int, 未标准化)

注意以下几点:

  1. 颜色通道顺序:PIL默认使用RGB顺序,而OpenCV使用BGR顺序。PyTorch不直接指定颜色通道顺序,它取决于你如何将图像数据加载到tensor中。如果你直接从PIL或OpenCV加载图像到PyTorch tensor,那么颜色通道顺序将保持不变(除非你进行了额外的转换)。

  2. 长宽通道顺序:PIL和OpenCV都使用HWC(高度、宽度、通道)顺序。PyTorch在处理图像数据时,通常期望的输入是CHW(通道、高度、宽度)顺序,特别是当使用卷积神经网络等模型时。但是,PyTorch的torchvision.transforms模块提供了ToTensor()等转换函数,可以自动将HWC顺序的PIL图像或NumPy数组转换为CHW顺序的tensor。此外,PyTorch还允许使用额外的维度N(批量大小)来扩展CHW到NCHW,这在处理批量图像时很常见。

  3. 数据类型:PIL和OpenCV都使用NumPy数组来存储图像数据,而PyTorch使用tensor。

  4. 取值范围:PIL和OpenCV中的图像数据通常以字节(byte)形式存储,取值范围为0-255。PyTorch中的tensor可以存储浮点数或整数,具体取决于你的设置。在大多数情况下,PyTorch期望输入图像的像素值被标准化到0-1的浮点数范围内,这是通过除以255来实现的。但是,如果你在处理分类任务等场景时,可能需要将图像数据保持为0-255的整数范围,并在模型中进行相应的调整。

  5. (N)HWC vs. (N)CHW:我在PyTorch的“长宽通道顺序”列中添加了(N)来表示可能存在的批量大小维度。在PyTorch中,处理单个图像时通常使用CHW顺序,但在处理批量图像时,则使用NCHW顺序。然而,需要注意的是,这种约定主要适用于CUDA操作和某些特定的PyTorch层/函数(如torch.nn.Conv2d)。在大多数情况下,当你使用torchvision.transforms将PIL图像或NumPy数组转换为tensor时,你得到的是一个CHW顺序的tensor(除非你使用了特定的转换函数来改变这个顺序)。然后,如果你需要将tensor输入到支持批量处理的模型中,你可能需要手动添加一个额外的维度(即批量大小N)来形成NCHW顺序的tensor。但是,这通常是由PyTorch的数据加载器(如torch.utils.data.DataLoader)自动完成的。

http://www.lryc.cn/news/390022.html

相关文章:

  • 经纬恒润亮相2024世界智能产业博览会
  • Python序列化和反序列化
  • Stream toArray 好过collect
  • qt/c++/mysql教务管理系统
  • Echarts公共方法
  • 鸿蒙学习(二)
  • 企业机构营销目前106短信群发还有用吗?此文告诉你该如何抉择!
  • DJYGUI AI低代码图形编程开发平台:开启嵌入式软件图形编程新纪元
  • 为什么不能在foreach中删除元素
  • python学习-tuple及str
  • Python深度理解系列之【排序算法——冒泡排序】
  • 边界框在目标检测中的作用与应用
  • linux 环境报错:Peer reports incompatible or unsupported protocol version
  • 深入解析:Java爬虫的本质是什么?
  • 【Matlab 六自由度机器人】机器人动力学之推导拉格朗日方程(附MATLAB机器人动力学拉格朗日方程推导代码)
  • 线下生鲜蔬果店做小程序有什么方法
  • 几种linux开机自启脚本的方法
  • Qt开发笔记:Qt3D三维开发笔记(一):Qt3D三维开发基础概念介绍
  • Firewalld 防火墙基础
  • 针对 Windows 10 的功能更新,版本 22H2 - 错误 0xc1900204
  • goframe框架规范限制(but it should be named with “Res“ suffix like “XxxRes“)
  • 格式化选NTFS还是exFAT 格式化NTFS后Mac不能用怎么办 移动硬盘格式化ntfs和exfat的区别
  • 中国桥梁空间分布数据
  • 14-15 为什么我们现在对阅读如此难以接受
  • 经典的卷积神经网络模型 - ResNet
  • 【Git 学习笔记】1.3 Git 的三个阶段
  • 华为DCN之:SDN和NFV
  • 黑马头条-数据管理平台
  • API Object设计模式
  • Python 爬虫:多进程,多线程爬虫<提高爬取效率>