筛选条件语法

VisionPro Deep Learning 中筛选条件表达式的语法组成部分包括以下内容:

  • 文字值
  • 内置变量
  • 运算符
  • 函数
  • 正则表达式

 

筛选条件文字值

VisionPro Deep Learning 筛选条件语法支持字符串和浮点值类型。必须输入这些文字值,如下所示:

类型 示例 备注

字符串

filename = 'RUN00031.bmp'
sets ~ 'PlantA'

字符串必须用单引号括起来,且不支持转义。

浮点型

feature [score > 0.750]
count(feature) = 10

不需要小数点。

 

筛选条件变量

筛选条件语法包括为视图定义的变量。通过在计算结果为布尔值的表达式中添加这些变量即可使用它们,例如:

width > 1500 // 此筛选条件返回宽度大于 1500 的视图。

视图级变量可以是以下一种:

  • 通用变量,可以在所有视图中使用它们。
  • 特定于工具的变量,仅适用于特定的工具类型。

例如,trained 变量可用于任何视图,而 precision 变量仅适用于红色分析或蓝色定位工具视图。

除视图级变量外,语法还支持特定于工具的轴级变量,可用来基于各个标记、标签和其他视图元素是否存在或者它们的值来筛选视图。可以通过在轴名称后面的方括号中包括轴变量来使用它们。

例如,蓝色定位工具有两个轴:特征(用于找到的特征)和匹配(用于匹配的模型)。如果要筛选包含特定特征的视图,则应包括特征,后跟包含轴筛选条件的方括号:

feature[x > 10 and x < 900] // 此筛选条件返回的视图包含 x 位置在 10 到 900 之间的特征。

在这种情况下,特征是轴,xy 是轴级变量。

Note:

对于蓝色定位工具中的区域和筛选条件轴,在轴名称后面附加一个感叹号 ('!'),以匹配标签而不是特征:

feature![x > 10 and x < 900] // 此筛选条件返回的视图包含 x 位置在 10 到 900 之间的标签。

可以在单个表达式中组合使用视图级和轴级变量:

trained and feature[x > 10 and x < 900] // 此筛选条件返回经过训练的视图,其中包含 x 位置在 10 到 900 之间的特征。

也可以使用路径分隔符 ('/') 在表达式中引用轴变量。

feature/x > 10 and feature/y < 900 // 此筛选条件返回经过训练的视图,其中至少包含一个 x 位置大于 10 的特征和一个 y 位置小于 900 的特征。

 

通用视图级变量

这些变量可用于任何视图,而与 Deep Learning 工具无关。

视图级变量 数据类型 说明

new

布尔型

返回自上次训练以来添加的所有视图。

anomalous

布尔型

返回图像平面特征与工具配置不匹配的样本。

all

布尔型

返回数据库中的所有视图。

processed

布尔型

返回自上次训练以来生成的带标记的视图。

masked

布尔型

返回所有包含遮蔽的视图。

invalid

布尔型

返回所有包含无效标签的视图,例如空的蓝色查找工具特征,或红色分析工具中的重叠区域。

trained

布尔型

返回训练集中包含的所有视图。

labeled

布尔型

返回所有包含标签的视图。

sample_name

字符串

样本名称,如果使用多通道样本,则名称可能不同。

filename

字符串

返回具有该文件名的视图。

added

字符串

返回将图像添加到工作区的日期。

duration

浮点型

返回最后一次处理该视图的时间。

index

浮点型

返回所有视图枚举中的视图索引,从 0 到 N-1。要选择特定范围的视图时,此变量很有用。

view_index

浮点型

 

random

浮点型

返回一个随机值。要混洗视图(用于对视图进行排序)或选择随机视图集时,此选项很有用。例如,'random < 0.5' 将选择一半的视图。

width

浮点型

返回与指定宽度值匹配的视图。

height

浮点型

返回与指定高度值匹配的视图。

difficulty

浮点型

返回与视图训练难度的无单位度量值相匹配的视图。

sets

字符串 [ ]

