当前位置:网站首页>halcon系列(2):超级盒子(Hyperboxes)
halcon系列(2):超级盒子(Hyperboxes)
2022-07-21 19:20:00 【无水先生】
一、Hyperboxes概念
超级盒子,是对超立方体进行分层属性归类的方法构造出分类器;通过指定正类和反类实现对对象分类的目的。
二、关于超级盒子的算子
1. clear_sampset 功能:释放一个数据集的内存。
clear_sampset( : : SampKey : )
clear_sampset 释放用于训练已被 read_sampset 读取的数据集的内存。此内存只能与 read_sampset 结合使用。
2.read_sampset 功能:从一个文件中读取一个训练数据组。
read_sampset( : : FileName : SampKey)
通过调用运算符 clear_sampset 和 learn_sampset_box,可以使用键 SampKey 访问训练示例。您可以使用编辑器编辑文件。每行包含一个具有相应类的属性数组。格式的示例可能是:
(1.0, 25.3, * , 17 | 3)
这一行指定了一个属于类 3 的属性数组。在这个数组中,第三个属性是未知的。 5以上的属性也应该是未知的。您可以在任何地方插入 /* .. */ 之类的注释。
3. close_all_class_box 功能:清除所有分类器(已弃用)。
4. create_class_box 功能:创建一个新的分类器。
create_class_box( : : : ClassifHandle)
create_class_box 创建一个新的自适应分类器。章节分类中解释的所有运算符均指这种初始化分类器(类型2)。有关分类器功能的更多详细信息,请参见 learn_class_box。
5. descript_class_box 功能:分类器的描述。
descript_class_box( : : ClassifHandle, Dimensions : ClassIdx, BoxIdx, BoxLowerBound, BoxHigherBound, BoxNumSamplesTrain, BoxNumSamplesWrong)
descript_class_box 描述框分类器的类。盒分类器为每个类使用一组超长方体(盒)。这些框描述了样本的分布。
descript_class_box 返回每个类 (ClassIdx) 从维度 1 到维度 (BoxLowerBound, BoxHigherBound) 的每个包含框 (BoxIdx) 的边界,以及在学习阶段用于确定每个维度的这些边界的样本数 ( BoxNumSamplesTrain)。此外,在学习阶段分配给错误类别的样本数在 BoxNumSamplesWrong 中返回。
框的边界信息可用于检查框分类器。
- ClassifHandle (input_control) class_box → (integer)
分类器的句柄。
- Dimensions (input_control) integer → (integer)
输出的最高维度。默认值: 3
- ClassIdx (output_control) integer(-array) → (integer)
类的索引。
- BoxIdx (output_control) integer(-array) → (integer)
箱子的索引。
- BoxLowerBound (output_control) integer(-array) → (integer)
框的下限(对于每个维度)。
- BoxHigherBound (output_control) integer(-array) → (integer)
框的上限(对于每个维度)。
- BoxNumSamplesTrain (output_control) integer(-array) → (integer)
用于定义此框的训练样本数(对于每个维度)。
- BoxNumSamplesWrong (output_control) integer(-array) → (integer)
错误分配给框的训练样本数。
6. enquire_class_box 功能:为一组属性分类。
enquire_class_box( : : ClassifHandle, FeatureList : Class)
FeatureList 是任何浮点数或整数(属性)的元组,必须在先前训练的 (learn_class_box) 分类器的帮助下将其分配给一个类。可以通过指示符号“*”而不是数字来将属性指定为未知。如果您指定 n 个值,则所有后续值,即属性 n+1 直到 'max',都将自动假定为未定义。
有关分类器功能的更多详细信息,请参见 learn_class_box。
您可以交替调用运算符 learn_class_box 和 enquire_class_box,以便可以在学习阶段进行分类。这意味着您可以看到何时达到了令人满意的行为。
7. enquire_reject_class_box 功能:为一组带抑制类的属性分类。
enquire_reject_class_box( : : ClassifHandle, FeatureList : Class)
FeatureList 是任何浮点数或整数(属性)的元组,必须在先前训练的 (learn_class_box) 分类器的帮助下将其分配给一个类。可以通过指示符号“*”而不是数字来将属性指定为未知。如果您指定 n 个值,则所有后续值,即属性 n+1 直到 'max',都将自动假定为未定义。
如果属性数组不能分配给一个类,即该数组不位于其中一个超级框内,则与 enquire_class_box 相反,不会返回下一个类,而是返回拒绝类 -1即将通过。
有关分类器功能的更多详细信息,请参见 learn_class_box。
您可以交替调用运算符 learn_class_box 和 enquire_class_box,以便可以在学习阶段进行分类。通过这种方式,您可以看到何时达到了令人满意的行为。
8. get_class_box_param 功能:获取关于现在参数的信息。
get_class_box_param( : : ClassifHandle, Flag : Value)
get_class_box_param 获取分类器的参数。 set_class_box_param 中解释了参数的含义。
9. learn_class_box 功能:训练分类器。
learn_class_box( : : ClassifHandle, Features, Class : )
特征是必须分配给类 Class 的任何浮点数或整数(属性)的元组。此类由整数指定。您可以稍后使用运算符 enquire_class_box 为任何数组 (=tupel) 找到最可能的类。该算法试图通过特征空间中的超长方体来描述一类数组的集合。根据需要,您甚至可以为每个类创建多个长方体。因此,也可以学习分离的概念。即这些概念在特征空间中分成几个“集群”点。数据结构对用户是隐藏的,只能通过本章中描述的操作符访问。
请注意,如果一个类由会导致各个超长方体分裂的分离子类组成,则训练样本应相对于子类按随机顺序排列。否则,超长方体的分裂将是次优的。
可以通过指示符号“*”而不是数字来将属性指定为未知。如果您指定 n 个值,则所有后续值,即属性 n+1 直到 'max',都将自动假定为未定义。
您可以交替调用运算符 learn_class_box 和 enquire_class_box,以便可以在学习阶段进行分类。通过这种方式,您可以看到何时达到了令人满意的行为。 通过进一步的训练,分类器将变得更大。这意味着,在达到令人满意的行为后继续训练是不可取的。10. learn_sampset_box 功能:用数据组训练分类器。
11. read_class_box 功能:从一个文件中读取分类器。
read_class_box( : : ClassifHandle, FileName : )
read_class_box 从文件 FileName 中读取保存的分类器(参见 write_class_box)。当前分类器的值被覆盖。盒子分类器的默认 HALCON 文件扩展名是“gbc”。
12. set_class_box_param 功能:为分类器设计系统参数。
set_class_box_param( : : ClassifHandle, Flag, Value : )
set_class_box_param 修改在调用 learn_class_box 时操纵训练序列的参数。只有分类器的参数被修改,所有其他分类器保持不变。 'min_samples_for_split' 是在允许长方体自行划分之前,必须在该分类器的一个长方体中训练的至少示例数。 “split_error”表示严重错误。如果要训练的示例超过 'min_samples_for_split',则通过它超出长方体划分自身。 'prop_constant' 操纵长方体的扩展。它与该长方体中的训练样例到长方体中心的平均距离成正比。更详细:
extension x prop = 期望值的平均距离。
这种关系在每个维度上都有效。因此,在长方体内部,特征空间的维度应该是独立的。
参数设置为与问题无关的默认值,不得无故修改。参数仅在学习序列期间很重要。它们不会影响 enquire_class_box 的行为。
13. test_sampset_box 功能:为一组数组分类。
test_sampset_box( : : ClassifHandle, SampKey : Error)
与 learn_sampset_box 相比,这里没有学习。通常,您使用 test_sampset_box 对独立的测试数据进行分类。错误为您提供有关学习训练集对新示例的适用性的信息。
14. write_class_box 功能:在一个文件中保存分类器。
write_class_box( : : ClassifHandle, FileName : )
write_class_box 将分类器 ClassifHandle 写入 FileName 给定的文件。可以使用 read_class_box 读取分类器。盒子分类器的默认 HALCON 文件扩展名是“gbc”。
三、参考示例
* Classify pixels using hyper-cuboids.
*
read_image (Image, 'ic')
* Create a new classificator
create_class_box (ClassifHandle)
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowID)
dev_display (Image)
dev_set_color ('green')
gen_rectangle1 (foreground, 360, 198, 369, 226)
dev_set_color ('red')
gen_rectangle1 (reject, 84, 336, 337, 504)
* Train the current classificator using a multi-channel image
learn_ndim_box (foreground, reject, Image, ClassifHandle)
class_ndim_box (Image, Regions, ClassifHandle)
dev_set_color ('blue')
close_class_box (ClassifHandle)
dev_display (Image)
dev_display (Regions)
边栏推荐
猜你喜欢
Save web pages as PDF artifacts (customizable) - print edit we
2022 latest Hubei construction eight members (Mechanics) simulated examination question bank and answers
Don't step on the "hidden rules" of those testers in the interview
Energy principle and variational method note 10: virtual displacement principle
Smart phone antenna tuning
公司新来一个同事,把 Typora 玩得炉火纯青!太强悍了
Std:: thread combined with class object
QDataStream
Some personal understanding
HCIP(10)
随机推荐
设置弹性盒justify-content: space-between不生效
嵌入式总线与通信
OSPF comprehensive experiment
能量原理与变分法笔记02:变分问题 变分和微分运算能交换次序 欧拉方程
能量原理与变分法笔记03:证明两点之间直线最短
启动,关闭,查看MySQL服务(Linux)
Json 格式的接口测试该怎么做?
Baidu PaddlePaddle easydl x wesken: see how to install the "eye of AI" in bearing quality inspection
IDEA 2022.2 正式发布,骚操作,跟不上了!
The "five grades" officially recognized by the tester, let's see what stage you are in?
C#实现给PDF文档设置过期时间
Ingress
[Basic] Pointer in C
能量原理与变分法笔记06:高阶导数的变分问题(包含函数的高阶导数)
[interview: concurrent Article 20: multithreading: multiple locks]
List collection
Some personal understanding
Summary of some experiences in the process of R & D platform splitting
BigInteger :new BigInteger(tokenJson.getBytes()).toString(16)什么意思
2022 open source PHP message feedback management system v2.0