第14回 画像の認識・理解シンポジウム(MIRU2011)を聴講してきました

石川県金沢市・金沢市文化ホールで2011年7月20日から22日にかけて開催されたMIRU2011へ参加し聴講してきました.
もともとMIRUで扱われる内容は結構幅広い分野に渡っていて,そのなかでも私自身の興味の強い分野の発表もたくさんあり,内容の上では当然,さらには多くの人と出会いいろんな話をすることができるなど,本当に得るものの多いシンポジウムでした.

私自身は前座イベントの全日本CV勉強会にも参加しましたが,そちらの報告については別の記事でがっつりしてるので,併せてご覧いただければと思います.

今日はいつものイベント参加記録のような雰囲気ではなく,ほんとにあっさりと感想を書いていくだけの記事になります.

Continue reading

全日本CV勉強会に参加しました.ついでに少ししゃべりました.

2011年7月20日~22日の3日間にかけて北陸の地で開催される『第14回 画像の認識・理解シンポジウム(MIRU2011)』へやってきました.
そのMIRU実行委員会の協力の下,東名阪の各CV勉強会が合同で主催しカジュアルにCVを語るイベント「Japan Computer Vision Day ─全日本CV勉強会─」(以下JapanCV)が前日同会場にて開催されました.

僕はMIRUへ参加が決まるずっっっっと前からJapanCVへの参加表明をしてて,実際に参加しLTまでさせていただき,もうホントに素晴らしいイベントでした.ということで,報告いたします.

#MIRU本会の空き時間中に書いた記事なので書き足りないかもです.増えるかも.

Continue reading

第9回名古屋CV・PRML勉強会に参加しました

今月も,名古屋CV・PRML勉強会が開催され,参加してまいりました!

いつもの乱雑なメモ形式で報告いたします.

と言ってもスライドをずっと追いかけてたときとか,あと後半ほど自分の脳みその疲労がアレでメモのクオリティ下がってます><;;
そこんところはおゆるし願います…

今回の勉強会について

  • 日時: 2011年7月16日
  • 場所: 中部大学名古屋キャンパス(いつもの場所)
  • イベントページ: http://partake.in/events/ca2f9aaf-e529-4fce-ad91-7975ae67ec5e
  • テーマ: 先月開かれた学会CVPRの論文紹介
  • 参考ページ: CVPR2011のページ http://www.cvpapers.com/cvpr2011.html
  • togetter: http://togetter.com/li/162170

Continue reading

第8回名古屋CV・PRML勉強会に参加しました

今日は第9回名古屋CV・PRML勉強会が開催されます.

1ヶ月前の第8回の報告を今さら!!
ていうか,第7回が飛んでますね><

さてしょっぱなからツッコミどころ満載ですが,第8回についての報告を.
第8回もまた非常に素晴らしい内容で,本当に参加してよかったと思っています.

ということで,いつもの箇条書きメモ形式でまとめました.
といってもまとまりはぜんぜん無いです.ホントにメモそのままです.

今回の勉強会について

  • 日時: 2011年6月19日
  • 場所: 中部大学名古屋キャンパス(いつもの場所)
  • イベントページ: http://partake.in/events/2274776c-bf38-47aa-983a-282199fd742c
  • テーマ: 『デジカメの画像処理』(amazon)の著者をお招きし,

    • オムロン・川出先生より,3章『人物画像の処理−最高の表情を撮る−』
    • 中部大学・藤吉先生より,4章『物体の追跡−ねらった被写体を逃さない−』
    • この本は2011.4.22に発売されたばかり
    • すごく読みやすい本です

      • これから研究とかする初学者…っていう一見ニッチなようで実は需要の大きい層にがっちり食い込んでると思います

Continue reading

boost::timerは少し困ったちゃんです

boost::timerは時間測定なんかに結構手軽で使いやすくてイイんですが,ちょっと困った現象がいくつか発生します.
僕の手元(Ubuntu 10.04 LTS x86 + gcc4.6.0 + boost 1.40)で再現できてるのは,

  • sleepするとおかしい

    • プロセスが消費したCPU時間なので,例えばsleep(1)の実行時間を計測しても,値は0です.
  • マルチスレッド化するとおかしい

    • 各スレッドでのCPU時間の総和が出るので,何倍かになるし,ちょうど何倍という値でもない.
  • 値の最大値が結構残念

    • (処理系依存であるものの)2147秒までしか測れない場合がある.

