create_class_lut_mlpT_create_class_lut_mlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp创建类查找表多层感知器(算子)

名称

create_class_lut_mlpT_create_class_lut_mlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp — 使用多层感知器创建查找表来对字节图像进行分类。

签名

create_class_lut_mlp( : : MLPHandle, GenParamName, GenParamValue : ClassLUTHandle)

Herror T_create_class_lut_mlp(const Htuple MLPHandle, const Htuple GenParamName, const Htuple GenParamValue, Htuple* ClassLUTHandle)

void CreateClassLutMlp(const HTuple& MLPHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* ClassLUTHandle)

HClassLUT HClassMlp::CreateClassLutMlp(const HTuple& GenParamName, const HTuple& GenParamValue) const

void HClassLUT::HClassLUT(const HClassMlp& MLPHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

void HClassLUT::CreateClassLutMlp(const HClassMlp& MLPHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

static void HOperatorSet.CreateClassLutMlp(HTuple MLPHandle, HTuple genParamName, HTuple genParamValue, out HTuple classLUTHandle)

HClassLUT HClassMlp.CreateClassLutMlp(HTuple genParamName, HTuple genParamValue)

public HClassLUT(HClassMlp MLPHandle, HTuple genParamName, HTuple genParamValue)

void HClassLUT.CreateClassLutMlp(HClassMlp MLPHandle, HTuple genParamName, HTuple genParamValue)

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

描述

create_class_lut_mlpcreate_class_lut_mlpCreateClassLutMlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp 基于训练好的多层感知器(MLP)MLPHandleMLPHandleMLPHandleMLPHandleMLPHandlemlphandle 的数据生成查找表(LUT)ClassLUTHandleClassLUTHandleClassLUTHandleClassLUTHandleclassLUTHandleclass_luthandle,用于对多通道字节图像进行分类。通过采用基于 MLP 的 LUT 分类器,后续分类操作中的 classify_image_class_mlpclassify_image_class_mlpClassifyImageClassMlpClassifyImageClassMlpClassifyImageClassMlpclassify_image_class_mlp 算子可替换为 classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut 算子。由于 MLP 的所有可能响应均存储于 LUT 中,因此无需对每个图像点进行类别估计,从而显著提升分类速度。生成 LUT 时,需重点关注先前调用的 create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp 算子中定义的 NumInputNumInputNumInputNumInputnumInputnum_inputPreprocessingPreprocessingPreprocessingPreprocessingpreprocessingpreprocessingNumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components 参数。NumInputNumInputNumInputNumInputnumInputnum_input 定义待分类图像必须具备的通道数。通过 PreprocessingPreprocessingPreprocessingPreprocessingpreprocessingpreprocessing(参见 create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp)可将通道数转换为 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_componentsNumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components 定义了分类器 classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp 内部处理的特征向量长度。出于性能和磁盘空间的考虑,LUT 最大维度限制为 3 维。由于该算子替代了 classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp,因此 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components <= 3 必须成立。若未进行减少图像通道数的预处理(即NumInputNumInputNumInputNumInputnumInputnum_input = NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components),则所有可能出现在字节图像中的像素值都将由 classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp 进行分类。返回的分类结果存储于 LUT 中。若存在减少图像通道数的预处理操作(NumInputNumInputNumInputNumInputnumInputnum_input > NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_components),则 MLP 的预处理参数将存储于 LUT 的独立结构中。创建 LUT 时,所有转换后的像素值均通过 classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlp 进行分类。返回的分类结果存储于 LUT 中。由于 LU T的离散化特性,其分类精度可能低于 classify_image_class_mlpclassify_image_class_mlpClassifyImageClassMlpClassifyImageClassMlpClassifyImageClassMlpclassify_image_class_mlp。通过 '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 所需的运行时间。

基于 MLP 的 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_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp 中指定。例如,当 '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" = 8NumOutputNumOutputNumOutputNumOutputnumOutputnum_output < 16 (在 create_class_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp 中指定)时,该 LUT 在启用内部存储优化后需要 8 MB 存储空间。若 NumOutputNumOutputNumOutputNumOutputnumOutputnum_output = 1,则通过使用 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_mlpcreate_class_mlpCreateClassMlpCreateClassMlpCreateClassMlpcreate_class_mlp 中指定。选择 '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", 'best'"best""best""best""best""best"

默认值: 'fast'"fast""fast""fast""fast""fast"

'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold"

MLP 中拒绝不确定分类点的阈值。该参数代表对分类返回的概率测度设置的阈值(参见 classify_class_mlpclassify_class_mlpClassifyClassMlpClassifyClassMlpClassifyClassMlpclassify_class_mlpevaluate_class_mlpevaluate_class_mlpEvaluateClassMlpEvaluateClassMlpEvaluateClassMlpevaluate_class_mlp)。所有概率低于 'rejection_threshold'"rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold""rejection_threshold" 的像素均不被分配至任何类别。

默认值: 0.5

限制条件: '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

执行信息

此算子返回一个句柄。请注意,即使该句柄被用作特定算子的输入参数,这些算子仍可能改变此句柄类型的实例状态。

参数

MLPHandleMLPHandleMLPHandleMLPHandleMLPHandlemlphandle (输入控制)  class_mlp HClassMlp, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

MLP 句柄。

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_mlpcreate_class_lut_mlpCreateClassLutMlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp 返回值 2 (H_MSG_TRUE)。如有必要,则抛出异常。

可能的前趋

train_class_mlptrain_class_mlpTrainClassMlpTrainClassMlpTrainClassMlptrain_class_mlp, read_class_mlpread_class_mlpReadClassMlpReadClassMlpReadClassMlpread_class_mlp

可能的后继

classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut

替代

create_class_lut_gmmcreate_class_lut_gmmCreateClassLutGmmCreateClassLutGmmCreateClassLutGmmcreate_class_lut_gmm, create_class_lut_knncreate_class_lut_knnCreateClassLutKnnCreateClassLutKnnCreateClassLutKnncreate_class_lut_knn, 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

模块

基础