cvチーム勉強会 halide編

14
Halide勉強会 @teamLab.cv

Upload: tetsuro-kato

Post on 02-Jul-2015

413 views

Category:

Technology


10 download

TRANSCRIPT

Page 1: CVチーム勉強会 Halide編

Halide勉強会@teamLab.cv

Page 2: CVチーム勉強会 Halide編

Halide(http://halide-lang.org/)

• 概要は前回話したので割愛

• 作っている人たち MITコンピュータ科学・人工知能研究所

Adobe、スタンフォード大学

!

• ライセンス:MIT

Page 3: CVチーム勉強会 Halide編

LLVMを使ったJITコンパイル

ヘッダ+オブジェクトファイルの出力も可能

Page 4: CVチーム勉強会 Halide編

3x3のボックスフィルタで最適化のイロハを学ぶ

• 学ぶこと

1. Vectorize (= SIMD)

2. Parallelize (= OpenMP)

3. Tiling and Fusion

さまざまなフィルタの実装は今日の範囲外

Page 5: CVチーム勉強会 Halide編
Page 6: CVチーム勉強会 Halide編
Page 7: CVチーム勉強会 Halide編

先行研究• コンパイラのループ最適化

• 画像処理の場合、一度計算したものを何度も読むよりも再計算した方が速いことがある(memory band width)

• 並列計算系

• CUDA、OpenMPなど

• 処理の最適化はすべてプログラマに委ねられている

• 記述が複雑になる&アーキテクチャごとの最適化が必要。

• 画像処理用の言語

• AppleのCoreImageやAdobeのPixelBlenderなど。

• ピクセルごとの処理を記述したカーネルを書ける。ただしカーネル間の最適化は考慮されていない

Page 8: CVチーム勉強会 Halide編

実験

3x3のボックスフィルタを例に、

さまざまなスケジュールで試してみる

Page 9: CVチーム勉強会 Halide編

スケジュールは難しい

Page 10: CVチーム勉強会 Halide編

スケジュールをもっと簡単に決めれる方法・指針があれば、Halideはちょう流行る可能性がある。

ってみんなが言ってるし、作者もわかっていて、スケジュールを遺伝的アルゴリズムで最適化するとかってトピックもあるみたい。

Page 11: CVチーム勉強会 Halide編

感想など!

• 移植性が高いとはいえ、アーキテクチャごとにスケジュールの部分は最適解が変わるのか?タイリングの大きさとか。

• KinectのDepth画像高精度化とかに使えたらいいなぁ

http://nma.web.nitech.ac.jp/fukushima/research/weightedjointbilateralfilter.html

Page 12: CVチーム勉強会 Halide編

参考文献今日はこれだけでした。Halideの最初の論文

Decoupling Algorithms from Schedules for Easy Optimization of Image Processing Pipelines http://people.csail.mit.edu/jrk/halide12/halide12.pdf !

次の論文(halide13.pdf)にスケジュールの決め方とかが議論されているようです。(未読)

大塚さんのAndroidでHalide講座に期待しています!!

Page 13: CVチーム勉強会 Halide編

追加 参考になる日本語資料

• 一番くわしい

• http://nebuta.hatenablog.com/entry/2013/08/04/135932

• 我らがパヤシム先生

• http://derivecv.tumblr.com/post/70538301269

• ぼくが書き残した、Marvericksでのビルド手順

• http://nistetsurooy.tumblr.com/post/73830964082/halide

Page 14: CVチーム勉強会 Halide編

追加 今日使ったコード

• https://gist.github.com/nistetsurooy/9088633