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_gmm( : : GMMHandle, GenParamName, GenParamValue : ClassLUTHandle)

Herror T_create_class_lut_gmm(const Htuple GMMHandle, const Htuple GenParamName, const Htuple GenParamValue, Htuple* ClassLUTHandle)

void CreateClassLutGmm(const HTuple& GMMHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* ClassLUTHandle)

HClassLUT HClassGmm::CreateClassLutGmm(const HTuple& GenParamName, const HTuple& GenParamValue) const

void HClassLUT::HClassLUT(const HClassGmm& GMMHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

void HClassLUT::CreateClassLutGmm(const HClassGmm& GMMHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

static void HOperatorSet.CreateClassLutGmm(HTuple GMMHandle, HTuple genParamName, HTuple genParamValue, out HTuple classLUTHandle)

HClassLUT HClassGmm.CreateClassLutGmm(HTuple genParamName, HTuple genParamValue)

public HClassLUT(HClassGmm GMMHandle, HTuple genParamName, HTuple genParamValue)

void HClassLUT.CreateClassLutGmm(HClassGmm GMMHandle, HTuple genParamName, HTuple genParamValue)

def create_class_lut_gmm(gmmhandle: HHandle, gen_param_name: Sequence[str], gen_param_value: Sequence[Union[str, int, float]]) -> HHandle

描述

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_dimPreprocessingPreprocessingPreprocessingPreprocessingpreprocessingpreprocessingNumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components 参数至关重要。在 NumDimNumDimNumDimNumDimnumDimnum_dim 中,定义了图像必须具备的通道数才能进行分类。通过 PreprocessingPreprocessingPreprocessingPreprocessingpreprocessingpreprocessing(参见 create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm),可将图像通道数转换为 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_componentsNumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_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_nameGenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_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" = 7NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components = 3 时,8 种像素组合的类别被映射到同一个 LUT 条目中。LUT 最多需要 字节的存储空间。例如,当 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components = 3'bit_depth'"bit_depth""bit_depth""bit_depth""bit_depth""bit_depth" = 8NumClassesNumClassesNumClassesNumClassesnumClassesnum_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_gmmevaluate_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

模块

基础