create_class_lut_gmmT_create_class_lut_gmmCreateClassLutGmmCreateClassLutGmmcreate_class_lut_gmm创建类查找表高斯混合模型(算子)
名称
create_class_lut_gmmT_create_class_lut_gmmCreateClassLutGmmCreateClassLutGmmcreate_class_lut_gmm — 使用高斯混合模型创建查找表来对字节图像进行分类。
签名
描述
create_class_lut_gmmcreate_class_lut_gmmCreateClassLutGmmCreateClassLutGmmCreateClassLutGmmcreate_class_lut_gmm 使用训练好的高斯混合模型(GMM)
GMMHandleGMMHandleGMMHandleGMMHandleGMMHandlegmmhandle 的数据生成查找表(LUT) ClassLUTHandleClassLUTHandleClassLUTHandleClassLUTHandleclassLUTHandleclass_luthandle,用于对多通道字节图像进行分类。通过使用基于 GMM 的 LUT 分类器,后续分类中的 classify_image_class_gmmclassify_image_class_gmmClassifyImageClassGmmClassifyImageClassGmmClassifyImageClassGmmclassify_image_class_gmm
算子可被
classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut 算子替换。分类速度得到显著提升,因为每个图像点的类别估计不再必要——由于 GMM 的所有可能响应都存储在 LUT 中。对于 LUT 的生成,先前调用的 create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm 算子中定义的 NumDimNumDimNumDimNumDimnumDimnum_dim、PreprocessingPreprocessingPreprocessingPreprocessingpreprocessingpreprocessing 和 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components 参数至关重要。在 NumDimNumDimNumDimNumDimnumDimnum_dim 中,定义了图像必须具备的通道数才能进行分类。通过 PreprocessingPreprocessingPreprocessingPreprocessingpreprocessingpreprocessing(参见 create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm),可将图像通道数转换为 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components。NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components 定义了特征向量的长度,该向量由分类器
classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmClassifyClassGmmclassify_class_gmm 在内部处理。出于性能和磁盘空间考虑,LUT 最多支持 3 维。由于其替代了 classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmClassifyClassGmmclassify_class_gmm 算子,必须满足
NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components <= 3。若未进行减少图像通道数的预处理(NumDimNumDimNumDimNumDimnumDimnum_dim = NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components),则使用
classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmClassifyClassGmmclassify_class_gmm 字节图像中可能出现的全部像素值进行分类。分类结果存储于 LUT 中。若存在减少图像通道数的预处理(NumDimNumDimNumDimNumDimnumDimnum_dim > NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components),则 GMM 的预处理参数将存储于 LUT 的独立结构中。创建 LUT 时,所有转换后的像素值均通过 classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmClassifyClassGmmclassify_class_gmm 进行分类。返回的分类结果存储于 LUT 中。由于 LUT 的离散化特性,LUT 分类器精度可能低于 classify_image_class_gmmclassify_image_class_gmmClassifyImageClassGmmClassifyImageClassGmmClassifyImageClassGmmclassify_image_class_gmm。通过 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" 和
'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection" 参数可调控分类精度、存储需求及 LUT 生成所需的运行时间。
基于 GMM 的 LUT 分类器的以下参数可通过
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name 和 GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value 进行设置:
- 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth":
-
像素使用的位数。该参数控制 LUT 分类器的存储需求,并受图像位深度限制( 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" <= 8)。若 LUT 位深度较小( 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" < 8),则多个像素组合的类别将映射至同一 LUT 条目,可能导致分类精度降低。其中一个聚类包含 种像素组合,其中 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components 表示 LUT 的维度,该维度在 create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm 中指定。例如,当 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" = 7 且 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components = 3 时,8 种像素组合的类别被映射到同一个 LUT 条目中。LUT 最多需要 字节的存储空间。例如,当 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components = 3、'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" = 8 且 NumClassesNumClassesNumClassesNumClassesnumClassesnum_classes < 16
(在 create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm 中指定)时,LUT 在启用内部存储优化后需要 8 MB 存储空间。若 NumClassesNumClassesNumClassesNumClassesnumClassesnum_classes = 1,则通过使用 LUT 的完整位深度,该 LUT 仅需 2 MB 存储空间。当 LUT 能完全容纳于缓存时,classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut
中的分类运行时间将降至最低。
典型值: 6,7,8
默认值: 8
限制: 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" >= 1,
'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" <= 8。
- 'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection":
-
LUT 的类选择方法。可通过修改该方法来控制创建 LUT 分类器的精度和所需运行时间。当 LUT 位深度达到最大值时(即 'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" = 8),'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection" 参数值将被忽略。如果 LUT 的位深度较小('bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" < 8),则多个像素组合的类别将映射到相同的 LUT 条目。其中一个聚类包含 种像素组合,其中 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components 表示 LUT 的维度,该维度在 create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm 中指定。选择 'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection" = 'best'"best""best""best""best""best" 时,将聚类中出现频率最高的类别存储在 LUT 中。若采用 'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection" = 'fast'"fast""fast""fast""fast""fast",则仅对聚类中单个像素(即各分量取值最小的像素)进行分类。返回的类别存储在 LUT 中。这种情况下,后续分类的准确度可能会降低。另一方面,创建 LUT 所需的运行时间可以缩短,该时间与查找表所需的最大存储空间成正比,该存储空间定义为
。
默认值: 'fast'"fast""fast""fast""fast""fast"
可能值: 'fast'"fast""fast""fast""fast""fast", 'best'"best""best""best""best""best"
- 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold":
-
GMM 中拒绝不确定分类点的阈值。该参数表示分类返回的 K-sigma 概率测度上的阈值(参见 classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmClassifyClassGmmclassify_class_gmm 和 evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmmEvaluateClassGmmevaluate_class_gmm)。所有概率低于
'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold" 的像素均不被分配至任何类别。
默认值: 0.0001
限制: 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold" >= 0,
'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold" <= 1。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在内部数据级别上自动并行化。
此算子返回一个句柄。请注意,即使该句柄被用作特定算子的输入参数,这些算子仍可能改变此句柄类型的实例状态。
参数
GMMHandleGMMHandleGMMHandleGMMHandleGMMHandlegmmhandle (输入控制) class_gmm → HClassGmm, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
GMM 句柄。
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (输入控制) attribute.name-array → HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)
用于创建 LUT 分类器时可调整的泛型参数名称。
默认值:
[]
建议值:
'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth", 'class_selection'"class_selection""class_selection""class_selection""class_selection""class_selection", 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (输入控制) attribute.value-array → HTupleSequence[Union[str, int, float]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)
用于创建 LUT 分类器时可调整的泛型参数值。
默认值:
[]
建议值:
8, 7, 6, 'fast'"fast""fast""fast""fast""fast", 'best'"best""best""best""best""best"
ClassLUTHandleClassLUTHandleClassLUTHandleClassLUTHandleclassLUTHandleclass_luthandle (输出控制) class_lut → HClassLUT, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
LUT 分类器的句柄。
结果
如果参数有效,算子 create_class_lut_gmmcreate_class_lut_gmmCreateClassLutGmmCreateClassLutGmmCreateClassLutGmmcreate_class_lut_gmm 返回值 2 (H_MSG_TRUE)。如有必要,则抛出异常。
可能的前趋
train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmTrainClassGmmtrain_class_gmm,
read_class_gmmread_class_gmmReadClassGmmReadClassGmmReadClassGmmread_class_gmm
可能的后继
classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut
替代
create_class_lut_knncreate_class_lut_knnCreateClassLutKnnCreateClassLutKnnCreateClassLutKnncreate_class_lut_knn,
create_class_lut_mlpcreate_class_lut_mlpCreateClassLutMlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp,
create_class_lut_svmcreate_class_lut_svmCreateClassLutSvmCreateClassLutSvmCreateClassLutSvmcreate_class_lut_svm
另见
classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut,
clear_class_lutclear_class_lutClearClassLutClearClassLutClearClassLutclear_class_lut
模块
基础