3 次元画像計測分野での GPU を 用いた高速化事例 関口尚大, 三浦衛, 高橋徹, 青木孝文 東杜シーテック 東北大学大学院情報科学研究科 1
画像処理 GPGPU 関連事業製品組込みシステムソリューションカーナビ カーオー CUDA & OpenCL 最新画像処理技術ディオ 車載電装分ソリューション 画像処理の研究開発と 組込技術 野のソフトウェア開発その実用化 MATLAB/Simlinkを組み合わせで新たな価値の創造を目指しています HMPP ( 協力 : 東北大学ソリューション用いたモデルベース青木孝文教授 ) 開発 GPGPU 組込技術 の 2
弊社紹介 東北大学青木孝文教授画像処理 GPUによる高速化ご指導ご協力 東杜シーテック HMPP/GPGPU 開発 サポート画像処理ソリューション 画像計測 &GPU 業務提携 HMPP for GPU JCCギミック HMPP の販売導入コンサルティング 代理店契約 CAPS Entreprise HMPP 開発 販売元本社 : フランスレンヌ市 HPC 分野 3
発表内容 画像による 3 次元計測技術について 位相限定相関法を用いた 3 次元顔復元と GPU によるリアルタイム化 ( 三浦衛 ( 東北大 ) 東杜シーテック ) 多視点画像からの3Dモデル復元とGPUによる高速化 ( 東杜シーテック 高橋徹 ( 東北大 )) 画像計測への GPU コード自動生成ツール HMPP の適用事例 ( 東杜シーテック JCC ギミック ) 4
画像による3次元計測技術について
3 次元計測技術 物体の形状や空間の構造を計測する技術 工業検査 位置合わせ 医療 CT 検査 MRI 検査 芸術デジタルアーカイブ バイヨン寺院デジタルアーカイブ化 FA 装置 X 線 CT 装置 (COGNEX) ( 東芝 ) プロジェクト [1] [1] K. Ikeuchi, et al., Bayon digital archival project, Proceedings of Virtual Systems and Multimedia 2004, pp. 334-343.
3 次元計測手法の分類 能動型計測法 レーザや構造光を投影 精度に優れる 測定範囲に制限 高価で複雑なシステム 受動型計測法 カメラ画像を用いる 精度が低い 測定範囲が広い 安価で簡便なシステム 3 次元人体計測装置 (Cyberware) カメラと計算機
画像計測と GPGPU 計測 CG 実画像 3D モデル CG 画像計測は CG 処理の逆問題で難しい部分もあるが多くの計算で処理の並列化が可能 演算量が多大なため GPGPU による高速化が期待されている 8
ステレオビジョンに基づく受動型 3 次元計測 三角測量の原理に基づく計測 ステレオ画像の対応付けが処理の大部分を占める ステレオ画像の対応付け精度が重要 左カメラ レンズ中心 基準点 m (u, v) O Y Z X v u 左カメラ画像 M (X, Y, Z) 右カメラ画像 カメラ間距離 B 右カメラ O レンズ中心 対応点 m (u, v ) ステレオカメラ
画像間の対応付け テンプレートマッチング 標準テンプレート サンプル画像 入力テンプレート 比較 切り出し 探索画像 相違度 or 類似度 切り出し zテンプレート位置を少しずつずらしながら比較 データに局所性がある デ タに局所性がある zサブピクセル単位での切り出しには 補間が必要 テク チ メ リと 相性が良 テクスチャメモリとの相性が良い
位相限定相関法を用いた3次元顔復元と GPUによるリアルタイム化 三浦衛(東北大), 東杜シーテック
位相限定相関法 (POC) を利用した 3D 計測 位相限定相関法とは 1/100ピクセルレベルの高精度画像照合 フーリエ変換を多用するため計算量が多い GPGPU により処理時間を短縮しリアルタイム復元を実現 ステレオ画像撮影 位相限定相関法と粗密探索を使用した視差導出 視差を利用した 3D 計測
位相限定相関法 (Phase-Only Correlation: POC) 画像の位相成分のみに着目した画像マッチング手法 画像間の平行移動量を 1/100 ピクセル以下の誤差で推定可能 フーリエ振幅変換 位相限定相関関数 (POC 関数 ) r ( n 1, n ) ˆ 2 Image 1 位相 Image 2 フーリエ変換 振幅 位相 n n 1 2 ピークの座標 = 画像間の平行移動量 13
粗密探索と POC によるステレオ画像の対応付け 画像ピラミッドを用いた粗密探索 探索ウィンドウ間の平行移動量を POC で計算 低解像度画像大まかに対応点を求める 基準点 m (u, v) POC によるマッチング, 対応点 m (u, v ) POCによるマッチング 高解像度画像より正確に対応点を求める 左カメラ画像 右カメラ画像 14
ステレオ画像の対応付けにおける並列性 基準点毎に独立 : 基準点毎に並列処理が可能 基準点毎に処理を SM に分配 SM SM SM SM Texture Memory Global Memory SP SP SP SP SP SP SP SP Shared Memory 画素毎に処理を SP に分配 15
ステレオ画像の対応付け処理時間の計測 処理時間 [ms] 400 300 200 100 0 433.7 CPU(1コア ) CPU(4コア,8スレッド) GPU 222.9 121.6 53.7 68.5 23.1 6.7 20.2 32.5 1,000 点 5,000 点 10,000 点 CPU: Intel Core i7 975 Extreme (3.33GHz) GPU: NVIDIA GeForce GTX 480 (SP: 480 基 ) 画像サイズ : 1,280 960 画素 探索ウィンドウ : 64 9 画素 階層数 : 4 16
応用 : 顔の3 次元計測 画像の撮影 ( ステレオカメラ ) 顔検出, 基準点の配置ステレオカメラ計測対象 (OpenCV) ステレオ画像の対応付け (GPU) 3 次元座標の計算 (CPU) 計測結果 3 次元点群の表示 (OpenGL) 17
計測結果 約 11,000 点を 31.3ms で計測 18
多視点画像からの3Dモデル復元と GPUによる高速化 高橋徹 東北大, 東杜シーテック
多視点ステレオの考え方 ステレオ法による3 次元計測では 2 視点からの視線の交点を求める 奥行き方向に誤差が含まれても除去できない より多くの視点を利用することで奥行き方向の曖昧さを解消する Surface Object
多視点復元の概要 様々な方向から撮影した画像から 3Dモデルを復元 1. 複数の 度から物体を撮影 2. 近くの画像同 で 3 次元復元 3. 復元結果を統合 多視点復元評価用画像セット : http://vision.middlebury.edu/mview/data/
マルチベースラインステレオ法 参照画像 Rの深度マップを作成する 奥行きを変化させながら, 各視点の画像に投影 画像に投影した点を中心にウィンドウを開き, マッチングを行い, 類似度 ( 相違度 ) の合計を算出 d ( X, Y, Z) 全ての視点において, カメラパラーメータが既知メ R p = ( x, y) R: 参照画像 C: 近傍の画像 C 3 C 1 C 2 評価関数として 正規化相互相関法を使用
多視点 3D 復元処理のスレッド化 Start d=-0.15, 0.15, 0.0005 y=0, height, 1 480 j=0, 3, 1 x=0, width, 1 640 テンプレート画像深度 dの探索の切り出し 600 4 x y End 参照画像の1ピクセル毎に深度 dを探索し これをGPUの1スレッドとする テンプレートマッチング j 深度 dの選択 d 23
処理時間比較 [sec] 350 300 250 200 150 100 50 304.6 1/179 1/160 1.9 1.7 使用している画像 参照画像 :1 枚近傍画像 :4 枚サイズ : 640 x 480 0 Intel Core i7-930 TeslaC1060 Geforce GTX480 環境 OS :Ubuntu9.04 64bit CUDA: 3.0 gcc : 4.3.3 テクスチャメモリのキャッシュと線形補間の効果が高い
多視点3次元復元への GP 用自動 GPU用自動コード生成ツール ド生成ツ ル HMPP PP の適用 適用 東杜シーテック, JCCギミック
HMPP とは? -GPU コード自動生成ツール - C 言語 /FORTRAN で記述された既存ソースコードに ディレクティブ ( 指示行 ) を挿入することでGPGPU 化ができる #pragma hmpp sgemm codelet, target=cuda,... extern void sgemm( int m, int n, int k,floatalpha, const float vin1[n][n], const float vin2[n][n], CPU 用 float beta, float vout[n][n] ) { ソースファイル ライブラリファイル } コンパ int main(int argc, char **argv) { イル実行ファイル & for( j = 0 ; j < 2 ; j++ ) { #pragma hmpp sgemm callsite リンク GPU 用 sgemm( size, size, size, alpha, vin1, vin2, ソースファイル beta, vout ); } ライブラリファイル }
HMPP のサポートする環境 - 使用言語ー C 言語 Directive: #pragma hmpp label command [, attribute ] Fortran Directive:!$hmpp label l command [, attribute t ] CUDA #pragma hmpp saxpy codelet, target=cuda, args[v1].io=inout void saxpy( int n, float alpha, float v1[n], float v2[n] ) { int i; OpenCL #pragma hmpp saxpy codelet, target=opencl,args[v1].io=inout void saxpy( int n, float alpha, float v1[n], float v2[n] ) { int i;
開発工数 ( コード量 ) についての比較 コード行数 ( ファイル入出力を除く ) CPU :255 lines HMPP :255+4 lines CUDA :792 lines ディレクティブ挿入のみ www.jcc-gimmick.com
処理時間比較 350 300 250 304.6 使用している画像 参照画像 :1 枚近傍画像 :4 枚 サイズ : 640 x 480 200 TeslaC1060 150 100 50 0 環境 1/13 1/35 28.3 87 8.7 19 1.9 Intel Core i7-930 HMPP CUDA OS :Ubuntu9.04 64bit HMPP : 2.3.2 gcc : 4.3.3 17 1.7 GeforceGTX480 HMPPではFermiコアのキャッシュの効果がよく現れており CPU 比で35 倍,Tesla1060C 比で 3.3 倍高速化されている
お知らせ Windows 版 サポート OS Windows 7, Windows Server 2008 (32/64 bit) WindowsVista (32bit) WindowsXP, Windows Server 2003 (32bit) サポートコンパイラ がリリースされました Visual Studio 2008(Fortran:Intel Fortran Compiler 11) ATI Stream SDK 2.1(32/64 bit) NVIDIA CUDA Toolkit 2.3, 3.0, 3.1(32/64 bit) Linux でもご利用いただけます Ubuntu, Debian, RHEL, CentOS, OpenSUSE, SLES 等の 主要ディストリビューション Intel, GNU 等の主要コンパイラと組合せ可能 www.jcc-gimmick.com 30
無償評価版のご案内 HMPP 無償評価版のご提供 HMPPの全ての機能を試用できます (2 週間 ) お申し込みいただいた方にはた方 HMPP 導入と評価に役立つ日本語教材をご提供しています 1. スタートアップガイド HMPP のインストールからサンプルプログラムの動作確認までスムーズに行えます 2. チュートリアル HMPP ディレクティブの使い方を実例を交えて学べます 3. 多視点 3D 復元アプリケーション 実際に HMPP を使用したサンプルプログラムとして公開します自由に変更を加えてGPU 化の効果を試すことができます HMPP の導入 評価をすぐに行える環境を整えておりますので まずはお試しください! www.jcc-gimmick.com
問い合わせ先 GPU 開発 画像処理に関するお問い合わせはー東杜シーテック株式会社 http://www.tctec.co.jp/ HMPPに関するお問い合わせはー株式会社 JCCギミック http://www.jcc-gimmick.com/ p// / http://www.tctec.co.jptctec co http://www.jcc-gimmick.com/
まとめ 今後の課題 まとめ POC を用いた顔の実時間 3 次元計測の高速化 多視点 3 次元復元の高速化 開発ツール HMPP の画像計測への適用事例 今後の課題 GPU に合わせたアルゴリズムの最適化 3 次元計測応用システムへの適用 車載ステレオカメラを用いた運転支援システム プロジェクタ投影像のリアルタイム補正 33
http://www.tctec.co.jp