この理由はもう言うまでもないですね,内部実装にC標準関数のclock()を用いているからです.
移植性のためなのは理解できるんですが,ちょっとこれでは困ることも.

ということで,POSIXシステムコールのgettimeofdayを使って再実装してしまえ
…というテーマで記事を書こうとしたんですが,探したらあるもんですね.

POSIXではgettimeofdayを,WindowsではQueryPerformanceCounterを使えるように書いたものがありました.

http://pasokoniziri.blog32.fc2.com/?no=15

これに基づくprogress_timerやprogress_displayを作ろうかとも思いましたがそもそもあれはboostにしては珍しい誰得ライブラリなので放置.

ついでなので,gettimeofdayの精度についてのお話.

http://www.argv.org/~chome/blog/noisefactory/2008/02/gettimeofday.html

へー,おもしれー.

標準入出力先が実際には端末かどうかを調べるには

手抜き記事です.
というかこっちはサブブログなので平常運転がこれでないといかんのですが.

さて,コマンドラインプログラムにおいて,標準入力・標準出力・標準エラー出力がそれぞれ端末かリダイレクトまたはパイプされて別のファイルまたはプロセスに渡されているかどうかを調べたいことがあります.

今日はその方法を.

Continue reading

(C++0x)可変長テンプレート引数は再帰でおいしくいただきましょう

C++0xで導入される可変長テンプレート引数,便利ですね.
僕は静的なのが大好きなので.

可変長テンプレート引数の何がおいしいかというと,例えば現在のboost::tupleはT0からT9までをデフォルトテンプレート引数と組み合わせて実装してるので要素数は10以下に限定されますが,C++0xに用意されるstd::tupleは可変長テンプレート引数で実装されるので,原理的には,無限の要素数が実現できます.
ここで本質的に重要なのは,「無限の要素数」に対応できることではなく,「任意の要素数nにおいて一般的に記述できる」ことである点に注意.

また,可変長テンプレート引数を用いて,可変長引数の関数を書けます.
これは,いわば「型安全printf」を書けることを意味します.

話がちょっと逸れましたが,じゃあその可変長テンプレート引数は実際どういう風に扱うの?という話を,関数テンプレートに関してします.
Wikipediaに書いてある範囲より僅かながら広い内容,だと思います.たぶん.

Continue reading

CUDAの分かりやすい資料

CUDAの解説で,分かりやすくてシンプルにまとまってる資料を見つけました〜.

いずれもPDF注意です.
東京大学情報基盤センター・大島聡史先生による『これからの並列計算のためのGPGPU連載講座』より,

  1. GPUとGPGPUの歴史と特徴
  2. GPGPUプログラミング環境 CUDA入門編
  3. GPGPUプログラミング環境 CUDA最適化編
  4. 特別編 CUDAプログラミング Windows編
  5. 疎行列ベクトル積を題材としたCUDA最適化プログラミング

特に2と3は非常に良いです.必読です.
あと,プログラムはちゃんと写経しましょう.ぼけーっと写すだけでもぜんぜん理解が違います.

CUDA4.0のような最新の技法・アーキテクチャ等はともかく,また量的にまだまだいろいろ書かれてないことはあるでしょうけど,基本を押さえるのによいです.

Ubuntu 10.10(x86)にCUDA 4.0を入れてサンプルを動かすまで

備忘録以上の何ものでもありませんです.

CUDA4.0はUbuntuに関して10.10を正式サポート対象としてるのもあって,ハッキリ言って,導入に躓く要素はないです.

ちなみに僕のメインマシンはモバイルノート(ThinkPad X201s)なんですが,研究室のマシンがi7-920に9500 GTなので,基本的にCUDAは(エミュレーションじゃなく)こっちでやってます.

Continue reading

boost::variantのgetがメンバじゃない理由

先週名古屋にてBoost.勉強会#5が開催されました.

それとは直接関係ないのですが,行きの電車の中でBoost.Variantの仕様に関して疑問をもってTwitterでつぶやいたところ@cpp_akiraさんより回答をいただいて,それがすごく興味深い内容だったのでそのやりとりをこちらでメモ.

boost::variant<T1,T2,...>のオブジェクトtがあったときにt.get<T1>()と書きたいなぁ,とか…. boost::get<T1>(t)となってるのはどういう意図or理由なんでしょう.
@mrxptn
すずき

Continue reading