異常を検出
このツールでは、画像の異常を検出します。
このツールは、トレーニングモードとともに使用されます。 すなわち、最初のトレーニングは、異常のあるトレーニング画像と異常のないトレーニング画像の選択したサンプルと、特定のトレーニングパラメーターに基づいて行います。「不良」サンプル (異常を示す画像) 付きの画像のトレーニングは必要ありませんが、ディープラーニングモデルの強化に役立ちます。
ツールでは、ツールボード の左にトレーニングエリアが表示されます。このツールでは、異常検出の処理モードとディープラーニングモデルのトレーニングのトレーニングモード間を切り換えることができます。グラフィックスウィンドウには、現在有効なモードの画像が表示され、トレーニングエリアで青色にハイライトされます。左上の検索パラメータに加えて、このツールには、右上にトレーニング用のパラメータが表示されます。
トレーニングが必要なツールの使用方法の詳細については、トピックトレーニングモードの使用を参照してください。
ツールボード は、 の左側のトレーニングエリアと右側のグラフィックウィンドウに分割されます。
トレーニングパラメーター
トレーニングエリア
グラフィックウィンドウ
表示された画像
トレーニングセクションには、処理画像とトレーニング画像が表示されます。
- 処理画像: 前のツールから受け取った現在の「画像」。
- トレーニング画像: ディープラーニングモデルのトレーニングに使用する画像。トレーニング画像は、2 種類のサンプルタイプに使用できます: 異常がない画像用の「良」と異常がある画像用の「不良」。
トレーニング
トレーニング画像
モデルのトレーニングには、約 20 画像から 100 画像で十分です。トレーニング画像に含めるのは、「良」サンプル (異常のない画像) だけでもかまいません。ただし、「不良」サンプル (異常が示された画像) トレーのあるトレーニング画像は、ディープラーニングモデルの強化に役立ちます。
トレーニング画像として画像を追加するには、以下のステップに従います:
- トレーニング画像として使用する画像がツールに表れるまで「1 回実行」ボタンかショートカット F6 でアプリケーションを段階的に実行します。
-
ボタンをクリックするか、ショートカット F3 を使用して、トレーニング画像セットに現在の画像を追加します。
- 各トレーニング画像に目的のサンプルモードを設定します (「良」または「不良」など)。
- さらにトレーニング画像を追加するには、以上のステップを繰り返します。
トレーニングの実行
トレーニングは、以下のステップで実行します:
- それぞれのトレーニング画像のサンプルタイプを定義します:
- 「良」: 異常がない画像用
- 「不良」: 異常がある画像用
- 必要に応じてツールの右上のトレーニングパラメーターを手元のトレーニングデータに調整してください。
- ボタン「Apply training data」をクリックしてトレーニングを実施します。
トレーニング実行後、ツールは自動的に処理モードに切り替わり、トレーニングしたモデルが処理画像に正しく機能するか、検索パラメーターを調整する必要があるかを確認できます。
トレーニングデータを確認
トレーニングパラメーターは、定義したトレーニング画像に自動的に調整されます。左側の検索パラメーター「異常領域しきい値」と「異常スコアしきい値」も、トレーニング中に自動的に設定されます。
一連の画像にアプリケーションを実行すると、異常検出機能がトレーニングしたディープラーニングモデルでうまく機能しているかどうかをグラフィックスウィンドウでただちに確認できます。必要に応じて、トレーニングパラメータや検索パラメーターをさらに調整できます。
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² ディープラーニングを使用するツールのインターフェース のトピックを参照してください。
パラメーター
基本パラメーター
画像:
このパラメーターは、異常を検出する画像を表します。
ヒートマップを表示:
このパラメーター は、ヒートマップを表示するかどうかを定義します。ヒートマップは画像の異常を視覚的に表します。デフォルト設定は 1 です。その場合、ヒートマップはデフォルトで表示されます。このパラメーター を 0 に設定すると、ヒートマップは非表示になります。結果「表示された画像」で戻る画像にヒートマップが含まれるかどうかも、このパラメーターの値によって決まります。
追加パラメーター
処理領域:
このパラメーターは、処理する領域を定義します。ROI と「処理領域」の結合部分の外側にある画像部分は処理の対象外になります。また、そのどちらかが空の場合、他の一方の内部にある画像部分は処理されます。どちらも空の場合、画像全体が処理されます。
デフォルトで、「処理領域」は空の領域として定義されます。「処理領域」を指定するには、領域が現在のツールに渡されるよう、パラメーターを前のツールの適切な領域結果に接続します。
ROI:
このパラメーターは、処理用の関心領域 (ROI) を定義します。ROI と「処理領域」の結合部分の外側にある画像部分は処理の対象外になります。 また、そのどちらかが空の場合、他の一方の内部にある画像部分は処理されます。どちらも空の場合、画像全体が処理されます。
デフォルトで、「ROI」は空 ROI として定義されます。空でない ROI を処理に使用する場合は、前のツールの適切な ROI 結果にパラメーターを接続するか、使用可能な ROI ボタンで新しい ROI を画像に描画します。
異常領域しきい値:
このパラメーターは、画像のピクセルが異常に属するものかどうかを示すしきい値を定義します。パラメーターの設定値はデフォルトで 0.5 です。最適なしきい値はトレーニングの間に決まります。ただし、ディープラーニングモデルによって設定されたしきい値が最適でない場合、このパラメーターである程度の微調整は可能です。
異常スコアしきい値:
このパラメーターは、画像を異常画像とみなす基準となるしきい値を定義します。パラメーターの設定値はデフォルトで 0.5 です。最適なしきい値はトレーニングの間に決まります。ただし、ディープラーニングモデルによって設定されたしきい値が最適でない場合、このパラメーターである程度の微調整は可能です。
結果「異常スコア」がパラメーター「異常スコアしきい値」で設定されている値より大きい場合、結果「検出した異常」は 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 つしかサポートしない処理ユニットもいくらかあります。この場合、パラメーター「処理ユニット」でそれぞれのデバイスが選択されるとすぐに、サポートされている精度のみがパラメーターで使用可能になります。処理ユニットが自動的に選択される場合、つまり「処理ユニット」が「自動」に設定されている場合、精度「高」のみが使用可能になります。
トレーニングパラメーター
基本トレーニングパラメーター
トレーニング画像の幅:
このパラメーターは、トレーニングに使用する画像の幅を定義します。このパラメーターの設定値はデフォルトで 480 px です。トレーニングの処理速度を上げるには、画像の幅をダウンスケールします。
このパラメーターは 32 の倍数に設定する必要があります。
トレーニング画像の高さ:
このパラメーターでは、トレーニングに使用する画像の高さを定義します。このパラメーターの設定値はデフォルトで 480 px です。トレーニングの処理速度を上げるには、画像の高さをダウンスケールします。
このパラメーターは 32 の倍数に設定する必要があります。
ピクセルの割合:
このパラメーターは、トレーニングに使用する画像の断片を定義します。パラメーターの設定値はデフォルトで 0.25 です。その場合、トレーニング画像のピクセルの 25% がトレーニングに使用されます。値を増やせばトレーニング結果は改善されるかもしれませんが、トレーニング時間が長くなります。
追加トレーニングパラメーター
モデルサイズ:
このパラメーターは、トレーニングに使用するプレトレーニングしたモデルを定義します。デフォルトでは「中」が選択されます。このパラメーターは「large」に設定して、大型モデルを使用することもできます。ただし、常にデフォルトモデルで開始し、「large」モデルを使用するのは、「中」モデルによるパフォーマンスに納得ができない場合に限定してください。これらの 2 つのモデルの主な違いは、必要なメモリサイズと実行時間です。
画像の複雑さ:
このパラメーターは、複雑な画像を扱うモデルの能力を記述します。パラメーターの設定値はデフォルトで 15 です。値が大きいほど、パフォーマンスが向上しますが、モデルをトレーニングする時間が長くなります。
最大エポック数:
このパラメーターは、フルトレーニングデータセットによるトレーニングサイクルの最高数を定義します。パラメーターの設定値はデフォルトで 15 です。トレーニングパラメーター「トレーニングエラーしきい値」で指定したエラーしきい値に早い段階で達した場合、トレーニングは終了します。
トレーニングエラーしきい値:
このパラメーターは、トレーニングの終了条件です。パラメーターの設定値はデフォルトで 0.001 です。指定したエラーしきい値よりも下でトレーニングエラーになると、ただちにトレーニングは終了します。トレーニングエラーは、トレーニングの結果としても戻ります。
レギュラリゼーションノイズ:
ロバスト性を強化するためのトレーニング調整のためにこのパラメーターを設定できます。パラメーターの設定値はデフォルトで 0.0 です。この場合、調整は行われません。トレーニングが失敗した場合は、設定値を高くするとうまくいく場合があります。
結果
基本結果
異常領域:
この結果は、異常とみなされるすべてのピクセルで構成された領域を表します。
検出した異常:
この結果は、画像に異常があるかないかを表します。画像に異常がある場合の結果の値は 1 です。それ以外の結果の値は 0 です。
異常スコア:
この結果は、画像全体に異常がある可能性の度合いを表します。
ツール状態:
「ツール状態」はツール状態の情報を返します。したがって、エラー処理に使うことができます。さまざまなツールの状態結果の詳細については、 ツール状態 結果 のトピックを参照してください。
追加結果
使用処理ユニット:
この結果は、最後の反復で使用された処理ユニットを返します。この結果を使用して、パラメーター「処理ユニット」が「自動」に設定されている場合にどの処理ユニットが実際に使用されたかを確認したり、正しい処理ユニットが使用されたことを確認したりできます。
精度データタイプ:
この結果は、ディープラーニングモデルの推論のための最適化に内部的に使用されたデータタイプを返します。この結果を使用して、問題が発生した場合に正しい精度が使用されたかどうかを確認できます。
パラメーター「精度」が「高」に設定されている場合、ディープラーニングモデルは「float32」の精度に変換する必要があります。したがって、この結果はデータタイプ「float32」を返すことが期待されます。パラメーター「精度」が「中」に設定されている場合、ディープラーニングモデルは「float16」の精度に変換する必要があります。この場合、この結果の期待値はデータタイプ「float16」です。MVApp の反復中に問題が発生した場合は、この結果が予想とは異なるデータタイプを返すかどうかを確認し、ログファイルで詳細を確認することもできます。ログファイルの詳細については、記録のトピックを参照してください
処理時間:
この結果は、ツールの直近の実行の持続時間をミリ秒単位で返します。結果は、追加結果として提供されます。したがって、デフォルトでは非表示になっていますが、ツール結果の横にある ボタンを使用して表示できます。詳細については、ツールリファレンス概要の処理時間の節を参照してください。
ヒートマップ:
この結果は、異常を視覚的に示す画像としてヒートマップを表します。
表示された画像:
この結果は、処理画像と異常ヒートマップの重ね合わせを表します。処理画像はヒートマップを通じて表示されるため、何が異常で、それが画像のどこで発生したかを確認できます。ただし、このヒートマップは、パラメーター「ヒートマップを表示」が 1 に設定してある場合のみ表示されます。「ヒートマップを表示」を 0 に設定すると、結果の画像では、ヒートマップなしの処理画像のみが戻ります。
トレーニング結果
基本トレーニング結果
トレーニングエラー:
この結果は、トレーニング中に受け取った最高のエラーを戻します。
追加トレーニング結果
異常領域しきい値外:
この結果は画像内の異常領域の決定に必要なしきい値を戻します。結果の値は、処理ステップの入力パラメーター「異常領域しきい値」でもあります。
異常スコアしきい値外:
この結果では、画像を異常画像とみなすかどうかを決定するしきい値が戻ります。結果の値は、処理ステップの入力パラメーター「異常スコアしきい値」でもあります。
アプリケーションの例
このツール、以下の MERLIC Vision App 例で使用します:
- detect_anomalies_of_bottles.mvapp
- classify_and_inspect_wood.mvapp