|
|
解像度調整機能を備える 並列動画像処理ライブラリRaVioliの実装 ○大野将臣† 桜井寛子† 津邑公暁† 松尾啓志† †名古屋工業大学
動画像処理に対する要求 人間にとって解像度は不必要 計算機で処理するには解像度は不可欠 マルチコアプロセッサが一般化 コアの有効活用 解像度を意識したプログラミング 並列処理を意識したプログラミング これらをプログラマに意識させないプログラミング環境
発表の流れ 動画像処理ライブラリRaVioli 1) 動画像処理の抽象化 動的な解像度調整 提案: RaVioliへの並列化機能の実装 自動空間分割並列化 自動負荷均衡化機能を備えるパイプラインインタフェース 評価 岡田慎太郎,桜井寛子,津邑公暁,松尾啓志 「解像度非依存型動画像処理ライブラリRaVioli の提案と実装」 情報処理学会論文誌コンピュータビジョンとイメージメディア(CVIM), Vol.2, No.1 (2009).
従来の画像処理プログラム void main{ //画像の取り込み等 int tmp; for(int y=0;y<200;y++){ for(int x=0;x<200;x++){ tmp = (int)( InImg[x][y].R*0.299 +InImg[x][y].G*0.587 +InImg[x][y].B*0.114); OutImg[x][y].R = tmp; OutImg[x][y].G = tmp; OutImg[x][y].B = tmp; } } } InImg OutImg
RaVioliを用いた画像処理プログラム RV_Image InImg RV_Pixel mono(RV_Pixel Pix){ int tmp; tmp=(int)( Pix.R()*0.299 +Pix.G()*0.587 +Pix.B()*0.114); return(Pix.setRGB(tmp,tmp,tmp)); } void main(){ RV_Image InImg,OutImg; //画像の取り込み等 OutImg=InImg.procPix(mono); } RV_Image OutImg procPix 高階メソッド 構成要素関数
RaVioliを用いた動画像処理 RV_Video obj RV_Image obj RV_Video 高階メソッド RV_Image mono(RV_Image img){ }
RaVioli:疑似リアルタイム処理のための処理量自動調節 空間解像度 空間解像度ストライドSs 時間解像度 時間解像度ストライドSt St=1 St=2 Ss=1 Ss=2
優先度の設定 処理内容によって解像度の重要度が異なる どちらをどれだけ優先させるかの割合を比の形で指定 (1,0) 空間解像度を優先 (7,3) 7:3で維持 (空間解像度,時間解像度)=
発表の流れ 動画像処理ライブラリRaVioli 1) 動画像処理の抽象化 動的な解像度調整 提案: RaVioliへの並列化機能の実装 自動空間分割並列化 自動負荷均衡化機能を備えるパイプラインインタフェース 評価 岡田慎太郎,桜井寛子,津邑公暁,松尾啓志 「解像度非依存型動画像処理ライブラリRaVioli の提案と実装」 情報処理学会論文誌コンピュータビジョンとイメージメディア(CVIM), Vol.2, No.1 (2009).
動画像処理の並列化 自動空間分割並列化 リダクション処理の検出と生成 自動負荷均衡化機能を備えるパイプラインインタフェース スレッド間で自動的に負荷均衡
空間分割並列化の注意点 繰り返し処理の間で変数を共有 リダクション処理でアクセス競合を解決 変数を共有 並列化可能 並列化可能 処理順依存 リダクション処理で アクセス競合を解決 共有していない 共有している 解決可能 解決不可能
共有変数の判別 通常の画像処理 RaVioliを用いた画像処理 void main(){ //InImgに画像を格納 int foo = 0; for(int y = 0; y < 180; y++){ for(int x = 0; x < 200; x++){ ... foo = (foo + InImg[x][y].R) * 2; OutImg[x][y].R = tmp; OutImg[x][y].G = tmp; OutImg[x][y].B = tmp; } } } int foo = 0; RV_Pixel mono(RV_Pixel Pix){ ... foo = (foo+Pix.R())*2; return(Pix.setRGB(R,G,B)); } void main(){ RV_Image InImg,OutImg; //InImgに画像を格納 OutImg = InImg.procPix(mono); }
OpenMPを用いたリダクション処理 sum RaVioliでは リダクション処理を記述する 必要がない #define NUM_THREADS 4 int i; int sum=0; #pragma parallel reduction(+:sum) for(i=1;i<=256;i++) sum += i;
int sum = 0; void program1(RV_Pixel p){ int r; r = p.getR(); sum += r; } int main(){ RV_Image InputImg; //read image data in “InputImg” InputImg.procPix(program1); return 0; } リダクション処理の自動生成 _sum += r; sum += _sum; sum += r; 推移律が成立 __thread int _sum = 0; void __reduction(){ mutex_lock(mutex); sum += _sum; mutex_unlock(mutex); } _sum += r;
動画像処理の並列化 自動空間分割並列化 リダクション処理の検出と生成 自動負荷均衡化機能を備えるパイプラインインタフェース スレッド間で自動的に負荷均衡
パイプライン化の利点と問題点 動画像処理のパイプライン化 問題点 パイプライン処理を実現するための機構 スレッドの作成 ステージ間でデータの授受を管理するFIFO ステージ間の処理量の不均衡 binarize edge detect hough trans
RV_Pipedata* GrayScale(RV_Pipedata* data){ //1フレームに対するグレースケール処理 return data; } RV_Pipedata* Laplacian(RV_Pipedata* data){ //1フレームに対するラプラシアンフィルタ処理 return data; } int main (){ RV_Pipeline pipe; pipe.push(GrayScale); pipe.push(Laplacian); pipe.run(); return 0; } int main (){ RV_Pipeline pipe; pipe.push(GrayScale); pipe.push(Laplacian); pipe.run(); return 0; } パイプラインインターフェース thread1 thread2 push GrayScale Laplacian run RV_Pipeline pipe
パイプラインの自動負荷均衡化 A B thread1 thread2 thread3 A B A B A B C thread1 thread2 thread3 ・ ・ ・ ・ ・ ・ ・ ・ ・ C C frame1 frame2 frame3 C 1 2 3
パイプラインの自動負荷均衡化 thread1 thread2 thread3 frame1 frame2 frame3 A B C thread1 thread2 thread3 ・ ・ ・ B ・ ・ ・ ・ ・ ・ thread1 C thread3 C thread2
自動負荷均衡化マネージャ Manager A:10ms B:10ms C:40ms A B C thread1 thread2 thread3 ・ ・ ・ ・ ・ ・ ・ ・ ・ 平均:20ms B thread1 C thread3 C thread2
パイプラインの自動負荷均衡化 thread1 thread2 thread3 A B A B A B frame1 frame2 frame3 A thread1 ・ ・ ・ ・ ・ ・ ・ ・ ・ B thread1 C thread3 C thread2 C C C 1 2 3
評価 評価環境 自動空間分割並列化による速度向上の評価 パイプラインの自動負荷均衡化機構の評価
空間分割並列化 hough pixAverage laplacian voronoi
ハフ変換の処理時間の内訳
パイプライン化
まとめ 動画像処理ライブラリRaVioli 並列化機能 自動空間分割並列化 自動負荷均衡化機能を備えるパイプラインインタフェース 評価 自動空間分割並列化 自動並列化による高速化を確認 自動負荷均衡化機能を備えるパイプラインインタフェース 均衡化による解像度低下の抑制
by matsuotsumura | Modified: 2 years ago
Language: Japanese (Detected) | Topic: Computers
| 18 Views | 3 Embeds |
| URL: |
No comments posted yet
Comments