不同框架表示图像时维度顺序的区别:pytorch、keras&tf、opencv、numpy、PIL

在PyTorch、Keras、OpenCV、NumPy和PIL这几个框架中,它们在表示图像时的维度存储顺序有所不同。下面我将逐一解释每个框架中图像维度的存储顺序:

1,PyTorch:

PyTorch中图像的维度顺序通常遵循 [N, C, H, W] 的格式,也就是channel first格式,其中:

C 代表通道数(channels),例如RGB图像有3个通道。

N 代表批量大小(batch size),即一次处理的图像数量。

pytorch如果遇到channel last格式的输入,可以通过permute来调整维度顺序:

python 复制代码
import torch  

# 假设x是一个形状为(N, H, W, C)的tensor  
x = torch.randn(N, H, W, C)

# 使用permute方法将channel维度移动到第二个位置  
x_channel_first = x.permute(0, 3, 1, 2)  # 形状变为(N, C, H, W)

2,Keras&tf:

Keras通常与TensorFlow一起使用。在TensorFlow中,对于图像数据,默认的维度顺序是 [H, W, C]。但在构建模型时,Keras允许通过data_format参数来指定维度顺序,可以是'channels_last'(即[H, W, C])或'channels_first'(即[C, H, W])。

通过如下代码可以设置:

python 复制代码
from keras import backend as K  
  
K.set_image_data_format('channels_first')

3,OpenCV:

OpenCV读取图像时默认的维度顺序是 [H, W, C]。因此,在OpenCV中,图像的宽度和高度位于通道数之前。

4,NumPy:

NumPy本身并不直接处理图像数据,但它可以用于存储和操作多维数组。在NumPy数组中,维度的顺序完全取决于用户如何定义和填充数组。

5,PIL (Python Imaging Library, 也就是现在的Pillow):

PIL/Pillow在打开图像时,默认的维度顺序是 [W, H, C],即宽度、高度和通道数。这与其他一些框架的顺序有所不同。

在编程过程中如果多个库混合使用,例如用OpenCV/PIL打开图像,然后输入pytorch编写的模型,需要注意这方面。

相关推荐
一点媛艺2 小时前
Kotlin函数由易到难
开发语言·python·kotlin
qzhqbb2 小时前
基于统计方法的语言模型
人工智能·语言模型·easyui
冷眼看人间恩怨3 小时前
【话题讨论】AI大模型重塑软件开发:定义、应用、优势与挑战
人工智能·ai编程·软件开发
2401_883041083 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
_.Switch3 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
AI极客菌4 小时前
Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。
人工智能·计算机视觉·ai作画·stable diffusion·aigc·flux·人工智能作画
阿_旭4 小时前
一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理
人工智能·深度学习·计算机视觉·cross-attention·self-attention
王哈哈^_^4 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
测开小菜鸟4 小时前
使用python向钉钉群聊发送消息
java·python·钉钉