create_class_lut_svmT_create_class_lut_svmCreateClassLutSvmCreateClassLutSvmcreate_class_lut_svm创建类查找表支持向量机(算子)

名称

create_class_lut_svmT_create_class_lut_svmCreateClassLutSvmCreateClassLutSvmcreate_class_lut_svm — 使用支持向量机创建查找表来对字节图像进行分类。

签名

create_class_lut_svm( : : SVMHandle, GenParamName, GenParamValue : ClassLUTHandle)

Herror T_create_class_lut_svm(const Htuple SVMHandle, const Htuple GenParamName, const Htuple GenParamValue, Htuple* ClassLUTHandle)

void CreateClassLutSvm(const HTuple& SVMHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* ClassLUTHandle)

HClassLUT HClassSvm::CreateClassLutSvm(const HTuple& GenParamName, const HTuple& GenParamValue) const

void HClassLUT::HClassLUT(const HClassSvm& SVMHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

void HClassLUT::CreateClassLutSvm(const HClassSvm& SVMHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

static void HOperatorSet.CreateClassLutSvm(HTuple SVMHandle, HTuple genParamName, HTuple genParamValue, out HTuple classLUTHandle)

HClassLUT HClassSvm.CreateClassLutSvm(HTuple genParamName, HTuple genParamValue)

public HClassLUT(HClassSvm SVMHandle, HTuple genParamName, HTuple genParamValue)

void HClassLUT.CreateClassLutSvm(HClassSvm SVMHandle, HTuple genParamName, HTuple genParamValue)

def create_class_lut_svm(svmhandle: HHandle, gen_param_name: Sequence[str], gen_param_value: Sequence[Union[str, int]]) -> HHandle

描述

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

基于 SVM 的 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 denotes the dimension of the LUT, which is specified in create_class_svmcreate_class_svmCreateClassSvmCreateClassSvmCreateClassSvmcreate_class_svm。例如,当 '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_svmcreate_class_svmCreateClassSvmCreateClassSvmCreateClassSvmcreate_class_svm 中指定)时,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_svmcreate_class_svmCreateClassSvmCreateClassSvmCreateClassSvmcreate_class_svm 中指定。选择 '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"

执行信息

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

参数

SVMHandleSVMHandleSVMHandleSVMHandleSVMHandlesvmhandle (输入控制)  class_svm HClassSvm, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

SVM 句柄。

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"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (输入控制)  attribute.value-array HTupleSequence[Union[str, int]]HTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)

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

可能的前趋

train_class_svmtrain_class_svmTrainClassSvmTrainClassSvmTrainClassSvmtrain_class_svm, read_class_svmread_class_svmReadClassSvmReadClassSvmReadClassSvmread_class_svm

可能的后继

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_mlpcreate_class_lut_mlpCreateClassLutMlpCreateClassLutMlpCreateClassLutMlpcreate_class_lut_mlp

另见

classify_image_class_lutclassify_image_class_lutClassifyImageClassLutClassifyImageClassLutClassifyImageClassLutclassify_image_class_lut, clear_class_lutclear_class_lutClearClassLutClearClassLutClearClassLutclear_class_lut

模块

基础