アプリケーション設定

次の表では、ランタイムのパフォーマンスを高速化させることができるアプリケーション設計の特性の要約を説明します。パフォーマンスを向上させるアプリケーション設計を選択すると、一般的に、システムの動作に対する影響が最小限で済みます。

設計パターン 高速化する理由 ベストバリューオプション 注意事項...

ストリームあたり少ない数のツールを使用します。

単一の Deep Learning ツールの処理時間が、ツールが返す情報の量によって大幅に変わりません。

たとえば、100 の異なる特徴を検出するように学習させた単一の青ツールは、単一の特徴のみを検出するように学習させたツールと同じ速度で実行されます。さらに、返される特徴の数により、最小限の速度の差異のみが生じます。

同様に、赤ツールは、検出される欠陥の数に関係なく同じ速度で実行され、緑ツールは同じ速度で 2 つのクラスでも 200 のクラスでも分類することができます。

単一のツールでアプリケーションの構築を開始します。

 

画像変換を避けます。

ツールの操作時に、ニューラルネットワークによって処理のため画像をサンプリングする必要があります。このサンプリングは、ビットマップなどのラスター (非圧縮) 形式の画像を必要とします。この変換を実行するには、時間がかかります。

同様に、ツールがシングルチャネル (グレースケール) 画像を入力として使用するように設定されているが、指定された画像がマルチチャネルのカラー画像である場合、輝度値をランタイム時に画像ごとに計算する必要があります。

シングルチャネルのグレースケールの画像を使用するアプリケーションの解決を試みます。

アプリケーションによっては、色の情報を必要とします。

処理済みのデータ量を減らします。

処理済みのデータ量を減らすには、次のことを行います。

  • 少ない ROI を使用する
  • マスクを使用する
  • 可能な限り少ない画像チャネルを使用する

これらを行うことにより、処理されるデータの合計量を減らすことで、処理速度を向上させることができます。

ROI を制限します。

VisionPro Deep Learning ツールが適切に動作するには、コンテキスト情報を必要とするため、ROI を制限しすぎないようにします。

通常、ダウンサンプリング (サンプリング密度パラメータによって設定) は必要ありません。より大きいな特徴サイズを選択することで、速度を向上させることができ、ランタイムのダウンサンプリングの必要性をなくすことができます。

複数の GPU の使用

複数の GPU を持つシステムでは、複数のストリームを同時に処理すると、ツールを平行実行させることができ、スループットが増加します。

Note: 複数の GPU を使用すると、複数のストリームで複数のツールを並行して学習させ、処理することができます。詳細については、「複数 GPU の設定」を参照してください。

単一の GPU システムでは、複数のプロセスで同じ GPU を使用できるようにシステムを設定することができます。これにより、より高い GPU 占有率が実現し、スループットを向上できますが、ツールの実行時間が長くなります。

--max-process-count コマンドライン引数を使用して、複数のスレッドが単一の GPU にアクセスできるようにします。

マルチプロセス GPU がランタイムアプリケーションにアクセスできるようにするには、ローカルコントロールの GlobalConfig() メソッドを使用します。

control.GlobalConfig("max_process_count=2");

各ツールの処理時間が長くなります。

C++ (アンマネージド)

アンマネージド言語環境を使用すると、システム活動によるツール実行への影響が減ります。

低レイテンシ、高パフォーマンス向けアプリケーションでは、Cognex Designer を使用しないでください。

Windows はリアルタイムオペレーティングシステム (RTOS) ではありません。

 

開発に関する一般的なヒント

これらのトピックは、VisionPro Deep Learning アプリケーションの開発時に従うと役立ついくつかのヒントとコツを提供します。

VisionPro Deep Learning アプリケーションの開発時には、次のヒントを考慮してください。

  • ツールのクローンを作成して、ツールの A と B の比較を行います。

    ツールのクローンを作成することで、パラメータを変更して再学習し、オリジナルをクローンと比較して、ツールパラメータの変更の影響を確認することができます。

  • ストリームのクローンを作成して、画像セットのテストを実行します。

    テストに使用する画像のバッチが大量にあるが、データベースを乱したくない場合は、ストリームのクローンを作成し、その画像をクローンに追加します。次に、現在のツールの状態を処理してテストすることができます。完了したら、クローンを作成したストリームを削除します。

  • ツールをごまかすために重複する画像を追加しないでください。

    これにより、モデルに悪影響を及ぼします。代わりに、特定の画像の学習の重みを増やす場合は、High Detail モードで分類 (緑) ツールの [クラスの重み] オプションを使用します。

  • 「ブートストラップ」のラベル付けを実行します。

    「ブートストラップ」のラベル付けとは、画像の少ないサンプル数にラベルを付けてツールを学習させ、正しいマーキングのあるビューを受け入れてラベルに変換して結果を確認し、誤ったマーキングを削除して正しいラベルに置き換えることでラベル付けプロセスを開始するプロセスを指します。このプロセスをさらに高速化するには、画像を複数のビューに分割し、単一のビューにのみラベルを付けます。さらに、[エポック数] パラメータ (学習機能ツールのパラメータのいずれか) を一時的に減らすこともできます。これにより、学習時間が短くなります。