オブジェクトの検索
このツールで、トレーニング済みのディープラーニングモデルに基づいて画像の中のオブジェクトを特定および分類します。ディープラーニングモデルを、オブジェクト検出またはインスタンスセグメンテーションのために使用できます。
オブジェクト検出モデルとインスタンスセグメンテーションモデルはいずれも、所定のクラスのオブジェクトを検出し、画像の中で見つけます。オブジェクトの方向は任意で、部分的に重なっていてもかまいません。検出された各オブジェクトの場所は、いわゆるバウンディングボックスで示されます。対象のオブジェクトを囲む長方形のことです。それぞれのバウンディングボックスに対し、信頼度の値が返ります。この値は、バウンディングボックス内のオブジェクトが割り当てられたクラスに属する可能性がどの程度であるかを表します。インスタンスセグメンテーションは、オブジェクト検出の特殊なケースであり、モデルは異なるオブジェクトインスタンスを予測して、検出されたインスタンスを画像内の領域に割り当てます。したがって、バウンディングボックスや信頼度の値に加えて、検出されたオブジェクトの領域がピクセル精度で得られます。
ディープラーニングモデルファイルが利用可能であれば、この「MERLIC」ツールですぐに使用できます。そうでない場合は、まずモデルをトレーニングする必要があります。
ディープラーニングモデルのトレーニング
このツール用のディープラーニングモデルのトレーニングには、MVTec の Deep Learning Tool を使用できます。トレーニング用の新しいプロジェクトを作成するときには、目的のディープラーニング手法を選択する必要があります。このツール用のディープラーニングモデルのトレーニングには、以下の手法を選択できます。
|
ディープラーニング手法 |
説明 |
|---|---|
|
軸平行オブジェクト検出
|
この手法は、検出された各オブジェクトの位置を、座標軸に平行な向きのバウンディングボックスでマークします。 したがって、軸平行の長方形で囲みやすい形状のオブジェクト (ボトルキャップなど) に特に適しています。 検出されたオブジェクトの位置だけを関心の対象とし、その方向は対象としない場合は、この手法を使用できます。 加えて、軸平行バウンディングボックスは扱いが複雑でないため、ラベリングにかかる時間が少なくて済みます。
|
|
回転オブジェクト検出 |
この手法は、検出された各オブジェクトの位置を、回転バウンディングボックスでマークします。 したがって、軸平行の長方形で最適に囲むことができない、傾きのある形状のオブジェクト (斜めに傾いた鉛筆など) に特に適しています。 検出されたオブジェクトの位置だけでなく、その方向も関心の対象とする場合は、この手法を使用できます。各バウンディングボックスは適切な向きで示されます。 この手法では、より正確な結果を得ることができます。ただし、回転バウンディングボックスは扱いが複雑であるため、ラベリングに必要な時間が増えます。
|
|
インスタンスセグメンテーション
|
この手法は、検出された各オブジェクトの位置を、座標軸に平行な向きのバウンディングボックスでマークします。加えて、検出された各オブジェクトインスタンスの領域が予測され、返されます。 同じクラスの複数のインスタンスを区別し、画像の中でオブジェクトインスタンスの領域をピクセル精度で視覚化したい場合は、この手法を使用できます。
|
ディープラーニング手法を選択した後のワークフローは、通常は次のようになります。
- ラベルクラスを作成します。
- 画像、オブジェクト、領域にラベルを割り当てます。インスタンスセグメンテーションモデルの場合は、ポリゴンまたはマスクに基づくインスタンスも作成する必要があります。
- モデルをトレーニングします。
こうしてトレーニングしたディープラーニングモデルを、この MERLIC ツールで、パラメーター「モデルファイル」の入力として使用できます。
MVTec HALCON を使ってディープラーニングモデルをトレーニングすることも可能ですが、MVTec Deep Learning Tool を使うことをお勧めします。ディープラーニングモデルの作成方法の詳細については、MVTec Deep Learning Tool のドキュメントを参照してください。
Artificial Intelligence Acceleration インターフェース (AI²) のサポート
MERLIC には NVIDIA® TensorRT™ SDK および Intel® Distribution of OpenVINO™ toolkit 用の Artificial Intelligence Acceleration インターフェース (AI²) が付属しています。したがって、AI アクセラレーターハードウェアを NVIDIA® TensorRT™ または OpenVINO™ toolkit と互換性のある処理ユニットとして使用して、それぞれのハードウェア (NVIDIA® GPU、または CPU、Intel® GPU、Movidius™ VPU などの OpenVINO™ toolkit をサポートするハードウェア) で最適化された推論を実行できます。このようにして、ディープラーニングの推論時間を大幅に高速化できます。それぞれのハードウェアは、ツールパラメーター「処理ユニット」で選択できます。
前提条件
OpenVINO™ toolkit をサポートする NVIDIA® GPU および CPU は、MERLIC のインストール直後に使用できます。追加インストールやセットアップは必要ありません。
OpenVINO™ toolkit を処理ユニットとして使用して Intel® GPU および VPU を使用するには、次の前提条件が適用されます。
- 最初に Intel® Distribution of OpenVINO™ toolkit をインストールする必要があります。
- OpenVINO™ toolkit 環境で MERLIC を開始する必要があります。
インストールと前提条件の詳細については、AI² ディープラーニングを使用するツールのインターフェース のトピックを参照してください。
パラメーター
基本パラメーター
画像:
このパラメーターは、オブジェクトを検出する画像を表します。
モデルファイル:
このパラメーターは、オブジェクトの検出に使用するディープラーニングモデル (.hdl ファイル形式) を定義します。デフォルトでは、モデルは定義されません。ただし、このツールを使用するには、ディープラーニングモデルを定義する必要があります。
MERLIC の AI² インターフェースがサポートする特定のAIアクセラレーターハードウェアを使用したい場合は、それぞれのデバイス向けに最適化されたディープラーニングモデルを使用できます。これによって MVApp の読み込み時間が短縮され、モデルに必要なメモリの量が抑制されます。
モデルのトレーニングには MVTec Deep Learning Tool の使用をお勧めします。モデルをエクスポートするときに、AI² インターフェース向けにモデルを最適化するよう選択できます。一方、引き続き MVTec HALCON をトレーニングに使用する場合は、前処理パラメーターに対する以下の制約について考慮する必要があります。
このツールでサポートされるのは、以下の前処理パラメーターをデフォルト値でトレーニングしたディープラーニングモデルのみです。
- NormalizationType = "none"
- DomainHandling = "full_domain"
方向:
このパラメーターでは、結果のバウンディングボックス決定する方向を指定できます。回転バウンディングボックスでトレーニングしたオブジェクト検出モデルを使用している場合、このパラメーターを使用して、結果のバウンディングボックスを軸平行に揃えることができます。一方、軸平行バウンディングボックスでトレーニングしたモデルの場合は、バウンディングボックスの向きは変更できません。したがって、このパラメーターは無効化され、値はグレイ表示となります。
パラメーターの設定値はデフォルトで「軸平行」です。
|
値 |
説明 |
|---|---|
|
軸平行 |
バウンディングボックスは、軸平行の長方形として提供されます。この設定を使用する場合、「角度」の結果で返る値はすべて 0.0 となります。 |
|
方向 |
バウンディングボックスは、回転のある長方形として提供されます。 このパラメーターの値は、回転オブジェクト検出用にトレーニングされたモデルを使用している場合にのみ設定できます。 |
追加パラメーター
クラスセレクター:
このパラメーターは結果をフィルタリングします。3 つの異なるフィルターオプションから選択できます。パラメーターの設定値はデフォルトで「すべてのクラス」です。
|
値 |
説明 |
|---|---|
|
すべてのクラス |
ツールは利用可能なすべてのクラスを検出します。 |
|
クラスのみ <クラス名> |
ツールは選択したクラスのみを検出します。選択したクラスは、利用可能なすべてのクラスから選択できます。 |
|
すべてなし <クラス名> |
このツールは、選択したクラス以外の利用可能なすべてのクラスを検出します。選択したクラスは、利用可能なすべてのクラスから選択できます。 |
オブジェクトの最大数:
このパラメーターは、ディープラーニングモデルによって検出できるオブジェクトの最大数を定義します。このパラメーターを使用すると、ディープラーニングモデルのトレーニング中に使用されたそれぞれの値をオーバーライドできます。
モデルファイルの読み込み時に、パラメーターはモデルファイルに保存されている最大値に自動的に設定されます。別の値を使用するには、パラメーターの入力フィールドに目的のオブジェクトの最大数を入力するか、スライダーを使用して値を設定します。スライダーを使用して設定できる値は最大で 20 です。20 を超えるオブジェクトを検索する場合は、入力フィールドに値を手動で入力します。
オブジェクトは信頼度の値順で整列されます。画像内のオブジェクトの数がこのパラメーターで定義された値よりも大きい場合、検出されたオブジェクトの数が「オブジェクトの最大数」で定義された値と一致するまで、最も信頼度の低いオブジェクトのほうから除外されていきます。
結果「オブジェクトの数」では、画像内で検出されたオブジェクトの数を確認できます。
最小信頼度:
このパラメーターは、オブジェクトが検出の対象となるために必要な最小の信頼度を決定します。定義された「最小信頼度」よりも低い信頼度の値のすべてのオブジェクトは検出されません。パラメーターの設定値はデフォルトで 0.5 です。
同じクラスの重複:
このパラメーターは、同じクラスの検出されたオブジェクトの最大許容重複を設定します。つまり、クラスが同じ 2 つのオブジェクトが重複し、その重複がパラメーター「同じクラスの重複」の値を超えた場合、信頼度の低い方のオブジェクトは検出されないということです。これは、オブジェクト検出モデルが同じオブジェクトのいくつかの有望なインスタンスを見つけた場合や、同じオブジェクトの 2 つが非常に近接している場合に役立ちます。パラメーターの設定値はデフォルトで 0.5 です。
異なるクラスの重複:
このパラメーターは、異なるクラスの検出されたオブジェクトの最大許容重複を設定します。つまり、クラスが異なる 2 つのオブジェクトが重複し、その重複がパラメーター「異なるクラスの重複」の値を超えた場合、信頼度の低い方のオブジェクトは検出されないということです。パラメーターの設定値はデフォルトで 1 です。
処理ユニット:
このパラメーターは、画像の処理に使用するデバイスを定義します。パラメーターの設定値はデフォルトで「自動」です。このモードでは、MERLIC では、CPU よりも処理能力が高いため、処理ユニットに適した GPU が選択されます。ただし、これには各 GPU に 4 GB 以上の利用可能なメモリが必要です。適切な GPU が見つからない場合は、CPU がフォールバックとして使用されます。
処理ユニットを手動で選択することもできます。パラメーターをクリックして、使用可能なすべての処理ユニットのリストからデバイスを選択します。処理ユニットとして GPU を選択している場合は、使用するディープラーニングモデルに十分なメモリが利用可能であることを確認するようお勧めします。そうでない場合、推論時間が遅くなるなどの望ましくない影響が発生する可能性があります。
MERLIC は、NVIDIA® TensorRT™ SDK または OpenVINO™ toolkit と互換性のある AI アクセラレーターハードウェアの使用もサポートしています。
- NVIDIA® GPU
- OpenVINO™ toolkit をサポートする CPU、Intel® GPU、Intel® VPU (MYRIAD および HDDL)
それぞれのデバイスは、接頭辞「TensorRT(TM)」または「OpenVINO(TM)」のいずれかでマークされます。NVIDIA® TensorRT™ または OpenVINO™ toolkit をサポートするデバイスを選択した場合には、メモリは AI² インターフェースのそれぞれのプラグインを介してデバイス上で初期化されます。
AI アクセラレーターハードウェアが処理ユニットとして選択されるとすぐに、ディープラーニングモデルの最適化が開始されます。最適化の後に、モデルパラメーターを表すすべてのパラメーターは、内部的に読み取り専用に設定されます。したがって、選択した AI アクセラレーターが処理ユニットとして使用されている限り、それらの値は変更できません。パラメーターを変更するには、最初に処理ユニットを AI アクセラレーションなしで別の処理ユニットに変更する必要があります。パラメーターを設定した後、処理ユニットをそれぞれの AI アクセラレーターハードウェアに戻すことができます。
OpenVINO™ toolkit をサポートする CPU は、追加のインストール手順なしで使用できます。それらは、使用可能な処理ユニットのリストで自動的に使用可能になります。同じ名前の複数の処理ユニットが使用可能である場合、それらの名前にインデックス番号が割り当てられます。同じことが NVIDIA® TensorRT™ をサポートする GPU にも当てはまります。
処理ユニットとして OpenVINO™ toolkit をサポートする GPU および VPU を使用するには、Intel® Distribution of OpenVINO™ toolkit をコンピューターにインストールし、MERLIC を OpenVINO™ toolkit 環境で開始する必要があります。前提条件の詳細については、AI² ディープラーニングを使用するツールのインターフェースのトピックを参照してください。
AI アクセラレーターハードウェアによる最適化に加えて、MERLIC は NVIDIA® CUDA® Deep Neural Network (cuDNN) によるさらなる動的最適化をサポートします。この最適化は、MERLIC Creator の MERLIC 設定によって有効にすることができます。詳細については、トピック「MERLIC の設定」を参照してください。
精度:
このパラメーターは、ディープラーニングモデルの推論のための最適化に内部的に使用されるデータタイプを定義します。つまり、モデルが変換される精度を定義します。このパラメーターのデフォルト設定値は「高」です。
次の表は、このツールでサポートされているモデルの精度を示しています。
|
値 |
説明 |
|---|---|
|
高 |
ディープラーニングモデルモデルは「float32」の精度に変換されます。 |
|
中 |
ディープラーニングモデルモデルは「float16」の精度に変換されます。 |
ほとんどの処理ユニットは、両方のタイプの精度をサポートしています。ただし、これらの精度の 1 つしかサポートしない処理ユニットもいくらかあります。この場合、パラメーター「処理ユニット」でそれぞれのデバイスが選択されるとすぐに、サポートされている精度のみがパラメーターで使用可能になります。処理ユニットが自動的に選択される場合、つまり「処理ユニット」が「自動」に設定されている場合、精度「高」のみが使用可能になります。
結果
基本結果
バウンディングボックスの領域:
この結果は、検出されたオブジェクトのバウンディングボックスを領域として返します。
オブジェクトの数:
この結果は、クラスに関係なく検出されたオブジェクトの数を返します。
クラス:
この結果は、検出されたすべてのオブジェクトのクラス名を返します。これらは信頼度の順にタプルとして返されます。結果「オブジェクトの数」の値と同じ数の文字列、つまりクラスが含まれています。
信頼度:
この結果は、検出されたオブジェクトが、割り当てられたクラスに属する可能性がどの程度あるかを示す数値を返します。このパラメーターの値が 1 の場合、検出されたオブジェクトは 100% の精度でトレーニングされたクラスと一致します。複数のオブジェクトが見つかった場合、対応する信頼度は信頼度の順にタプルとして返されます。
ツール状態:
「ツール状態」はツール状態の情報を返します。したがって、エラー処理に使うことができます。さまざまなツールの状態結果の詳細については、 ツール状態 結果 のトピックを参照してください。
追加結果
バウンディングボックスの輪郭:
この結果は、検出されたオブジェクトのバウンディングボックスを輪郭として返します。
オブジェクトインスタンス:
この結果は、検出されたオブジェクトインスタンスの領域を返します。結果は信頼度の順に返ります。
領域は、インスタンスセグメンテーション用のディープラーニングモデルを使用した場合にのみ特定されます。オブジェクト検出モデルを使用した場合、この結果は空となります。
X:
この結果には、検出されたすべてのオブジェクトのバウンディングボックスの中心点の X 座標が含まれます。これはピクセル単位で定義され、信頼度の順にタプルとして返されます。結果「X」の値と同じ数の オブジェクトの数 座標を含んでいます。
Y:
この結果には、検出されたすべてのオブジェクトのバウンディングボックスの中心点の Y 座標が含まれます。これはピクセル単位で定義され、信頼度の順にタプルとして返されます。結果「Y」の値と同じ数の オブジェクトの数 座標を含んでいます。
角度:
検出されたオブジェクトのバウンディングボックスの角度を返します。バウンディングボックスの回転量と回転方向を決定します。角度は度単位の実数として、信頼度の順にタプルとして返されます。タプルには、結果「オブジェクトの数」の値と同じ数の角が含まれています。
|
値 |
説明 |
|---|---|
|
0 |
長方形は回転しません。 |
|
1 ~ 180 |
長方形は反時計方向に回転します。 |
|
-1 ~ -180 |
長方形は時計方向に回転します。 |
この結果は、回転オブジェクト検出用にトレーニングされたモデルを使用している場合にのみ、-180° ~ 180° の範囲の角度を返します。軸平行 バウンディングボックスのみをサポートするディープラーニング手法でモデルファイルをトレーニングした場合は、得られるタプルの値はすべて 0.0 になります。
使用処理ユニット:
この結果は、最後の反復で使用された処理ユニットを返します。この結果を使用して、パラメーター「処理ユニット」が「自動」に設定されている場合にどの処理ユニットが実際に使用されたかを確認したり、正しい処理ユニットが使用されたことを確認したりできます。
精度データタイプ:
この結果は、ディープラーニングモデルの推論のための最適化に内部的に使用されたデータタイプを返します。この結果を使用して、問題が発生した場合に正しい精度が使用されたかどうかを確認できます。
パラメーター「精度」が「高」に設定されている場合、ディープラーニングモデルは「float32」の精度に変換する必要があります。したがって、この結果はデータタイプ「float32」を返すことが期待されます。パラメーター「精度」が「中」に設定されている場合、ディープラーニングモデルは「float16」の精度に変換する必要があります。この場合、この結果の期待値はデータタイプ「float16」です。MVApp の反復中に問題が発生した場合は、この結果が予想とは異なるデータタイプを返すかどうかを確認し、ログファイルで詳細を確認することもできます。ログファイルの詳細については、記録のトピックを参照してください
処理時間:
この結果は、ツールの直近の実行の持続時間をミリ秒単位で返します。結果は、追加結果として提供されます。したがって、デフォルトでは非表示になっていますが、ツール結果の横にある ボタンを使用して表示できます。詳細については、ツールリファレンス概要の処理時間の節を参照してください。
アプリケーションの例
このツール、以下の MERLIC Vision App 例で使用します:
- find_and_count_screw_types.mvapp
- segment_pills_by_shape.mvapp