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_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_features、PreprocessingPreprocessingPreprocessingPreprocessingpreprocessingpreprocessing 和 NumComponentsNumComponentsNumComponentsNumComponentsnumComponentsnum_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_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 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" = 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_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
模块
基础