如何将神经网络与计算机配色系统结合?到目前,已有许多相关的尝试。从传统神经网络到经遗传算法优化的BP网络,从输入三刺激值到输入分光反射率来进行训练,从配色配方输出到光学模型的简化,神经网络在计算机配色中的应用也是千差万别。我把看的相关论文进行整理,希望能从这些论文中得到启发,找出 ANN 与 CCM 间的新结合点。
《Evaluation of a Novel Computer Color Matching System Based on the Improved Back-Propagation Neural Network Model》 2016年
这篇论文的主要内容是评估基于优化后的BP神经网络模型的计算机配色系统在牙齿美容行业的应用效果(与基于目视进行配色的方法对比)。论文中研究的 BPNN 模型的结构如下。输入是标准样的 Lab 值,输出是配色配方;隐藏层节点数设置为 12;学习率设置为 0.01;可接受的平方根差 MSE 设置为 0.0001. 这些值都是在多次试验下选取的最佳值:
该模型在传统的 BPNN 基础上,集成了 Genetic Algorithm(GA 遗传算法)和 Levenberg-Marquardt(LM 算法),克服了传统 BPNN 收敛速度慢、对初始选值敏感等缺陷。该模型在计算机配色中的流程图为:
这个 CCM 系统的性能测评结果显示,测试样本与得到的模拟样本之间的色差都低于 2.69(医学上可接受的色差阈值),接近 1.0(肉眼可察觉的色差阈值)。说明将 GA 和 LM 算法集成到 BPNN 模型明显改善了传统 BPNN 的准确度和普适性,“优化后的模型得到了几乎完美的配色效果”。
《Spectrophotometric colour matching algorithm for top-dyed melange yarn, based on an artificial neural network》 2015年
这篇论文提出了一种基于BP神经网络的分光光度色彩匹配算法及其处理方法。通过BP神经网络预测加权平均光谱,然后通过有约束的最小二乘法,将加权平均光谱作为目标,进行配方预测。结果表明,该方法能够准确预测顶染混色纱的色彩匹配。
混色纱的特殊着色特性使得传统的配色系统都无法发挥作用,因此选用了具有强大的非线性映射能力的 ANN 来模拟配色专家的配色过程。
混色纱的反射率与组成混色纱的染色纤维的反射率之间存在一定关系:
其中,Rs(λ) 为混色纱总反射率,Ri(λ) 为各组分的反射率,xi 为各组分所占的比例。另外,引入 Rw(λ),即加权平均光谱:
Rs(λ) ≠ Rw(λ),而此论文就是要找到二者之间的关系。即找到 f 函数使得:
研究人员目前已经找到了适用于混色纱配色的模型,包括 Stearns-Noechel 公式:
以及 Friele 公式:
但是这些公式的应用也有些限制,所以还在寻找更好的公式。在 Stearns-Noechel 公式和 Friele 公式中,f 是具有加性质的函数(additive function),m、s 是维度无关的常数。
因而这篇论文通过 BP 神经网络来根据混色纱样本光谱来预测加权平均光谱,即找到 Rs(λ) 与 Rw(λ) 的对应关系;再根据加权平均光谱得到配色配方。对应的 ANN 模型的结构图为:
预测加权平均光谱的主要代码如下:
预测得到加权平均光谱之后,根据加权平均光谱与各组分光谱之间的关系:
即可得到一组 [x1, x2, ... ,xn] 的解(一般来说 n < 31),找到平方差最小的解,作为最优解。注意,求解时也要受到 ∑ xi = 1 的约束。具体求最优解的过程就不再赘述,如果有需要,再去论文中查找。使用 MATLAB 求解时,只需一行代码:
最后这篇论文也对模型进行了测试,效果还是不错的。
《Cross-Media Color Matching Using Neural Networks》 1997年
这篇论文的应用场景不是颜色配方的生产,而是颜色匹配(包括图像颜色匹配)。
利用神经网络进行颜色匹配的步骤:
- 用分光光度计或测色仪测量出颜色范围;
- 用比色法在显示器上再现颜色范围;
- 给予用户基于视觉交互的编辑工具,以匹配显示器上的合适训练集的颜色;
- 神经网络学习校正用户交互式定义的颜色(神经网络模型由输入层、输出层和三层隐藏层组成,输入层和输出层都包含三个结点,每层隐藏层包含七个结点。输入为待校正的颜色的 Lab 值,输出为匹配颜色的 Lab 值);
- 神经网络得到的隐式映射被用于校正要在屏幕上再现的颜色范围的后续颜色;
- 允许用户修改建议的颜色并再次运行学习阶段。
之后论文还重点描述了图像的颜色匹配。这种应用场景有很多特点,需要特殊处理,但是其神经网络的拓扑模型和普通颜色匹配是一样的。考虑到这种应用场景不在我的考虑范围内,这里就不再多说了。
《Genetic Optimization of Neural Network Architectures for Colour Recipe Prediction》 1993年
这篇论文可以说是较早将神经网络应用于计算机配色中的一篇。其主要内容包括对计算机配色、神经网络的介绍,之后将神经网络与计算机配色结合,将标准样本的 Lab 值作为输入,配色配方中成分浓度作为输出。
另外,论文提到了如何设计神经网络结构,以达到最佳效果。比如,为防止过拟合,不该在一层隐藏层中设置过多的神经元,而是应该多设置几层隐藏层,将映射关系分布在网络中。当然,最主要的设计方式还是 trial-and-error。由此引入了遗传算法,用于自动优化网络结构的设计(隐藏层的层数及每层神经元的个数的确定),遗传算法的思想可以比喻为“优胜劣汰,基因进化”。用遗传算法优化神经网络,可以逐渐得到更好的网络结构。
使用遗传算法的优缺点如下:
- 它们是计算密集型的,在工作站上花费很多时间来收敛;
- 它们可能会生成过拟合数据的网络;
- GA 设计的网络本质上非常稳定,即对给定训练中使用的初始随机权重不敏感。
然而经 GA 优化的 ANN 的配方预测效果不是很理想,对于训练集以外的测试集,标准样本与配方样本间的色差仍然较大。有些研究涉及将高斯噪声添加到训练数据中(Creating Artificial Neural Networks That Generalize Neural Networks),以克服这个问题。
《Neural Networks in the Colour Industry》 1991年
这篇论文的内容绝大多数和上一篇一模一样。但值得一提的是,在这篇论文中提到,用于训练网络模型的训练集中,有一半数据是模拟数据(应用了 K-M 模型,将色度坐标与配方浓度关联,分别作为训练模型时的输入和输出)。
这样训练出的模型,在预测配方时效果还可以,有60%的数据的色差小于 1(0.8 被认为是衡量模型效果的一个边界值),而那些色差较大的测试数据,其配方结果中,有一或多个着色成分的浓度约为 0 。当使用神经网络法来进行配方预测时,很难解决类似(某个选定的着色组分实际上不被需要)的问题,这样的限制的根本原因是 Sigmoid 函数本身的限制。为解决这个问题,可以将输出值的范围限定在 0.1 - 0.9,这样对训练出的网络模型的准确度有明显提升,大约 80% 的测试数据的色差低于 0.8,和传统配方预测系统的准确度差不多。与传统配方预测系统不同的是,网络模型在配方组分多时,预测效果比只有一或两个组分要好,当组分有三个时,色差大的概率只有 6.5%;而基于 K-M 等模型的系统则是在组分越少时,配方预测准确度越高。
在作者的另一篇论文《Computer Recipe Prediction Using Neural Networks》中有提到,颜色的 LCH 值不适合作为神经网络训练集的输入,这样会导致训练出的模型效果很差,因为色度角的不连续性——色度角接近360度的颜色在色调上与色度角接近0度的颜色相似。可以选择 Lab 值来作为输入。
使用神经网络法进行配色,相对于传统 K-M 模型的优点包括:
- 神经网络法可以使用实际生产数据进行训练(染色工坊一般会保留历史生产数据),而 K-M 模型则需要额外准备大量数据(比如需要设置某个着色剂的一系列浓度梯度,并测量相应的分光反射率);
- 神经网络可以持续学习,能够适应生产过程的变化;
- 对于特殊材质(如荧光染剂、金属涂层等)的配色,光学模型会十分复杂且效果不佳,这时使用神经网络法更简单可行。
当然,使用神经网络进行配色也有其缺点,包括网络结构难以设计、对未经训练的测试数据的预测效果不佳等等,这些问题的解决仍然是巨大挑战。
《Prediction of Reflectance Values: Towards the Integration of Neural and Conventional Colorimetry》 1993年
这篇论文是想通过神经网络建立配方组成(即各组分浓度)与得到的配方样本的分光反射率之间的映射关系。在传统的 K-M 模型中,是根据 K/S 的相加性可得到配方的 K/S 值,再根据 K/S 和反射率的关系可得到配方的分光反射率曲线。
用于训练模型的数据集中,选择了五种着色剂,其中一种或多种的组合可以得到一个配方。因此,网络模型的输入层有5个神经元,分别是五种着色剂的浓度;输出层有31个神经元,对应着配方的分光反射率(400-700nm,每隔10nm选取一个值)。很明显,这是一个多对一的映射关系。
得到的模型的预测效果与Kubelka-Munk模型的性能相当,即使训练数据不是在颜色空间均匀分布(这使得数据的成功建模更加困难)。模型中的权重显示了反射率数据的三刺激值,三个隐藏层神经元,分别用于表示光谱的红、黄、蓝部分。研究表明,可以使用神经网络将反射率数据压缩到三个隐藏层神经元中,两个神经元不够,四个神经元中会有两个存在关联。(这段内容引用了论文《Reconstruction of Munsell color space by a five-layer neural network》)
在之前的研究中,将神经网络应用于计算机配色时,通常将配方作为输出,这样不仅具有更高难度(是一个一对多映射),而且即使得到的模型接近完美,仍然会存在许多限制,因为用户需要自己选定配方中需要的着色剂。而这篇论文提出的思路,则是将网络模型作为一个可以代替库贝尔卡-蒙克模型的黑盒子,因此其应用会更广泛。
之后又看到了另一篇论文《Kubelka-Munk or Neural Networks for Computer Colorant Formulation? 》,其中也探讨了利用神经网络来得到着色剂浓度 c 与配方反射率 R 之间的映射关系。这篇论文通过实验得到结论:当隐藏层神经元个数为 10 时,得到的模型对于测试集的预测效果最好。但是论文也指出,这样单纯通过 ANN 得到的 c-R 映射关系的准确性难以超越 K-M 模型本身,但可以考虑将 ANN 与 K-M 结合,得到一个混合模型(基于 ANN,但保留 K-M 模型中的一些关键特征),这个混合模型的准确性则有可能超越 ANN 和 K-M 模型。
《Color matching of fabric blends: hybrid Kubelka-Munk + artificial neural network based method》 2016年
双常数 K-M 模型适用于不透明物质的原因是,对于不透明物质,着色剂的散射能力相较于基底来说微不足道,因此可以得到 K-M 配色公式:
然而由于这个公式建立在吸收 / 散射系数的加性质(该性质在很多场景下是不准确的)上,使得 K-M 模型在实际应用中常出现偏差。另外,吸收 / 散射系数的加性质只适用于那些在基底上增加着色剂的情况(如涂料、染料行业),而不适合几种已染色物质的混合(如混色纱行业,可以使用 Stearns-Noechel 即 S-N 模型来代替 K-M 模型)。
神经网络法固然可以实现配色功能,但也存在一些限制(如之前的根据标准样分光反射率,预测各组分的加权平均反射率的神经网络配色法,只适用于单一材质的配色),且需要大量数据集来训练网络模型。因此这篇论文考虑将 ANN 与理论模型相结合,使用混合模型来实现配色。
混合模型的最终目的是找到转换函数 F,使得 RF(λ) = F[A,ρi(λ)],RF 为混合物的分光反射率,A 为各组分浓度组成的向量,ρi 为组分 i 的分光反射率。
K-M + ANN 混合模型包括三个步骤:
1)使用简化模型得到等效织物基底 K/S 值(这一步骤的目的是使得双常数 K-M 模型可以用于混色织物的配色,这要求基底的 K/S值不会随着配方浓度变化而变化,因此需要使用简化模型来求得等效值。经过第一轮配色后,知道混合物的 K/S 值即 ψF 和各组分的 K/S 值即 ψc,即可以得到等效织物基底的 K/S 值即 ψs*);
2)训练 ANN 以推断配方对等效织物基底 K/S 值之间的非线性关系; 然后使用这中关系来预测织物混合物的光谱反射率(这一步是找到转换函数 f,使得 ψs* = f(λ,A,△A),其中,A 为初始配方浓度,△A 为调整配方浓度)。 步骤1和2的组合构成了混合 K-M + ANN 方法;混合模型为:
显然,这个所谓的混合 K-M + ANN 模型,将重点放在了基底 K/S 准确值的估计上。
3)根据 K-M + ANN 混合模型得到一个实用的图表,可以在日常使用中大致取代 ANN 软件。
ε = max | △A - A |.
《Artificial Neural Networks and Colour Recipe Prediction》 1998年
这篇论文提到了 Color Prediction 与 Colorant Prediction 的区别:前者是根据已知的配方,计算得到的混合物的分光反射率曲线,并得到混合物的颜色三刺激值;后者则是相反过程,即根据标准样的分光反射率曲线,得到配方,也就是配方预测。