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

003:如何理解 CNN 中的 RGB 图像和通道?

本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。

合集完整版请参考这里。

在灰度图一节的最后,给出了一个由彩色图片转成灰度图的示例,并且通过 color_image.mode获取了图片的格式:彩色图片获取到的格式为 RGBA,灰度图为L。

这一节介绍一下 RGB 图片以及通道的概念。

通道

通道这个概念,在深度学习中很重要,并且极为重要。

举个例子:在很多时候,对AI神经网络中的一些算法做工程化实现,或者做性能优化,除了关注算法本身之外,还会关注数据存储格式。一般在 pytorch 中(一个AI模型框架),数据的存储格式 NCHW, C指代的就是通道(channel), 如此一来,对于需要在通道维度做归一化(如 reduce)的算法,是很不友好的。

因为数据在通道维度不连续,导致取到完整的通道维度信息要跨越很大的地址范围,CPU 或其他 xPU 对于这类的数据寻址性能都是很差的,至少要比连续寻址差。此时就需要对通道维度做其他的变换。

以上举了在实际中会遇到的一类问题:通道维度数据在存储器中摆放不连续导致某些算法运算性能不好,这里暂时了解即可,无需深究,涉及到的内容会在专栏后面有详述。

本节的目的只有一个:只需要了解通道这个概念是什么就行了。

先看下 RGB 图像
你可能知道,色彩通常由红色(Red,R)、绿色(Green, G)、蓝色(Blue, B)三种基本颜色组成,这种颜色表示方式被称为彩色 RGB 模型。

在这个模型中,每个像素的颜色由这三种基本颜色组合而成。因此,一个图像在二维平面上看似只有一个像素,实际是由三个不同颜色(不同通道)的像素混合组成。

这里的 R/G/B 三种颜色,就认为是彩色图片的三个通道,如下图所示。
在这里插入图片描述

(一张彩色RGB图片按照通道维度(C)堆叠)

来调一下颜色

通过调整红、绿、蓝三个通道的值,你可以混合出各种颜色。

和灰度图一样,在 RGB 模型中,每个通道的颜色也是用三个数值(0-255 范围内的整数)来表示,分别代表红、绿、蓝三个通道的强度。

你可以使用计算机的画图软件轻松的模拟调色的过程:例如,红色和绿色通道同时存在会产生黄色。
在这里插入图片描述

而红色和蓝色通道同时存在则会呈现洋红色。
在这里插入图片描述

如果3种颜色都有,则为白色。

在这里插入图片描述

RGB 分量

彩色图片有 RGB 三个通道,如果将三张分别为红色通道、绿色通道、蓝色通道的图片进行融合,那么就可以构成一幅色彩斑斓的图片。同样的,也可以通过一定的方法,将三个通道的分量图像分别提取出来进行展示。

下图左侧是一张彩色原图,后面是分别提取的每个通道的分量绘制而成的图片:将原图的绿色/红色/蓝色通道分量都提取出来了。
在这里插入图片描述

RGB 图像在计算机中的占用大小

日常情况下,你可能会认为,分辨率为 1920 x 1080 的图片,代表在图片的长、宽两个方向上有 1920 x 1080 个像素。

但是,在学习了本节的彩色 RGB 模型之后,你需要知道:一张彩色图像,除了长宽方向之外还存一个方向,那就是通道方向。

也就是说,彩色图像应该用三维数据来表示,而不是二维。

举个例子,一张 3 通道的 RGB 图像,长和宽分别为 1920 x 1280 个像素,需要表示该图像的形状为 1920 x 1280 x 3(或者用 [1920, 1280, 3] 的方式来表示)。当然也可以表示为 3 x 1920 x 1280([3, 1920, 1280]) 来表示,这两种表示方法取决你把通道数放在长和宽的前面还是后面。

一张 1920 * 1280 的 RGB 图片, 在计算机存储时所需要的数据大小为:

1920 x 1280 x 3 x 1 Bytes = 7MB,也就是大约 7M 的数据量。

在实际存储时,受到图片压缩算法的影响,在计算机磁盘中看到的图片大小可能会小于这个数值,但是不影响通过这种方法来估算图片在计算机中的内存占用。

通道的意义

在后面深度学习章节中,我会经常提到通道的概念。

基于计算机视觉的AI神经网络在进行模型推理时,无论是卷积算法还是其他算法,计算的绝大部分是图像特征图中通道的关系。

特征图是一种神经网络中间层输出的图,其通道数有多有少,多则几千,少则几十。在特征图中,一个通道中的数据就可以粗略的认为代表了原始图像中的一个特征。

假设某一层特征图只有两个通道,那么将这两个通道的特征可视化之后,可能呈现出来的分别是“轮廓”特征,或者“嘴巴”的特征。

回到RGB的图像,因为 RGB 图像有 3 个通道,如果把彩色图片当做特征图的话,那就可以说 RGB 图片有 3 个特征通道。

每个通道或多或少的保留着原始图像的某些细节和轮廓特征,就像上面的三张分量图片一样,当然最主要的特征便是颜色:比如 R 通道,有着 B 通道没有的红色特征。


http://www.mrgr.cn/news/81779.html

相关文章:

  • LeetCode-整数反转(007)
  • CSS---实现盒元素div内input/textarea的focus状态时给父元素加属性!
  • ShardingSphere(分库分表)
  • 企业架构学习笔记-数字化转型
  • 力扣56. 合并区间
  • 【Pandas】pandas Series empty
  • SpringBoot(Ⅱ)——@SpringBootApplication注解+自动装配原理+约定大于配置
  • win系统B站播放8k视频启用HEVC编码
  • 【蓝桥杯——物联网设计与开发】拓展模块5 - 光敏/热释电模块
  • Wend看源码-Java-集合学习(List)
  • unity学习1:第1个template的项目platformer 学习
  • 离散数学 群(半群,群,交换群,循环群,对称群,置换群,置换,交代群,轮换)详细,复习笔记
  • khadas edge2安装ubuntu22.04与ubuntu20.04 docker镜像
  • 各种网站(学习资源、常用工具及其他,持续更新中~)
  • 【高阶数据结构】红黑树封装map、set
  • 微服务——部署与运维
  • 1.微服务灰度发布落地实践(方案设计)
  • Fast adaptively balanced min-cut clustering
  • 指针详解之 难点、易错点一次性彻底击碎!
  • 【Java数据结构】LinkedList与链表
  • [OpenGL]使用 Compute Shader 实现矩阵点乘
  • 路由器刷机TP-Link tp-link-WDR5660 路由器升级宽带速度
  • SQL进阶技巧:如何分析双重职务问题?
  • C语言期末复习题(PTA)
  • 基于深度学习(HyperLPR3框架)的中文车牌识别系统-前言
  • 蓝桥杯——冒险者公会