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

RGB图像,排列方式NHWC适合CPU计算,NCHW适合GPU计算

之前写过笔记OpenCV读取图像时按照BGR的顺序HWC排列,PyTorch按照RGB的顺序CHW排列,HWC格式排列,那么内存位置计算公式是?

在比较NHWC(channels_last)和NCHW(channels_first)这两种图像数据通道格式的效率时,需要考虑具体的硬件环境和应用场景。

NCHW

plane的格式,即rrrrggggbbbb。

[
[[R R R R] [R R R R] [R R R R]],
[[G G G G] [G G G G] [G G G G]],
[[B B B B] [B B B B] [B B B B]], ]

在GPU环境中,NCHW格式通常更有效率。这是因为GPU倾向于利用并行性进行计算,而NCHW格式允许在计算卷积操作时并行处理不同通道的特征图。例如,在使用NVIDIA的cudnn库时,NCHW是原生支持的数据模式,并且在GPU中使用NCHW格式计算卷积通常比NHWC格式快。这是因为NCHW排列方式使得每个通道内的像素紧挨在一起,从而可以更有效地利用GPU的并行计算能力。

NHWC

[
[[B G R] [B G R] [B G R][B G R],
[[B G R] [B G R] [B G R][B G R],
[[B G R] [B G R] [B G R][B G R], ]

然而,在CPU环境中,NHWC格式可能更有效率。CPU指令集(如SSE或AVX)更适合沿着数据的最后一维(即C维,代表通道)进行计算。NHWC排列方式使得不同通道中的同一位置元素顺序存储,这更符合CPU的访存模式。此外,NHWC的访存局部性更好,因为每读取三个像素(对于RGB图像)就能获得一个完整的彩色像素值,从而可以立即对该像素进行计算。这更适合多核CPU运算,因为CPU的内存带宽相对较小,每个像素计算的时延较低。

因此,NHWC和NCHW哪种格式效率更高取决于具体的硬件环境和应用场景。在训练深度学习模型时,如果使用的是GPU加速,那么NCHW格式通常更合适。而在CPU中进行推理时,NHWC格式可能更有效率。此外,不同的深度学习框架对这两种格式的支持程度也可能不同。例如,TensorFlow默认使用NHWC格式,但也支持NCHW格式;而PyTorch则更倾向于使用NCHW格式。

在选择数据格式时,需要根据具体的硬件环境、应用场景以及深度学习框架的支持情况来综合考虑。

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

相关文章:

  • 布朗运动
  • WPF+MVVM案例实战(二十二)- 制作一个侧边弹窗栏(CD类)
  • 集成旺店通旗舰版售后单至MySQL数据库
  • 【Linux】从零开始使用多路转接IO --- epoll
  • 爬虫学习4
  • CTF之web题集详情随手笔记
  • TDengine 集群能力:超越 InfluxDB 的水平扩展与开源优势
  • MATCH_DIRECT_BOOT_AWARE和MATCH_DIRECT_BOOT_UNAWARE
  • LabVIEW离心泵性能优化测试系统
  • token和jwt区别
  • 新闻稿件管理:SpringBoot框架实战指南
  • AI运动小程序开发常见问题集锦二
  • nginx安装
  • 【Linux驱动开发】内核定时器的配置和使用
  • Kubernetes架构及核心组件
  • Fastflow工作流系统源码
  • 小林渗透入门:burpsuite+proxifier抓取小程序流量
  • AiPPT - 全智能 AI 一键生成 PPT
  • React 前端使用 Input 输入框的样式上传一个 Excel 文件并读取内容对象数组
  • 【测试工具】Fastbot 客户端稳定性测试
  • 软件测试学习笔记丨Vue常用指令-输入绑定(v-model)
  • C#、C和C++的主要区别
  • 我们来学mysql -- 连接(原理版)
  • PyQt5的安装与简介
  • 100种算法【Python版】第43篇——优化算法之模拟退火算法
  • 初识动态规划(由浅入深)
  • 关于大模型微调与训练的问题,大模型训练的难点在哪里?
  • 如何对数据库的表字段加密解密处理?
  • 六、Go语言快速入门之数组和切片
  • Java:数组的定义和使用(万字解析)