5

私は、iPhone で GrabCut アルゴリズム (OpenCV に実装されている) をいじっています。パフォーマンスは恐ろしいです。約 800x800 の画像の場合、シミュレーターでも実行に約 10 ~ 15 秒かかります。私の電話では、数分間実行され、最終的にメモリ不足になり、クラッシュします (iPhone 4)。独自のバージョンのアルゴリズムを C で作成すれば、最適化できる可能性はあると思いますが、どの程度の最適化を行っても、それを使用可能な状態に近づけることはできないと感じています。いくつかの学術論文でいくつかのパフォーマンス測定値を掘り下げましたが、マルチコア 1.8 GHz CPU で 30 秒のランタイムが見られました。

したがって、私の唯一の希望は、文字通り何も知らない GPU です。これまで OpenGL ES についていくつかの基本的な調査を行ってきましたが、これは非常に詳細なトピックであり、基本的な概念を学習するために何時間も何日も無駄にしたくありません。正しい道。

だから私の質問は2つあります:

1) GPU で GrabCut のようなものを実行できますか? もしそうなら、「OpenGL ESを学ぶ」以外の出発点が欲しいです。理想的には、特に注意を払う必要がある概念を知りたいです。私は OpenGL の経験がなく、画像処理の経験もほとんどないことに注意してください。

2) このタイプのアルゴリズムが GPU で実行できる場合でも、どのようなパフォーマンスの向上が期待できますか? 現在のランタイムが CPU で最適な状態で約 30 秒であることを考慮すると、GPU がアルゴリズムを有用にするのに十分なほど大きな影響をランタイムに与える可能性は低いと思われます。

編集:アルゴリズムが「有用」であるためには、10秒以内に実行する必要があると思います。

前もって感謝します。

4

1 に答える 1

2

グラブカットは画像解像度の恩恵を受けていないようです。これは、結果の品質が入力画像の品質に直接依存しないことを意味します。一方、パフォーマンスはサイズから恩恵を受けます。つまり、画像が小さいほど、カットアウトを実行するアルゴリズムが高速になります。そのため、画像を 300x300 に縮小し、グラブカットを適用し、マスクを取り出し、マスクを元のサイズに拡大し、マスクを元の画像に適用して結果を取得します。それが機能するかどうか教えてください。

ルカ

于 2013-10-21T23:29:28.773 に答える