add_sample_class_gmm — 将训练样本添加到高斯混合模型的训练数据中。
add_sample_class_gmm 将训练样本添加至由 GMMHandle 指定的高斯混合模型(GMM)。训练样本通过 Features 和 ClassID 参数提供。
Features 是样本的特征向量,因此必须是长度为 NumDim 的实数向量(该数值在 create_class_gmm 中设定)。ClassID 表示样本所属类别,取值为 0 到 NumClasses-1 之间的整数(该数值在 create_class_gmm中设定)。
在特征向量为整数型的特殊情况下,它们以步长为 1.0 的网格形式分布于特征空间中。例如,通常用于颜色分类的 RGB 特征向量是由三个元素组成的三元组,每个元素的取值范围均为 0 至 255 之间的整数。实际上,甚至可能存在多个特征向量代表同一点。当使用此类数据训练 GMM 时,训练算法可能倾向于将建模的高斯分布沿着与网格维度平行的线性相关数据线或平面进行对齐。如果 train_class_gmm 返回的 Centers 数量异常偏高,则表明算法存在此类行为。可通过 Randomize 参数来处理此类不良影响。若 Randomize > 0.0,则向训练数据向量的每个分量添加均值为 0、标准差为 Randomize 的随机高斯噪声,并将转换后的训练数据存储于 GMM 中。当 Randomize 1.0时,随机化后的数据将呈现为网格点周围的小云团,这并不能改善数据云的特性。当 Randomize
>> 2.0 时,随机化可能对最终的 GMM 产生过强的影响。对于整数特征向量,建议将 Randomize 值设置在 1.5 至 2.0 之间,这能将整数数据转换为均匀分布的点云,同时保持其在特征空间中的整体形态不变。如果数据是通过缩放整数数据生成的,则可能出现相同的问题。在此,Randomize 必须使用与原始数据相同的缩放因子进行缩放。
在使用 train_class_gmm 训练 GMM 之前,必须先通过 add_sample_class_gmm 将所有训练样本添加到 GMM 中。
当前存储的训练样本数量可通过 get_sample_num_class_gmm 查询。存储的训练样本可通过 get_sample_class_gmm 再次读取。
通常,使用 write_samples_class_gmm 将训练样本保存至文件中颇为实用,这既便于重复利用样本,又可在必要时向数据集添加新训练样本,从而使新建的 GMM 能够基于扩展后的数据集重新进行训练。
此算子修改后续输入参数的状态:
在执行此算子时,若该参数值需在多个线程间使用,则必须对其访问进行同步。
GMMHandle (输入控制,状态被修改) class_gmm → (handle)
GMM 句柄。
Features (输入控制) real-array → (real)
待存储的训练样本特征向量。
ClassID (输入控制) number → (integer)
待存储的训练样本类。
Randomize (输入控制) real → (real)
添加至训练数据的高斯噪声标准差。
默认值: 0.0
建议值: 0.0, 1.5, 2.0
限制:
Randomize >= 0.0
如果参数有效,算子
add_sample_class_gmm 返回值 2 ( H_MSG_TRUE )。如有必要,则抛出异常。
train_class_gmm,
write_samples_class_gmm
read_samples_class_gmm,
add_samples_image_class_gmm
clear_samples_class_gmm,
get_sample_num_class_gmm,
get_sample_class_gmm
基础