2012-01-01から1年間の記事一覧

ボツ案

忘れないうちにメモ。 GPGPUを将棋に使う案を考えていたのですが難しそうです。 GTX680なんかは1500コアくらいあって、 ボナンザの3駒評価は、52個のリストの総和演算が必要で、 その加算回数が52*(52-1)/2=1326なので、丁度いいと思ってましたが GPGPUのカ…

現状

floodgateにkuma2_test流しています。bona6のfv.bin利用。 ビットボード使っていない劣化ボナンザです。 シングルコアでもfv.bin使えばR2500行くとの助言を頂いたので頑張ってますが、なかなか厳しいです・・・個人的にはボナンザがなんであんなに強いのか、…

指手生成コード for gcc

switch展開型のgcc版です。makeでコンパイルできると思います。 2.4GHzのノートPCで指手祭で320万/秒でした。 navi.cs.kumamoto-u.ac.jp/~koutaki/shogi/kuma_genmoves_gcc.zip 理由は分かりませんが、iccよりgccの方が速いような気がします。

追記:bitを少なめに乱数生成する方法

以下のようにしています。これで結構速くmagic numberが見つかるようになりました。 // 1のビットを少なめに乱数生成 uint64 random() { uint64 v = 0, n = 1; for(int i = 0;i < 64;i++){ if(rand()%1000<150) v += n; n = n << 1; }; return v; };

指手生成速度 core i7 3.2GHz

指手生成祭の後手側で、ビットボード版は300万/秒、switch展開は340万/秒。 ビットボード版はボナンザを参考にした。 Aperyは400万/秒とのことだったので、実は、switch展開板は結構速いことが判明。 ビットボードを使わなくても指手生成は、それなりに速く…

magic number生成プログラム

以下に置きます。飛車だと14bitの完全ハッシュを作らないといけないのだけど、 やみくもにmagic numberを乱数で生成しても、衝突しまくってなかなかできない。 ここらへんんは[2][3]でも苦労しているようでした。 [3]のように乱数生成の際に、1のビットが少…

magic bitboard

例のswitch展開での指手生成もバグがとれて安定してきました。 floodgateにkuma2_testで投入しています。fv.bin使っている割に弱いです。 R2000あるかどうか。 最初から作り直していて、前回と違う個所は、○指手生成一新。手情報もintにした。 ○定跡選択をま…

先日の並列化ですが、ルートだけじゃ全然駄目みたいですね。 並列化は色々大変みたいだし時間がかかりそうです。

【将棋】指手生成ライブラリ

例の強引にswitchで展開する指手生成コードです。 キャプチャ、移動、ドロップだけですが、なんとなくできてそうなので公開します。 サンプルでは指手生成祭りで500万回試行します。navi.cs.kumamoto-u.ac.jp/~koutaki/gen_move.zip生成速度ですが、指手…

【将棋】適当並列化

適当ですが、わりとすんなりできました。 ルートで長男ノードを探索して残りを並列探索です。 CPU使用率が13%から50%くらいになったので効率はともかく、とりあえず満足。 複数のスレッドがハッシュに書き込むので、たまにおかしくなっている気がす…

【将棋】指手を生成するコードを生成するコード2

空いた時間にちまちま作っています。 指手を生成するコードを生成するコードをデバッグした後に、 生成された指手を生成するコードをデバッグしないといけないので大変です。 キャプチャとドロップはなんとかできたけど、王手の回避手を同じように作ると 組…

【将棋】指手を生成するコードを生成するコード

久々に将棋ネタです。みなさんもそろそろ動き始めているようなので クマ将棋もちょっと再開(できたらいいな(汗))やっぱりNPSが重要ということで、高速化と並列探索をしようと思っています。 でも、局面の構造体はシンプルにしたいので、ビットボード…

ARToolKit MMD

とりあえずSIFT+RANSACマッチングまで全部自前でできたので ARぽいことをやろうと思ったけど、認識したマーカーから カメラの位置を推定する方法が分からない。 実は、これは結構難しい問題らしい。 また、メタセコの3Dキャラクターを表示するのはOpenGLで…

SIFT+RANSAC その2

Open SIFTライブラリを使ってみました。 http://blogs.oregonstate.edu/hess/code/sift/ コードです。中身はほとんど上のライブラリです。 navi.cs.kumamoto-u.ac.jp/~koutaki/rh_opencv_sift.zip windowsなら、WEBカメラをつけてwinbinのrun.batを 実行…

SIFT+RANSACのサンプル

いろいろなサイト[1]を参考にしつつ、とりあえず作ってみたのだけど、精度がイマイチです。 ■コード一式(VS2010用) http://navi.cs.kumamoto-u.ac.jp/~koutaki/opencv_matching.zip FindHomographyでRANSACを使って、斜影変換行列を求めているのだけど、 四…

