フィルタ文法
VisionPro Deep Learning 内のフィルタ式の文法コンポーネントは以下で構成されています。
- リテラル値
- 組み込み変数
- 演算子
- 関数
- 正規表現
フィルタリテラル値
VisionPro Deep Learning フィルタ文法では、文字列および浮動小数点値型をサポートしています。これらの値は、次のようにして入力する必要があります。
種類 | 例 | 注 |
---|---|---|
string |
filename = 'RUN00031.bmp' sets ~ 'PlantA'
|
文字列は単一引用符で囲む必要があり、エスケープ処理をサポートしていません。 |
浮動小数点 |
feature [score > 0.750] count(feature) = 10
|
小数点は不要です。 |
フィルタ変数
フィルタ文法には、ビューについて定義されている変数が含まれています。これらの変数を使用するには、次のように、ブール値の結果に評価される式内にそれらを含めます。
width > 1500 // このフィルタは 幅が 1500 を超えるビューを返します。
ビューレベルの変数としては、次のいずれかがあります。
- 汎用、つまり、すべてのビューで使用可能な変数。
- ツール特有、つまり特定のツールタイプでのみ使用可能な変数。
たとえば、trained 変数はすべてのビューに使用可能ですが、precision 変数は、解析 (赤) ツールビューまたは位置決め (青) ツールのビューについてのみ使用可能です。
フィルタ文法は、ビューレベル変数に加え、個々のマーキング、ラベル、およびその他のビュー要素の有無または値に基づいてビューをフィルタ処理するために使用できる、ツール特有の軸レベル変数もサポートしています。軸変数を使用するには、これらを角カッコで囲んだものに軸名を続けます。
たとえば、位置決め (青) ツールには、feature (見つかった特徴の場合) および match (一致したモデルの場合) という 2 つの軸があります。特定の特徴を含んでいるビューをフィルタ処理する場合は、feature を含め、その後に軸フィルタを角カッコで囲んだものを続けてください。
feature[x > 10 and x < 900] // このフィルタは、10 ~ 900 に X 位置がある特徴が含まれているビューを返します。
この場合、feature が軸で、x および y が軸レベル変数です。
位置決め (青) ツールの領域およびフィルタ軸の場合は、特徴ではなくラベルと照合するために感嘆符 ('!') を軸名に追加します。
feature![x > 10 and x < 900] // このフィルタは、10 ~ 900 に X 位置があるラベルが含まれているビューを返します。
ビューレベル変数と軸レベル変数を 1 つの式で組み合わせることができます。
trained and feature[x > 10 and x < 900] // このフィルタは、10 ~ 900 に X 位置がある特徴が含まれている学習済みのビューを返します。
パス区切り文字 ('/') を追加して式内の軸変数を参照することもできます。
feature/x > 10 and feature/y < 900 // このフィルタは、X 軸が 10 より大きい 1 つ以上の特徴と、Y 軸が 900 より小さい 1 つ以上の特徴が含まれている学習済みのビューを返します。
汎用ビューレベル変数
これらの変数は、Deep Learning ツールに関係なく、あらゆるビューで使用されます。
ビューレベル変数 | データ型 | 説明 |
---|---|---|
new |
boolean |
前回の学習以降に追加されたすべてのビューを返します。 |
anomalous |
boolean |
イメージプレーンの特徴がツール設定と一致しないサンプルを返します。 |
all |
boolean |
データベース内のすべてのビューを返します。 |
processed |
boolean |
前回の学習以降に生成されたマーキングが含まれているビューを返します。 |
masked |
boolean |
マスクを含んでいるすべてのビューを返します。 |
invalid |
boolean |
空の位置決め (青) ツールの特徴や解析 (赤) ツールのオーバーラップした領域など、無効なラベルを含んでいるすべてのビューを返します。 |
trained |
boolean |
学習セットに追加されたすべてのビューを返します。 |
labeled |
boolean |
ラベルを含んでいるすべてのビューを返します。 |
sample_name |
文字列 |
サンプル名。複数チャネルのサンプルを使用している場合は、サンプル名が異なる場合があります。 |
ファイル名 |
文字列 |
そのファイル名が付けられたビューを返します。 |
added |
文字列 |
画像がワークスペースに追加された日付を返します。 |
duration |
浮動小数点 |
ビューの前回の処理時間を返します。 |
index |
浮動小数点 |
すべてのビューの列挙内のビューのインデックス (0 ~ N-1) を返します。この変数は、ビューの特定の範囲を選択する場合に便利です。 |
view_index |
浮動小数点 |
|
random |
浮動小数点 |
ランダム値を返します。この変数は、ビューをシャッフルしたり (ビューの並べ替えに使用する場合)、ビューのランダムなセットを選択したりする際に便利です。たとえば、'random < 0.5' とすると、ビューの半分が選択されます。 |
width |
浮動小数点 |
指定された幅の値に一致するビューを返します。 |
height |
浮動小数点 |
指定された高さの値に一致するビューを返します。 |
difficulty |
浮動小数点 |
ビューを学習する難易度の単位なしの測定値と一致するビューを返します。 |
sets |
String [ ] |
指定されたセットに含まれているすべてのビューを返します。この変数は、結果を返すために文字列のベクタが指定されている点でユニークです。次の文法は、sets 変数に適用したときの同等、不等、および包含演算子 ('~') のセマンティクスを要約したものです。
Note:
包含演算子 ('~') を使用して部分マッチングを実行できます。たとえば、次の構文を使用できます。 sets ~ "Plant17" // "Plant18-LineA" ではなく、"Plant17-LineA" や "Plant17-LineB" など、Plant17 のメンバであるビューについて TRUE を返します。 |
ツール特有のビューレベル変数
これらの変数は、特定の VisionPro Deep Learning ツールとそれらのツールの特定のコンポーネントに関連付けられています。以下の変数を使用すると、処理の結果をフィルタできます。
位置決め (青) ツールおよび読み取り (青) ツールのビュー変数 | データ型 | 注 |
---|---|---|
mismatch |
boolean |
|
recall |
浮動小数点 |
|
precision |
|
|
f_score |
|
|
best_match_string |
文字列 |
|
位置決め (青) および読み取り (青) ツール - 特徴軸変数 | データ型 | 注 |
covered |
boolean |
|
matched |
|
|
score |
浮動小数点 |
|
angle |
|
|
size |
|
|
aspect_ratio |
|
|
width |
|
|
height |
|
|
x |
|
|
y |
|
|
angle_dist |
|
|
size_dist |
|
|
aspect_ratio_dist |
|
|
dist |
|
|
x_dist |
|
|
y_dist |
|
|
id |
文字列 |
|
covered_id |
|
|
位置決め (青) および読み取り (青) ツール - 一致軸変数 | データ型 | 注 |
covered |
boolean |
|
score |
浮動小数点 |
|
angle |
|
|
scale |
|
|
aspect_ratio |
|
|
shear |
|
|
x |
|
|
y |
|
|
特徴 |
|
|
name |
文字列 |
|
feature_string |
|
分類 (緑) ツールのビュー変数 | データ型 | 注 |
---|---|---|
threshold |
浮動小数点 |
|
score |
|
|
unknown |
不明 (つまり、未学習) クラスとラベル付けされている画像を示します。 |
|
mismatch |
|
|
best_tag |
文字列 |
|
validated | 分類 (緑) High Detail の検証セットに含まれているビューのみを返します。 | |
not validated | 分類 (緑) High Detail の検証セットに含まれていないビューのみを返します。 | |
分類 (緑) ツール - タグ軸変数 | データ型 | 注 |
score |
浮動小数点 |
|
name |
文字列 |
|
解析 (赤) ツールのビュー変数 | データ型 | 注 |
---|---|---|
good |
boolean |
良好とラベル付けされたビューを返します。 例: "good and score<=0.2" |
negative |
"good" と同じ結果を返します。 |
|
bad |
不良とラベル付けされたビューを返します。 |
|
positive |
"bad" と同じ結果を返します。 |
|
mismatch |
|
|
recall |
浮動小数点 |
処理結果として再現率を返します。 |
precision |
処理結果として適合率を返します。 |
|
f_score |
処理結果として F 得点を返します。 |
|
T1 |
下限しきい値を返します。 例:"T1>= 0.4" |
|
T2 |
上限しきい値を返します。 例:"T2>= 0.6" |
|
score |
欠陥の最高確率を返します。 例: "score>= 0.5" |
|
deviation |
"score" と同じ結果を返します。 |
|
validated | 解析 (赤) High Detail の検証セットに含まれているビューのみを返します。 | |
not validated | 解析 (赤) High Detail の検証セットに含まれていないビューのみを返します。 |
フィルタ文法演算子
文法演算子は、TRUE か FALSE (フィルタ処理の場合) に評価可能、整数値か浮動小数点値 (並べ替えの場合) に評価可能、またはベクタ (カウントの場合) に評価可能な式の構築に使用されます。
演算子 | 注 | sets とともに使用された場合 |
---|---|---|
~ |
文字列の比較: LHS (左辺) に RHS (右辺) が含まれる場合は TRUE。filename ~ 'string' の省略表現に 'string' を使用します。 |
RHS を含んでいる LHS の文字列の 2 番目のベクタを返します。返されるベクタは、ブール値 (文字列が少なくとも 1 つある場合は TURE) として評価したり、文字列の新しいベクタとして使用したりすることができます。 |
in |
範囲内の浮動小数点:LHS が RHS で指定された範囲内にある場合は TRUE。 |
なし |
and |
|
|
or |
|
|
not |
|
|
< |
文字列の自然ソート。 |
文字列の自然ソート。 |
<= |
|
|
> |
|
|
>= |
|
|
= |
|
文字列のベクタに、指定された文字列と厳密に一致する 1 つ以上の要素が含まれている場合は TRUE。2 つのベクタの同等性の比較に使用することはできません。 |
!= |
|
ベクタの 1 つ以上の要素が指定された文字列と厳密に一致しない場合は TRUE。 これは、not(sets = 'string') と同じではありません。 |
( ) |
優先順位 |
|
フィルタ文法関数
修飾なしで使用した場合、フィルタ軸 (特徴、一致、領域、タグ) は項目のリストを返します。これらのリストは、直接検証することはできませんが、count() 関数に指定してその結果を検証できます。
文字列のベクタ (例: sets) も count() 関数に指定できます。ただし、これ以外の関数に指定することはできません。
また、軸フィルタとしてではなくパス区切り文字を使用して軸浮動小数点変数を指定した場合、直接検証することはできないが、min() および max() 関数に直接指定してその結果を検証できる値のリストが返されます。
例:
- count (feature) > 10 // 特徴が 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 という正規表現と一致する場合は TRUE を返します。
キャプチャ文字列を使用し、これを別の文字列と比較することもできます。/<regex(capture)>/.extract(<variable>)。キャプチャされた文字列を返します。
- /DF(\d\d\d\d)/.extract(sample_name) = '1234' // 正規表現から 4 桁の数字をキャプチャし、これを '1234' と照合します。
-
上記の例では、文字列に評価される、ビューレベル変数 sample_name を使用しています。データ型が文字列である軸変数を使用すると、それらの変数が文字列のベクタに評価される場合があります。これは、1 つのビュー内にこの軸変数の複数のインスタンスが存在する可能性があるためです。この場合、以下のようにして正規表現を軸フィルタ内に適用する必要があります。
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 // 4 つ以上の特徴があるビューを返します。
フィルタ式には、ビューごとに個別のマーキングまたはラベリングが評価される軸フィルタを含めることもできます。
- 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 を超えるビューを返します。
1 つの軸に対して複数のフィルタ条件を指定できます。
- feature[score > 0.5 and matched ] // 得点が 0.5 を超える特徴が含まれ、その特徴が一致モデル内にあるビューを返します。