画像を分類
このツールで、トレーニング済みの分類子に基づいて画像を分類します。
分類子は、一連のクラスの中から画像に特定のクラスを割り当てられるようにトレーニングされたディープラーニングモデルです。各クラスに対して、画像がそのクラスに属する可能性を示す信頼度の値が特定されます。信頼度の値が最も大きいクラスが画像に割り当てられます。
ディープラーニングモデルファイルが利用可能であれば、この「MERLIC」ツールですぐに使用できます。そうでない場合は、まずモデルをトレーニングする必要があります。
ディープラーニングモデルのトレーニング
このツール用のディープラーニングモデルのトレーニングには、MVTec の Deep Learning Tool を使用できます。ワークフローは次のとおりです。
- クラスを定義します。
- 画像にラベル付けを適切に行います。
- モデルをトレーニングします。
トレーニングでは、分類ファイルが得られます。このファイルは、この MERLIC ツールで新しい画像を分類するときに使用できます。これで、画像は先に定義済みのクラスに分類されます。
MVTec HALCON を使ってディープラーニングモデルをトレーニングすることも可能ですが、MVTec Deep Learning Tool を使うことをお勧めします。ディープラーニングモデルの作成方法の詳細については、MVTec Deep Learning Tool のドキュメントを参照するか、MVTec Deep Learning Tool によるディープラーニング分類のビデオチュートリアルをご覧ください。
「Out-of-Distribution 検出」での分類子の使用
この MERLIC ツールで、「Out-of-Distribution 検出」向けに拡張された分類子を使用している場合、この分類子では、トレーニングデータと大幅に異なるオブジェクトやサンプルの分類誤りの認識が可能になり、たとえばガラス瓶のみでシステムをトレーニングした場合の金属製オブジェクトの分類に対応できます。追加で返るツール結果 Out-of-Distribution スコア は、トレーニングされたクラスからの逸脱度を示します。また、追加のツールパラメーター Out-of-Distribution しきい値 では、Out-of-Distribution のサンプルを識別するためのしきい値を調整できます。
下のサンプル画像では、分類子は 3 つのクラスを識別するようにトレーニングされています。最初の画像では、信頼度の値が最も大きいクラスは「apple」です。したがって、画像は「apple」と認識されます。
2 番目の画像では、オブジェクトがトレーニングデータと著しく異なります。3 つのクラスの信頼度の値に加えて、トレーニングした 3 つのクラスのいずれにも属さない画像であることが、このネットワークでは示されています。
トレーニングされた分類子を「Out-of-Distribution 検出」 (OOD) 向けに拡張するには、MVTec HALCON を使用する必要があります。拡張は HALCON バージョン 24.11 Progress-Steady 以降で実行できます。Out-of-Distribution 検出 の詳細については、MVTec HALCON のドキュメントを参照してください。
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"
ヒートマップを表示:
このパラメーター は、ヒートマップを表示するかどうかを定義します。ヒートマップは、分類を決めるのに重要な画像の一部を示します。デフォルト設定は 1 です。その場合、ヒートマップはデフォルトで表示されます。このパラメーター を 0 に設定すると、ヒートマップは非表示になります。結果「表示された画像」で戻る画像にヒートマップが含まれるかどうかも、このパラメーターの値によって決まります。
パラメーター「ヒートマップを表示」が 1 に設定されていても、AI アクセラレーターハードウェアが処理ユニットとして使用されている場合、ヒートマップは使用できません。パラメーター「処理ユニット」で OpenVINO™ toolkit と互換性のある CPU、GPU、または VPU を選択するとすぐに、ヒートマップは無効になります。同じことは NVIDIA® GPU が選択されている場合にも当てはまります。
追加パラメーター
Out-of-Distribution しきい値:
このパラメーターは、分類子に使用されたトレーニングデータと異なるオブジェクトやサンプルを識別するためのしきい値を定義します。定義したしきい値を「Out-of-Distribution スコア」で超えている場合、サンプルは「Out-of-Distribution」と分類されます。「Out-of-Distribution 検出」(OOD) をサポートする分類子を選択するときには、その分類子を OOD 向けに拡張する際に定められた値を使って、しきい値が初期化されます。必要な場合は、このパラメーターでしきい値を手動で調整し、0.0 ~ 1.0 の範囲の値に設定できます。
このパラメーターは、「Out-of-Distribution 検出」(OOD) 向けに拡張された分類子を使用する場合にのみ設定できます。OOD のない分類子を使用する場合は、このパラメーターはグレイ表示となり、設定できません。
処理ユニット:
このパラメーターは、画像の処理に使用するデバイスを定義します。パラメーターの設定値はデフォルトで「自動」です。このモードでは、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 です。その場合、1 つのクラス (最高信頼度のクラス 1 つ) だけが「検出したクラス」で戻ります。最大 5 クラスの照会を選択できます。「検出したクラス」で得られるクラスは、その信頼度の値で整列されます。
このパラメーターでは、結果「信頼度」と「検出したクラス ID」で戻る値の最大数も定義します。これは、その値は「検出したクラス」でクラスを参照するからです。これらの結果の詳細については、以下の個々のセクションを参照してください。
選択したパラメーター値は、結果の出力を制御するだけで、パフォーマンスや実行時間には反映されません。
結果
基本結果
検出したクラス:
この結果では、区別するクラスの名前が戻ります。戻されるクラス数は、パラメーター「検出したクラス数」によって異なります。クラス名は、文字列で戻ります。クラスが複数ある場合、最高信頼度のクラスを先頭に、個々の信頼度の値で整列されたタプルで戻ります。クラスの個々の信頼度と IDs は結果「信頼度」と「検出したクラス ID」で戻ります。
- 「検出したクラス」: [ginseng-crack, mint-crack, magnesium-crack]
- 「信頼度」: [1, 3.465148878945001e-08, 4.076762483151697e-09]
- 「検出したクラス ID」: [1, 7, 4]
例では、クラス ID が 1 で信頼度の値が 1 のクラス「ginseng-crack」が、おそらく現在の画像のクラス (画像のオブジェクト) であるという結果が出ました。次に可能性の高いクラスは、クラス ID が 7 で、信頼度の値が 3.465148878945001e-08.の「mint-crack」です。最も可能性の低いクラスは、クラス ID が 4 で信頼度の値が 4.076762483151697e-09 の「magnesium-crack」です。
信頼度:
この結果は、画像が区別したクラスのそれぞれに所属する可能性を表します。最高信頼度は 1 です。最高信頼度がクラスを獲得 (決定) します。たとえば、3 つの候補クラス [apple、banana、orange] があって、得られる信頼度の値が [0.7、0.2、0.1] のとき、現在の処理済み画像は、「apple」に分類されます。
ツール状態:
「ツール状態」はツール状態の情報を返します。したがって、エラー処理に使うことができます。さまざまなツールの状態結果の詳細については、 ツール状態 結果 のトピックを参照してください。
追加結果
ヒートマップ:
この結果は、分類で重要な際だった特徴を表す画像としてヒートマップを表します。
表示された画像:
この結果は、処理画像と異常ヒートマップの重ね合わせを表します。処理画像はヒートマップを通じて表示されるため、何が異常で、それが画像のどこで発生したかを確認できます。ただし、このヒートマップは、パラメーター「ヒートマップを表示」が 1 に設定してある場合のみ表示されます。「ヒートマップを表示」を 0 に設定すると、結果の画像では、ヒートマップなしの処理画像のみが戻ります。
検出したクラス ID:
この結果では、区別するすべてのクラスの ID が戻ります。整数タプルのエレメント数は、パラメーター「検出したクラス数」によって異なります。
すべてのクラス:
この結果では、選択した分類で定義した使用できるクラスの全ての名前が戻ります。
すべてのクラス ID:
この結果では、選択した分類で定義した使用できるクラスの全ての ID が戻ります。
トレーニング画像の幅:
この結果では、分類のトレーニングに使用した画像幅が戻ります。
トレーニング画像の高さ:
この結果では、分類のトレーニングに使用した画像高さが戻ります。
使用処理ユニット:
この結果は、最後の反復で使用された処理ユニットを返します。この結果を使用して、パラメーター「処理ユニット」が「自動」に設定されている場合にどの処理ユニットが実際に使用されたかを確認したり、正しい処理ユニットが使用されたことを確認したりできます。
精度データタイプ:
この結果は、ディープラーニングモデルの推論のための最適化に内部的に使用されたデータタイプを返します。この結果を使用して、問題が発生した場合に正しい精度が使用されたかどうかを確認できます。
パラメーター「精度」が「高」に設定されている場合、ディープラーニングモデルは「float32」の精度に変換する必要があります。したがって、この結果はデータタイプ「float32」を返すことが期待されます。パラメーター「精度」が「中」に設定されている場合、ディープラーニングモデルは「float16」の精度に変換する必要があります。この場合、この結果の期待値はデータタイプ「float16」です。MVApp の反復中に問題が発生した場合は、この結果が予想とは異なるデータタイプを返すかどうかを確認し、ログファイルで詳細を確認することもできます。ログファイルの詳細については、記録のトピックを参照してください
Out-of-Distribution スコア:
この結果では、トレーニングされたクラスとサンプルがどの程度異なっているかを示す値が戻ります。このスコアが高いほど、サンプルが「Out-of-Distribution」である可能性が高まります。「Out-of-Distribution しきい値」で定義したしきい値をスコアが超えている場合、サンプルは「Out-of-Distribution」と分類され、ツールに警告が表示されます。
この結果は、「Out-of-Distribution 検出」(OOD) 向けに拡張された分類子を使用する場合にのみ提供されます。OOD のない分類子を使用する場合は、この結果は空です。
処理時間:
この結果は、ツールの直近の実行の持続時間をミリ秒単位で返します。結果は、追加結果として提供されます。したがって、デフォルトでは非表示になっていますが、ツール結果の横にある ボタンを使用して表示できます。詳細については、ツールリファレンス概要の処理時間の節を参照してください。
アプリケーションの例
このツール、以下の MERLIC Vision App 例で使用します:
- classify_pills.mvapp
- classify_and_inspect_wood.mvapp