SIFT・SURFについて

SIFT・SURFなどの特徴点検出&特徴量算出は特許のためか、ver.2.4から使うためには nonfree.libを明示的にリンクする必要がある。

いまさらながらOpenCVを入れてみた

コンピュータビジョンのフリーソフトなのですが、 最近の論文を読んでいると、どこもかしこもOpenCVを使っているようなので入れてみました。 以下はWindows 7-64bit, VS2010でのインストール方法のメモです。 1)OpenCV 2.4をダウンロードして、c:\opencvに…

コード公開します

http://navi.cs.kumamoto-u.ac.jp/~koutaki/bbf_kdtree_on_GPU.zip変な箇所があるかもしれませんが公開します。 いろいろと応用は利くかと思います。

追記

GPUで7倍くらい速くなったと思っていたらCPU版はコンパイラオプションの最適化が切れていた。O2にしたら速度比4倍くらいになってしまった。

将棋 on GPU

将棋に使うとしたら、手の生成と3駒評価の部分をGPUで 計算するといったようなCPUとのハイブリッドがいいのかもしれない。 ただ、並列探索した場合、マルチコアのCPUで1つのGPUを 使えるのか(メモリ転送が競合して遅くならないのか?)、 か…

結果

128次元ベクトル×10000個の辞書データがあって、 65536個のベクトル(クエリー)の検索で、 CPU:9603msec GPU:1379msec 大体、6〜7倍程度。CPUは3GHzの1コアの結果なので 6コア使うとあまり変わらないのかもしれない。 GPUももっといいものを使えば速く…

BBF-kd-tree探索 on GPU

先週にnVidiaのGT640というGPUを入手したのでGPGPUを勉強中。 性能は900MHz×384コア。CUDAという言語で書きます。 早速、kd-treeというデータ構造で、データベースの中から似たような要素を探すものをCUDAで作ってみた。 探索アルゴリズムはBest Bin Firstと…

自己解決しました

http://www.fractal.is.tohoku.ac.jp/okatani/pub/cvim.pdf ここの最後の回転の差分表示を使えばできました。 つまり、線形解法で求まった回転行列Rを固定して、 最適化をかけるパラメータを3つのオイラー角を用意して、 それからできる回転行列δRを用いて…

分からない点

レンズ歪は良く推定できるのだけど、gammaの値がおかしい。 また、観測点にノイズがのると全体的に結果がおかしくなる。 おそらく、カメラの回転行列の推定で、単純にマルカート法で更新をかけると 回転行列の直交性が崩れたまま最適化を続けているのが原因…

結果

上のコードでは、シミュレーションのデータを作って、それでパラメタを推定するものです。 対応点が誤差もなく完全に分かっているという条件が良い設定です。 実際に使うためには、マーカーを高精度に検出する画像処理部分を作る必要があります。 こんな感じ…

【画像処理】Zhangのキャリブレーション

ひさびさに画像処理ネタです。 カメラキャリブレーションを勉強する必要が出てきたので 既に古い技術ですが、有名なマイクロソフトのZhangの方法を実装してみました。 元ネタ:http://research.microsoft.com/en-us/um/people/zhang/calib/ コード一式(VS20…

大会を終えて

本当に楽しく貴重な体験でした。参加して良かったです。 いろんな開発者と繋がりができたのが本当に良かった。 また、定跡選択がまずかったのですが、結果的に面白い棋譜を残せて良かったです。 http://suzumer.web.fc2.com/simk.htm今回の大会二日目のバイ…

2次予選結果

5/5の決勝は子供の初節句ということもあり帰らざるを得ませんでした。 忘れないうちにメモしておきます。 ◇ ◇ ◇ 5/4の二次予選ですが、3勝6敗で19位でした。 今回の大目標は一次予選突破+20位以内だったので良かったです。 二次予選前に、一次予選で…

世界コンピュータ将棋選手権一次予選

クマ将棋ですが、4勝2敗1分で一次予選を通過しました。 全26チームのうち、8チーム進出で、順位は7位とぎりぎり。 ちなみにfloodgateでは1970点くらいです。対戦結果は以下。[1]○クマ将棋 - 人生送りバント失敗× [2]×さわにゃんRL - クマ将棋○ [3]○ク…

おまけ

-KY * +FU * +FU +GI * +OU +KI +KY +KE * -KY * * * -OU -KI * -GI -KE * -FU -FU * -KE -KY -KI -OU * -GI -FU * -FU * +KY パターンマッチングで値が大きかったパターン例です。 この形を維持しようとします。これで歩の半分くらいの寄与になる。 玉の安…