add_sample_class_gmm —将训练样本添加到高斯混合模型的训练数据中。
签名
add_sample_class_gmm(:GMMHandle,特点,的ClassID,随机化:)
描述
add_sample_class_gmm将训练样本添加到 GMMHandle给出的高斯混合模型(GMM)中。训练样本由 Feature和 ClassID给出。 Features是样本的特征向量,因此必须是长度为 NumDim的实向量,如 create_class_gmm中所指定。 ClassID是样本的类,是介于0和 NumClasses -1之间的整数(在 create_class_gmm中设置)。
在特征向量为整数类型的特殊情况下 ,它们位于步长为1.0的网格中的特征空间中。例如,通常用于颜色分类的RGB特征向量是三元组,其每个分量的整数值在0到255之间。实际上,甚至可能有多个特征向量代表同一点。当用这样的数据训练GMM时,训练算法可能倾向于使建模的高斯沿着与网格尺寸平行的线性相关数据线或平面对齐。如果train_class_gmm返回的Centers数量异常多,则表明该算法具有这种行为。参数随机化可用于处理此类不良效果。如果Randomize > 0.0,则将均值为0和标准差Randomize的随机高斯噪声添加到训练数据向量的每个分量,并将转换后的训练数据存储在GMM中。对于“ 随机化 1.0”的值 ,随机数据看起来像是网格点周围的小云,这不会改善数据云的属性。对于“ Randomize ” (随机化) >> 2.0的值,随机化可能对生成的GMM产生太大的影响。对于整数特征向量,值为Randomize建议使用介于1.5和2.0之间的值,它将整数数据转换为齐次的云,而无需在特征空间中修改其一般形式。如果数据是通过缩放从整数数据创建的,则可能会出现相同的问题。在这里,随机化必须使用与缩放原始数据相同的缩放因子进行缩放。
在可以使用train_class_gmm训练GMM之前, 必须使用add_sample_class_gmm将所有训练样本添加到GMM中 。
可以使用get_sample_num_class_gmm查询当前存储的训练样本 数。可以使用get_sample_class_gmm再次读取存储的训练样本。
通常,将训练样本保存在具有write_samples_class_gmm的文件中 以方便重复使用样本,并在必要时便于将新的训练样本添加到数据集,从而使新创建的 GMM可以使用扩展的数据集进行新的培训。
执行信息
多线程类型:可重入(与非排他运算符并行运行)。
多线程作用域:全局(可以从任何线程调用)。
未经并行处理。
该运算符修改以下输入参数的状态:
GMM句柄
如果没有外部同步,则可能无法在多个线程之间共享此参数的值。
参量
GMMHandle(输入控件,状态已修改) class_gmm→ (整数)
GMM手柄。
功能(input_control) 实数组→ (实)
要存储的训练样本的特征向量。
ClassID(input_control) 编号→ (整数)
要存储的训练样本的类别。
随机(input_control) 实→ (实)
高斯噪声的标准偏差添加到训练数据中。
默认值: 0.0
建议值: 0.0、1.5、2.0
限制:随机化> = 0.0
结果
如果参数有效,则运算符 add_sample_class_gmm返回值2(H_MSG_TRUE)。如有必要,将引发异常。
备择方案
read_samples_class_gmm, add_samples_image_class_gmm