返回指定集中包含的所有视图。此变量是唯一的,因为指定了字符串向量以返回结果。以下语法总结了等式、不等式和 contains 运算符 ('~') 在应用于 sets 变量时的语义:

  • sets = '<set_name>' // 如果集中至少有一个元素与 set_name 相同,则返回 true 和关联视图。
  • sets != '<set_name>' // 如果集中没有元素与 set_name 相同,则返回 true 和关联的视图。
  • sets ~ '<set_name>' // 如果集中至少有一个元素包含字符串 set_name,则返回 true 和关联的视图。
Note:

可以使用 contains 运算符 ('~') 进行部分匹配。例如,可以使用以下语法:

sets ~ "Plant17" // 对于属于 Plant17 成员的视图(例如“Plant17-LineA”或“Plant17-LineB”,而不是“Plant18-LineA”)返回 true。

 

特定于工具的视图级变量

这些变量与特定的 VisionPro Deep Learning 工具以及这些工具的特定组件相关联。以下变量可用于筛选处理结果。

 

蓝色定位和蓝色读取工具视图变量 数据类型 备注

mismatch

布尔型

 

recall

浮点型

 

精度

 

f_score

 

best_match_string

字符串

 

蓝色定位和蓝色读取工具 - 特征轴变量 数据类型 备注

covered

布尔型

 

匹配

 

score

浮点型

 

角度

 

大小

 

aspect_ratio

 

宽度

 

高度

 

x

 

y

 

angle_dist

 

size_dist

 

aspect_ratio_dist

 

dist

 

x_dist

 

y_dist

 

ID

字符串

 

covered_id

 

蓝色定位和蓝色读取工具 - 匹配轴变量 数据类型 备注

covered

布尔型

 

score

浮点型

 

角度

 

比例

 

aspect_ratio

 

剪切

 

x

 

y

 

特征

 

名称

字符串

 

feature_string

 

 

绿色分类工具视图变量 数据类型 备注

阈值

浮点型

 

得分

 

 

未知

 

表示标注为未知(也就是未经训练)类的图像。

不匹配

 

 

best_tag

字符串

 
已验证   仅返回包含在绿色分类高细节验证集中的视图。
未验证   仅返回未包含在绿色分类高细节验证集中的视图。
绿色分类工具 - 标签轴变量 数据类型 备注

得分

浮点型

 

名称

字符串

 

 

红色分析工具视图变量 数据类型 备注

良好

布尔型

返回标注为良好的视图。

示例:“良好,得分 <= 0.2”

阴性

返回良好的结果。

不良

返回标注为不良的视图。
示例:“不良,得分 >= 0.8”

阳性

返回不良的结果。

不匹配

 

召回

浮点型

将召回率作为处理结果返回。
示例:“召回率 >= 0.7”

精度

将精度作为处理结果返回。
示例:“精度 >= 0.7”

f_score

将 F 得分作为处理结果返回。
示例:“F 得分 >= 0.75”

T1

返回下限阈值。

示例:“T1 >= 0.4”

T2

返回上限阈值。

示例:“T2 >= 0.6”

得分

返回最高缺陷概率。

示例:“得分 >= 0.5”

偏差

返回与得分相同的结果。

已验证   仅返回包含在红色分析高细节验证集中的视图。
未验证   仅返回未包含在红色分析高细节验证集中的视图。

 

筛选条件语法运算符

语法运算符用于构造表达式,这些表达式的计算结果为 true 或 false(用于筛选)、整数或浮点值(用于排序)或者向量(用于计数)。

Note: 有一些与 sets 变量关联的特定约束条件和行为。sets 变量是唯一的,因为它是字符串向量(也就是视图所属的所有集)。
运算符 备注 与 sets 一起使用时

~

字符串比较:如果 LHS 包含 RHS,则为 true。使用“string”作为 filename ~ 'string' 的简写

返回 LHS 中包含 RHS 的第二个字符串向量。返回的向量可以计算为布尔值(如果至少有一个字符串,则为 true),也可以用作新的字符串向量。

in

浮点在范围内:如果 LHS 在 RHS 指定的范围内,则为 true。

N/A

 

 

或者

 

 

not

 

 

<

字符串的自然排序。

字符串的自然排序。

<=

 

 

>

 

 

>=

 

 

=

 

如果字符串向量至少包含一个与所提供的字符串完全匹配的元素,则为 true。不能用于比较两个向量是否相等。

!=

 

如果向量中至少有一个元素与所提供的字符串不完全匹配,则为 true。

这与 not(sets = 'string') 不同

( )

优先顺序

 

 

筛选条件语法函数

无条件使用时,筛选条件轴(特征匹配区域标签)返回项目列表。这些列表无法直接测试,但可以提供给 count() 函数,然后对函数结果进行测试。

另外,字符串向量(例如)也可以提供给 count(),但不会提供给其他函数。

此外,当使用路径分隔符而不是轴筛选条件的一部分提供任何轴浮点变量时,它将返回一个值列表,这些值无法直接测试,但可以直接提供给 min()max() 函数,然后可以对这些结果进行测试。

例如:

  • count (feature) > 10 // 返回包含十个以上特征的视图。
  • min (feature/score) < 0.95// 返回任一特征的最低得分小于 0.95 的视图。
  • count (sets) > 1// 返回属于多个集的成员的视图。
运算符 备注

count()

 

min()

 

max()

 

sum()

 

avg()

 

std()

 

 

筛选条件中的正则表达式

可以将正则表达式应用于字符串数据类型的任何筛选条件变量。

可以返回正则表达式是否匹配:/<regex>/.test(<variable>)

  • /DF\d\d\d\d/.test(sample_name) // 如果视图的样本名称与正则表达式 DF\d\d\d\d 匹配,则返回 ture。

还可以使用捕获字符串并将捕获的字符串与另一个字符串进行比较:/<regex(capture)>/.extract(<variable>),它将返回捕获的字符串。

  • /DF(\d\d\d\d)/.extract(sample_name) = '1234'// 从正则表达式中捕获四位数字,并针对“1234”进行测试。
Note:
  • 上述示例使用视图级变量 sample_name,其计算结果为字符串。如果您尝试使用字符串数据类型的轴变量,则这些变量的计算结果可能是字符串向量,因为在单个视图中可能有轴变量的多个实例。在这种情况下,必须在轴筛选条件中应用正则表达式,如下所示:

    match[/FH\d\d\d\d/.test(feature_string)] // 对于此表达式,正则表达式应用于每个匹配项的 feature_string。如果任一匹配项的 feature_string 与正则表达式相匹配,则将包括该视图。

    以下是无效的正则表达式筛选条件表达式的示例:

    /FH\d\d\d\d/.test (match/feature_string)// 如果视图包括 feature_string 与正则表达式相匹配的匹配项,表达式应返回 true。但这是无效的,因为每个视图可能有多个匹配项。

  • 不能在正则表达式中使用 sets 变量。

 

如何编写筛选条件表达式

筛选条件表达式可以包括视图级筛选条件,其中的变量引用整个视图。

  • filename ~ 'REJECT' // 返回文件名包含“REJECT”的视图。
  • count(feature) > 3 // 返回具有三个以上特征的视图。

筛选条件表达式还可以包括轴筛选条件,用于对每个视图的单个标记或标签进行计算。

  • feature [score > 0.5 ] // 返回特征得分大于 0.5 的视图。

可以将视图级筛选条件和轴级筛选条件组合起来。

  • filename ~ 'REJECT' and feature [score > 0.5 ]// 返回文件名包含“REJECT”且特征得分大于 0.5 的视图。

可以将多个轴的筛选条件组合使用。

  • feature [score > 0.5 ] and match [ score > 0.5 ]// 返回特征得分大于 0.5 且匹配项得分大于 0.5 的视图。

可以为一个轴指定多个筛选条件。

  • feature[score > 0.5 and matched ]// 返回特征得分大于 0.5 且该特征在匹配模型中的视图。