Entry

mean shift 作っていて考え事・ひとり言

2011年11月15日

某所にも書いたけれども,mean shift 作ってます。いまさら感はあるけれど,すばらしい。

とりあえず今のところ,素朴に Cheng[PDF] の通りに書いてみたんだけれども,当たり前ながら普通に遅い。でも,結果がかなりロバストでよかったので,もう少し頑張ってみる。

やってるのは,12次元程度で構成したとある特徴ベクトルのクラスタリングなんだけれども,やはり探索空間が大きすぎるか。まず,次元削減を考えた方がいいか。でも,次元削減すると,大抵人間にとって因果関係が分からなくなっちゃうからなあ……デバッグしづらくなるので悩みどころ。

まずは,実装でどれだけ速くなるか,もう少し粘ってみることにしよう。ベクトル演算すら最適化してないから,ET(Expression Template pattern)を使ってある程度ループの回数を抑えられる。あとは,泥臭く SIMD でゴリゴリ書くことになるか……。ベクトル演算の場合,ループ内の演算はしょぼいから,マルチスレッドにしても粒度が細かくなりすぎてあまり効果がない(コンテキスト切り替えのコストが効いてしまって,むしろ遅くなる)。マルチスレッドにするなら,もう少し上位のループで制御するなり粒度を適当な単位に調整するなりしないと,大して速度は変わらない。やはり,並列性を考えるなら,命令レベルで考えないとダメみたい。

ひとり言過ぎて,読んでる人にはなんのこっちゃか分からないと思うけれども,とりあえずそんな感じ。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN