Monthly Archives: 5月 2008

Support Vector Machine

“サポートベクターマシンとは,1995年に,AT&TのV.Vapnikによって統計的学習理論の枠組みで提案された学習機械のことである”

Support Vector Machine
画像の顔認識について調べていたら出てきたもの。人間が見たり聞いたりして物事を認識するのを機械にもやらせてしまおうというものっぽい。OpenCV もこれの一種なのかな?
認識ってのは、簡単に言うとパターン識別だと思います。パターンを定義してしまえば、機械は高速な計算が得意なので、認識を素早く完了できそうな気はしますね。
しかし、問題はパターンの定義なんです。人間同士なら “目が二つあって、鼻があって、口があって・・・” なんて言葉でも伝えることができます。でも機械に伝えるには、目が何なのか、鼻がなんなのか、事細かに伝えていかなければなりません。そして少しでも違えば、機械は認識できなくなってしまいます。
そこで、認識パターンの学習モデルが研究されているらしく、サポートベクターマシンというのは、その成果のひとつのようです。
はて、サポートベクターマシンの目的は分かりましたが、これはなんなんでしょう。どのようにパターンを解析しているのか。そもそもサポートベクターってなんなんだ。
リンク先の説明では、平面上の二種類の点を分類する際の説明が書かれています。サポートベクターってのは特徴点の集合を決定する境界のようですね。これはこれですごい。アンケートを取って地図上で分布を示す際には重宝するかも。でも、そこじゃない。
このような計算がパターン認識、特に顔認識のような複雑な解析にどのように利用されているのかが理解できない。たぶん、しっかり勉強しないと理解できないんだろうけど。

“400次元特徴空間上での画像識別が出来ました”

顔識別できました – momo_dev(k.kinukawa)の日記
って書いてる人もいるし。400次元てなんだよ。
とりあえずは OpenCV を色々試して、計算アルゴリズムは後回しにしようか・・・。

OpenCVで顔認識

“Philosophy – Aid commercial uses of computer vision in human-computer interface, robotics, monitoring, biometrics and security by providing a free and open infrastructure where the distributed efforts of the vision community can be consolidated and performance optimized.”

Open Source Computer Vision Library
画像の顔認識をしたいなぁ、と思っていて、前から気になっていた OpenCV を試してみました。OpenCV ってのは Intel が主導している映像認識のライブラリで、プロジェクトのページは SoueceForge にあります。
SourceForge.net: Open Computer Vision Library
で、とりあえずソースをダウンロードしてきて展開、コンパイルしました。動画系のコンパイルで失敗したので、まずは静止画だけをサポートしてコンパイル、インストール完了。
サンプルに顔認識プログラムのソースがあるので、それをちょこっといじって、結果をファイルに出力するように変更、コンパイルしてプログラムを作りました。
OpenCV には関係ないけど、コンパイル時にはまったことがひとつ。普通に gcc すると undefined reference to がたくさん出てきてエラーになりました。読み込むライブラリは -l オプションでちゃんと指定してあげなきゃならんのね。普段 C なんて使わないから知りませんでした。今回は -lcv -lhighgui を追加。
できあがったプログラムを実行してみると、出てくるではないですか。ちゃんと顔に丸がついてるよ。すっげー!!ものすごくワクワクしました。
実行結果はこちら。
サンプルの画像
処理結果
OpenCV の PHP ライブラリを作ろうとしてる人もいますね。でも、とりあえずは system 関数とかで乗り切ろうかな。むしろ Apache のモジュールとか作りたいかも。

djb信者ではないけどdaemontoolsはいいと思う

“プロセスのチェックがわかりやすい”

少年よ大志を抱け: やっぱりdaemontoolsが好き
そうなんですよ、daemontools はプロセスがしっかりとツリー状になるのが気持ちいいです。たまに逃げ出したりするけど。
自分的な構想として、chroot を利用した自由度の高い共有サーバを考えているんです。そこで chroot 内で自由にサービスを起動させてあげるためには daemontools がいいんですよ。svscan で chroot 内の svscan を立ち上げてしまう。素晴らしいツリー構造じゃないですか。って、やったことないんだけど。実際、問題はないのかな?
ところで Gentoo のプロファイルで vserver ってのがあるんだけど、どれだけ認知されてるんだろ?chroot 内の構築には便利なんだけど。そして、どれだけメンテナンスされてるんだろ。

6月にFirefox 3正式版がリリース予定

“「今回のFirefox 3はInternet Explorer 7の9.3倍速くて、Firefox 2より2.7倍速い」”

サクサクFirefox 3、正式版6月にリリース
うへぇ、FireFox 3 は JavaScript が超高速化したんだ。新しい PC 買う必要なかったかな。JavaScript の処理が遅くて精神的に良くないから買ったのに・・・。
そういや、最近発生している Debian の openssl 問題で、うっかり証明書を破棄したら、FireFox 3 のベータを使っている人から苦情が上がってきました。たぶん破棄証明書を見に行く間隔が短くなってるんでしょうね。より安全に配慮されているようです。
マルウェア対策も充実しているそうですし、期待大です。

トイレが故障

宇宙ステーションのトイレが故障、修理部品はシャトルで
こりゃ一大事です。トイレが壊れてしまいました。一日も我慢できないですよ。6月1日で大丈夫なんですかねぇ。それまでは宇宙にケツを出すんでしょうか?いや、本気じゃないですよ。
にしても、地球上の冒険からは想定できない問題があるんですねぇ。トイレなんか、そこらへんで済ませられると思っていたのに・・・。宇宙は過酷だ。
ところで、そろそろ宇宙出産とかしてみないのかな。一般公募したらモルモットがたくさん集まってくるだろうに。って、生命を軽んじてるかな。

Erlangという言語

“リー教授がいう通り、Erlangが一般のプログラマに受け入れられるとは考えづらい。”

twitterブームの陰で注目を集める“Erlang” - @IT
とまぁ、否定的な引用で始めましたが、ちょっと気になる存在です。記事が古いな・・・。
Erlang は言語体系が関数言語というもので、聞いたこともなかったので興味を惹かれました。しかも Erlang のプロセスは OS 上のプロセスやスレッドとは異なるらしい。

“Erlangの「プロセス」は、OS (オペレーティングシステム) のプロセスともOSのスレッドとも異なる (それらは軽量なスレッドであり、Javaでいう「グリーンスレッド」とある程度似ている) 。”

Erlang – Wikipedia
Java も詳しくないんでよく分からんですが、軽いんでしょうね。Web システムはリクエスト一回の処理が小さいのでピッタリなのかも。
後は技術者が増えるかどうかってとこでしょうか?今度試してみようかな。

Heavy.com – Videos, humor, community and other time-wasting tools

Heavy.com – Videos, humor, community and other time-wasting tools
たまに見るサイト。けっこう好き。動画投稿もできるっぽいけど、サイト側が制作した動画もある。time-wasting tools ってのが、まさにって感じです。
YouTube と比べて、画面の作りこみがしっかりしてて、広告の見せ方が上手い気がする。サイトをなんとなく開いているだけでも、なんとなく見てる気がする。つまんなかったら横の広告を見て、かっこいーなー、なんて思ったりして。
Web って TV とかと違って双方向だって言われるけど、受動的メディアとしての Web があってもいいんじゃないかなー。って、Gyao とかがそうなのかもしれないけど、TV とは違う見せ方ができたら面白いと思います。