情報を抽出するためにビデオの各フレームを頻繁に処理する必要があります。OpenCV - 私のLANの別のホストでビデオの各フレームを処理する方法は?
処理を高速化するために、自分のPCをローカルネットワークで使用したいと考えています。
私のLANの別のホストで各フレームを処理できる分散システムをインストールするにはどうすればよいですか?
情報を抽出するためにビデオの各フレームを頻繁に処理する必要があります。OpenCV - 私のLANの別のホストでビデオの各フレームを処理する方法は?
処理を高速化するために、自分のPCをローカルネットワークで使用したいと考えています。
私のLANの別のホストで各フレームを処理できる分散システムをインストールするにはどうすればよいですか?
オープンソース(特定の要件におそらく適合するSwarm、DistCC、IceCreamなど)やIncrediBuildなどの商用汎用分散コンピューティングプラットフォームであれ、今日利用可能なさまざまな分散プラットフォームを見てみることができますリモートノードでの配布とプロセスの仮想化を気にする必要があります(おそらく、コードを変更したり変更する必要はありません)。 IncrediBuildでこれを行う方法についてのあなたの後の質問に続いて
:C/C++でのOpenCVを使用するたびに
、あなたが最も分配\クラスタシステムによる要件である(マルチプロセス方式でコードを書くことができます)。 これを実行すると、IncrediBuildはネットワーク経由でリモートマシンに配布することで、プロセスの実行を高速化できます。 IncrediBuildは、ネットワーク上のリモートマシンにプロセスをシームレスに配布し、適切に使用するために、複数のプロセスを並列に実行できるようにする必要があります(複数のプロセスを実行するバッチスクリプトか、並列処理) - IncrediBuildは、これらのプロセスを実行し、それらをリモートで実行することができます。 複数のプロセスを並列に実行するバッチスクリプトを含む小さなサンプルを追加します。各プロセスは、ビデオファイルの単一フレームをキャプチャしてイメージファイルとして保存するプログラムです。このシナリオを、マシンとリモートホストマシンを使用して並列に実行される多くのプロセスで実行した結果、ローカルコアとリモートマシンのコアの両方を使用してプロセスが並列に実行されました。 サンプルプロセスのソースと実行可能ファイルは、次の場所からダウンロードできます。 https://github.com/adish869/CaptureFrames IncrediBuild監視アプリケーションの印刷画面ファイルを配置して、OpenCVプロセスが両方のマシンで同時に実行されていることを示しました。 ReadMe.txtファイルでコマンドを実行する方法の詳細を参照できます。
免責事項、この回答者はIncrediBuildで動作します。
分散処理システムを計画する際に考慮すべき重要なトレードオフは、待ち時間とスループットです。
ほとんどの既存の分散プラットフォームは、待ち時間の延長でより高いスループットに最適化されています。
システムが大容量のビデオファイルを使用し、最終的に出力を生成する必要がある場合は、スループットを最適化する必要があり、分散処理プラットフォームの既存のソリューションを選択できます。 (私は意図的に特定のブランドの宣伝を避ける)。
システムがビデオストリームを受け取り、別のビデオストリームをリアルタイムかつ低レイテンシで出力する必要がある場合は、既存の製品を使用しないでください。
ありがとうございます。私はOpenCVの専門家ですが、分散コンピューティングではありません。それは良い答えですが、初心者は既存のプラットフォームとアプローチを認識していません。存在するさまざまなメソッドとツールを明示的に指定できました。私はopencv開発者の多くがそれを感謝すると確信しています。 – ProEns08
次に、ネットワークノードにクラスタソフトウェアをインストールし、openMPI、mapReduceなどのAPIや、必要に応じたその他の分散プログラミングAPIを学びたいと考えています。 –
ありがとうございます。 IncrediBuildでこれを可能にする方法は? – ProEns08
私はIncrediBuildを使ってOpenCVプロセスを加速し、配布する方法についてのあなたの質問に答えるために私の元の投稿を拡張しました。私はまた、リモートマシンの追加のコアを利用してIncrediBuildでOpenCV処理を加速する方法を示すサンプルへのリンクを追加しました – Dori
ありがとう、追加のヒント。 – ProEns08