• 検索結果がありません。

DoG2

ドキュメント内 GPGPUによる高速画像処理 (ページ 107-124)

SIFT のアルゴリズム( 2 )

DoG

画像の作成

(Difference-of-Gaussian)

特徴点の検出

エッジ上の点を削除

サブピクセル位置推定 コントラストの

小さい点を削除

SIFT のアルゴリズム( 3 )

オリエンテーションの 算出

特徴ベクトルを算出

周辺領域の勾配方向と強度から

オリエンテーションを算出

デモ( SIFT )

SIFT の実装方法

 さまざまなスケールにおける DoG 計算

高速なガウシアンフィルタを利用

 キーポイント検出

各画素で独立に判定可能

 GPU

による並列計算が可能

判定に

26

近傍の画素値が必要

 3

次元テクスチャを利用できるか?

テクスチャサイズの制限から利用は困難

 2

次元テクスチャで代用

 オリエンテーションの算出

各キーポイントで独立に計算可能

処理の流れ

CPU

GPU

CPU

CPU GPU

GPU CPU

GPU

キーポイント

DoG

画像 オリエンテーション

入力画像

CPU

GPU

GPU CPU

SIFT 計算におけるメモリ配置

 複数スケールの DoG 画像をテクスチャ 1 枚に配置

ミップマップ

を構築

 DoG

画像の出力先をソフトウェア的に調整

1 1

1 2

1 4

1 8

・・・

・・・

CUDA

は未サポート

計算時間の比較( 1 )

 CPU と GPU で計算時間を評価

 SIFT

特徴量としてオリエンテーションを計算

 使用計算機

 CPU: Intel Core2 Quad Q9550

2.83 GHz

 4

スレッドで並列計算

 GPU: NVIDIA GeForce GTX280

マルチプロセッサ数

: 30

SP

= 30

×

8 = 240

 Memory

1.0 GB

 OS

Windows Vista SP1

 実験パラメータ

画像サイズ:

50 2

1000 2

画素

 σ 0

1.6

,分割数:

3

0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100

50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000

計算時間の比較( 2 )

画像サイズ

N 2

[msec.]

計算時間(

N 2 = 600 2

の場合)

CPU : 458.0 msec.

GPU : 10.2 msec. (

×

44.9)

2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

CPU

GPU

デモ( SIFT )

まとめ( SIFT )

 テクスチャメモリとコンスタントメモリの利用

キャッシュを利用したメモリアクセスの高速化

 ミップマップを構築

複数スケールの

DoG

画像を

1

枚のテクスチャに格納

 CPU と GPU で計算時間を比較

N 2 = 600 2 の場合

 CPU: 458.0 msec.

 GPU: 10.2 msec.

約 44 倍の高速化を実現

~ GPGPU による高速画像処理に挑戦して~

GPGPU への挑戦を終えて

 CUDA を利用することで容易に GPGPU が可能

スレッドプログラミングの経験があれば非常に簡単

既存プログラムの移植も比較的容易

 Thrust ライブラリによる簡単な GPGPU

 GPU

を意識せずにプログラミングが可能

 GPU を使うと 10 倍以上の高速化が可能?

多くの画像処理アルゴリズムは高速化が可能

空間フィルタリング,局所特徴量計算,他

逐次型の画像処理アルゴリズムは高速化が困難

ラベリング,細線化,他

GPGPU の問題点と今後の展望

 複数 GPU の利用

GPU

上で別々に処理を実行

 CUDA 4.0

は単一

CPU

スレッドから複数

GPU

を利用可能

 CPU との連携

 GPU

の苦手な処理を

CPU

で計算

 CPU

GPU

の役割分担が重要

 高性能な GPU が登場

リアルタイム画像処理(大規模計算)への挑戦

 GPGPU 開発環境の標準化( OpenCL )

参考文献

[1] M. J. Harris, G. Coombe, T. Scheuermann, and A. Lastra, “Physically-Based Visual Simulation on Graphics Hardware,” Proceedings of

SIGGRAPH 2002 / Eurographics Workshop on Graphics Hardware 2002, pp.1-10, 2002.

GPGPU

の起源が書かれている論文)

[2] J. D. Owens, D. Luebke, N. Govindaraju, M. Harris, J. Krüger, A. E.

Lefohn, and T. J. Purcell, “A Survey of General-Purpose Computation on Graphics Hardware,” Computer Graphics Forum, Vol.26, No.1, pp.80-113, 2007.

(最近の

GPGPU

が詳しく述べられている論文)

[3] “GPGPU,” http://gpgpu.org/

[4] “CUDA ZONE,” http://www.nvidia.com/object/cuda_home.html [5] “CUDA Programming Guide,”

http://www.nvidia.com/object/cuda_develop.html

[6] “OpenCL,” http://www.khronos.org/opencl/

MIST M edia I ntegration S tandard T oolkit

 複数メディアを扱うためのライブラリ

音声・画像処理のアルゴリズムを多数実装

 C/C++

を用いた高速な処理を実現

 C++

のテンプレートを用いた汎用的な実装

複数のプラットフォームで動作

充実した日本語チュートリアルを用意

 オープンソースとして公開中

 BSD

スタイルのライセンス

商用の製品開発でも利用可能

http://mist.murase.m.is.nagoya-u.ac.jp/

~ Visual Studio 2010 の詳細設定~

※ CUDA Toolkit 4.0 以降

Visual Studio 2010 の簡易設定( 1 )

 “.cu” ファイルの簡易コンパイル設定

プロジェクトメニューのビルドのカスタマイズを表示

ドキュメント内 GPGPUによる高速画像処理 (ページ 107-124)

関連したドキュメント