CNN 如何学习颜色?

数据挖掘 美国有线电视新闻网 图像分类
2022-03-02 14:30:52

我已经创建了不同类别的低赫兹信号的频谱图。它们都有一个纯蓝色的前景,几乎没有其他彩色像素,即使对我来说,通过人类的视觉来区分这些类别也不容易。现在我想训练一个 CNN 对这些频谱图图像进行二进制分类。无论我如何构建网络,无论配置和参数如何——它不会学习,损失不会减少。

我找到了原因:CNN 的卷积过滤器擅长区分形式和形状,但不是真正的纯色。

CNN 如何学习颜色?我错过了什么吗?也许有比 CNN 更合适的模型?

这是两个几乎没有区别的类别的示例,仅在色调上:

第一类 类2

还有2张图片:

在此处输入图像描述 在此处输入图像描述

EDIT1:这两个类的图像并非都具有相同的流行颜色;有些有黄色/绿色条纹,有些有较浅或较深的颜色等。因此这些类不仅包含特征颜色。我的目标是使用 CNN 对这些图像进行分类,但不知何故,CNN 无法从几乎只包含颜色的图像中学习,而如果图像中有锐利的边缘、边界、类似物体的元素,CNN 就会很好地学习。

1个回答

CNN 可以学习颜色,有些 CNN只是为了检查汽车的颜色而开发的。但是当颜色比形状更相关的特征时,在处理分类时有一些值得分析的点。

1 - 色彩空间

数字彩色图像通常表示为像素 2D 网格,其中每个像素是具有 3 或 4 个元素的矢量(后一种情况定义不透明度)。通常,我们使用 RGB 颜色空间处理图像,因为这是我们的视网膜用来为细胞着色的表示。

但是有多种颜色空间可用于表示图像,主要是 3 维的 RGB,但每个颜色空间都有不同的方法,它们之间的转换并不总是线性的。使用 HSV 和 HSL 检查哪个最适合您的问题。(前面提到的论文,还有其他例子)。

2 - 架构:

有一堆 CNN 架构,是根据不同的直觉和目标开发的。例如,U-Net 的开发考虑了图像分割,通过将浅路径与深层路径保持一致来减少信息丢失。

大多数架构在创建时都考虑到了形状,试图捕捉图像中的局部细微差别,并且通常使用小内核,例如 3x3、5x5 等。

将颜色作为主要特征处理,这些局部差异可能不是您希望内核学习提取的最相关的特征,更多的全局补丁(即更大的内核)可能会更好。

专门针对您的问题:

这些图可以看起来像表面,并且在垂直轴和水平轴之间有一些已知的关系,也许非对称内核可能更具功能性,并且还避免了使用太大内核时的速度损失。

我会使用交替大小调整图层。例如 30x3 然后 3x30 内核,没有填充。