# アプリケーション設定

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

設計パターン | 高速化する理由 | ベストバリューオプション | 注意事項...
--- | --- | --- | ---
ストリームあたり少ない数のツールを使用します。 | 単一の ViDi ツールの処理時間が、ツールが返す情報の量によって大幅に変わりません。 たとえば、100 の異なる特徴を検出するように学習させた単一の青ツールは、単一の特徴のみを検出するように学習させたツールと同じ速度で実行されます。さらに、返される特徴の数により、最小限の速度の差異のみが生じます。 同様に、赤ツールは、検出される欠陥の数に関係なく同じ速度で実行され、緑ツールは同じ速度で 2 つのクラスでも 2000 のクラスでも分類することができます。 | 単一のツールでアプリケーションの構築を開始します。 |
画像変換を避けます。 | ツールの操作時に、ニューラルネットワークによって処理のため画像をサンプリングする必要があります。このサンプリングは、ビットマップなどのラスター (非圧縮) 形式の画像を必要とします。この変換を実行するには、時間がかかります。 同様に、ツールがシングルチャネル (グレースケール) 画像を入力として使用するように設定されているが、指定された画像がマルチチャネルのカラー画像である場合、輝度値をランタイム時に画像ごとに計算する必要があります。 | シングルチャネルのグレースケールの画像を使用するアプリケーションの解決を試みます。 | アプリケーションによっては、色の情報を必要とします。
処理済みのデータ量を減らします。 | 処理済みのデータ量を減らすには、次のことを行います。 少ない ROI を使用する マスクを使用する 可能な限り少ない画像チャネルを使用する これらを行うことにより、処理されるデータの合計量を減らすことで、処理速度を向上させることができます。 | ROI を制限します。 | ViDi ツールが適切に動作するには、コンテキスト情報を必要とするため、ROI を制限しすぎないようにします。 通常、ダウンサンプリング (サンプリング密度パラメータによって設定) は必要ありません。より大きいな特徴サイズを選択することで、速度を向上させることができ、ランタイムのダウンサンプリングの必要性をなくすことができます。
マルチスレッドを使用します。 | 複数の GPU を持つシステムでは、複数のストリームを同時に処理すると、ツールを平行実行させることができ、スループットが増加します。 単一の GPU システムでは、複数のプロセスで同じ GPU を使用できるようにシステムを設定することができます。これにより、より高い GPU 占有率が実現し、スループットを向上できますが、ツールの実行時間が長くなります。 | --max-process-count コマンドライン引数を使用して、複数のスレッドが単一の GPU にアクセスできるようにします。 マルチプロセス GPU がランタイムアプリケーションにアクセスできるようにするには、ローカルコントロールの GlobalConfig() メソッドを使用します。
    control.GlobalConfig("max_process_count=2");
| 各ツールの処理時間が長くなります。
C++ (アンマネージド) | アンマネージド言語環境を使用すると、システム活動によるツール実行への影響が減ります。 | 低レイテンシ、高パフォーマンス向けアプリケーションでは、Cognex Designer を使用しないでください。 | Windows はリアルタイムオペレーティングシステム (RTOS) ではありません。