简介
许多传统的白平衡算法基于统计,也就是说,它们依赖于这样一个事实:即某些假定应保留在适当的白平衡图像中,比如众所周知的灰世界假定。但是,在学习型框架中利用有真实光源的地面图像大数据集往往可以获得更好的结果。本教程演示如何训练学习型白平衡算法和评估结果质量。
如何训练模型
- 下载用于训练的数据集。在本教程中,我们将使用 Gehler-Shi 数据集。将所有 568 张训练图像提取到一个文件夹中。包含真实光源值的单独下载了一个文件 (real_illum_568..mat)。
- 我们将使用一个 Python 脚本 用于训练。通过以下参数调用它
python learn_color_balance.py -i <训练图像文件夹的路径> -g <real_illum_568..mat 的路径> -r 0,378 --num_trees 30 --max_tree_depth 6 --num_augmented 0
这应该开始在最初的 378 张图像(整个数据集的 2/3)上训练模型。我们将模型大小设置为每个特征 30 个回归树对,并将树深度限制为不超过 6。默认值为导致的结果模型将保存到 color_balance_model.yml
- 在构建 LearningBasedWB 的实例时,使用经过训练的模型通过传递模型的路径
Ptr<xphoto::LearningBasedWB> wb = xphoto::createLearningBasedWB(modelFilename);
如何评估模型
- 我们将使用 基准测试脚本 将我们训练的模型与经典的灰世界算法在数据集剩余的 1/3 上进行比较。通过以下参数调用脚本
python color_balance_benchmark.py -a grayworld,learning_based:color_balance_model.yml -m <包含模型的完整路径的文件夹> -i <训练图像文件夹的路径> -g <real_illum_568..mat 的路径> -r 379,567 -d "img"
- 客观评估结果存储在 white_balance_eval_result.html 中,为了定性比较算法,结果的白平衡图像存储在 img 文件夹中。不同算法通过估计的光源和真实光源之间的角误差进行比较。