私は約300万の画像を持ち、それぞれにヒストグラムを計算する必要があります。今は、私はPythonを使用していますが、それは多くの時間を費やしています。バッチで画像を処理する方法はありますか?私はNVIDIA 1080 Ti GPUカードを持っているので、GPUで処理する方法があれば?画像の計算ヒストグラムをより速く
画像を並行処理するコードやライブラリが見つかりません。
私は約300万の画像を持ち、それぞれにヒストグラムを計算する必要があります。今は、私はPythonを使用していますが、それは多くの時間を費やしています。バッチで画像を処理する方法はありますか?私はNVIDIA 1080 Ti GPUカードを持っているので、GPUで処理する方法があれば?画像の計算ヒストグラムをより速く
画像を並行処理するコードやライブラリが見つかりません。
Pythonは、あなたが使用できる最も遅い生産準備言語の1つです。
コードを投稿していないので、私は一般的な提案しかできません。
としてより高速な言語を使用して計算
サンプルの使用は次のようになります。
from multiprocessing import Pool
pool = Pool()
results = pool.map(create_histogram, images)
このアプローチは有望です。しかし、ヒストグラム計算以外の画像処理を行っています。私はボトルネックと思われるように上記の方法でヒストグラム部分だけを実行したい。実行が 'Pool'に入るとすぐに、さまざまなスレッドでコード全体が実行されるようです。 –
あなたはこれまでにしようとしているので、それは良いかもしれないものを言うのは難しいです何を言っていません。アプリケーションによっては、おそらくnp.histogramの代わりに 'np.bincount'を使うことができます。これは、任意の浮動小数点数や任意の範囲のビニングを実行しないため、はるかに高速です。また、実際のヒストグラム計算がボトルネックであり、I/Oなどではないことを確認しましたか? – user8153
これまでのところ、私の質問で述べたようにforループを使用していました。各画像に対して 'numpy.histogram'を呼び出します。クエリの2番目の部分については、ヒストグラム計算がボトルネックです。私はヒストグラム計算と一緒にいくつかの他の処理をしています。ヒストグラムの部分をコメントアウトすると、コードは正常に実行されます。 –
'np.histogram'はこの特定のタスクにとって不必要に遅いです。私のラップトップでは 'np.bincount'は約5倍高速です。 OpenCVにはヒストグラム機能もあります(私はそれを試していません)。 [Here](http://docs.opencv.org/trunk/d1/db7/tutorial_py_histogram_begins.html)は、3つの方法すべての例です。 – user8153