2009年12月31日木曜日

RCヘリ開始に向けて

RCのヘリを始めたいのだが、やはり予算に自信がない。今までにReal Flight G2で鍛えてきたので、なんとか本物デビューを果たしたいのだが・・・。

と思っていた矢先に、いいものが発売されるらしい。安価な室内用4chヘリ。今まで室内用といえば、トイラジで2-3chのモノはあったが、4chはキーエンスの室内ヘリとかで高価なものしかなかった。試してみたい。

京商のメタルマスターシリーズなるものだが、HPからYoutubeビデオがリンクされていた。

2009年12月27日日曜日

Windows7 64bit で matlab の mex ファイルをコンパイル

windows7 64 bit で matlab の mex ファイルをコンパイルしようとしたのだが、上手くいかない。使用した matlab は、少し古いが matlab 2007b、また、c compiler は visual c++ 2008 express edition 以下に示す解決方法は、他のバージョンでは試していないが、もしかしたら他のバージョンでも役に立つかもしれない。

matlab centralに似た記事があったので、ダウンロードして試してみたが、64bit版では動作しないことがユーザーコメントに書かれている。自分の環境ではもしやと思って試してみたが、そのままではダメだった。ということで、同様の方法で、matlab_DIR\bin\win64\mexopts 以下に、改良した、msvc90freeopts.bat を作ることにした。

改良したものは下記の通りである。なお、環境変数に、MSSdkを追加し、値は microsoft windows sdk のインストールディレクトリを代入している。

もしかしたら多少おかしい部分があるかもしれないが、自分の環境ではこれで 64bit mex ファイルのコンパイルに成功したので、何かの役に立てばと思い、公開しておく。

基本的に、編集する必要があるのは、VCINSTALLDIR, INCLUDE, LIB, MW_TARGET_ARCH, LINKFLAGSのMACHINEオプション等だけである。これを自分の環境に合わせて書いてしまえば問題ないと思われる。


@echo off
rem msvc90freeopts.BAT
rem
rem Compile and link options used for building MEX-files
rem using the Microsoftョ Visual C++ 2008 Express Edition compiler.
rem
rem $Revision: 1.1.8.1 $ $Date: 2006/11/19 18:53:45 $
rem
rem ********************************************************************
rem General parameters
rem ********************************************************************
echo msvc90freeopts.BAT
set MATLAB=%MATLAB%
set VS90COMNTOOLS=%VS90COMNTOOLS%
set VSINSTALLDIR=%VS90COMNTOOLS%\..\..
set VCINSTALLDIR=%VSINSTALLDIR%\VC
set MSSdk=%MSSdk%
set LINKERDIR=%MSSdk%
set PATH=%VCINSTALLDIR%\BIN\amd64;%LINKERDIR%\bin\x64;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%VCINSTALLDIR%\VCPackages;%MATLAB_BIN%;%PATH%
set INCLUDE=%VCINSTALLDIR%\INCLUDE;%LINKERDIR%\INCLUDE;%INCLUDE%
set LIB=%VCINSTALLDIR%\LIB\amd64;C:\Program Files\Microsoft SDKs\Windows\v7.0\lib\x64;%MATLAB%\extern\lib\win64;%LIB%
set MW_TARGET_ARCH=win64

rem ********************************************************************
rem Compiler parameters
rem ********************************************************************
set COMPILER=cl
set COMPFLAGS=/c /Zp8 /GR /W3 /EHsc- /Zc:wchar_t- /DMATLAB_MEX_FILE /nologo
set OPTIMFLAGS=/MD /O2 /Oy- /DNDEBUG
set DEBUGFLAGS=/MD /Zi /Fd"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb"
set NAME_OBJECT=/Fo

rem ********************************************************************
rem Linker parameters
rem ********************************************************************
set LIBLOC=%MATLAB%\extern\lib\win64\microsoft
set LINKER=link
set LINKFLAGS=/dll /export:%ENTRYPOINT% /MAP /LIBPATH:"%LIBLOC%" libmx.lib libmex.lib libmat.lib /implib:%LIB_NAME%.x /MACHINE:AMD64 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
set LINKOPTIMFLAGS=
set LINKDEBUGFLAGS=/DEBUG /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb"
set LINK_FILE=
set LINK_LIB=
set NAME_OUTPUT=/out:"%OUTDIR%%MEX_NAME%%MEX_EXT%"
set RSP_FILE_INDICATOR=@

rem ********************************************************************
rem Resource compiler parameters
rem ********************************************************************
set RC_COMPILER=rc /fo "%OUTDIR%mexversion.res"
set RC_LINKER=

set POSTLINK_CMDS=del "%OUTDIR%%MEX_NAME%.map"
set POSTLINK_CMDS1=del %LIB_NAME%.x
set POSTLINK_CMDS2=mt -outputresource:"%OUTDIR%%MEX_NAME%%MEX_EXT%";2 -manifest "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest"
set POSTLINK_CMDS3=del "%OUTDIR%%MEX_NAME%%MEX_EXT%.manifest"


2009年12月19日土曜日

ブログを彩るWidgets

ブログはずっと前に始めたが、忙しいとかで、自分のメモ帳替わりを脱することができず、人に見せられるような代物ではなかった。実際、今まであまり、アクセスを稼いだりしたことはない。今回、いつまで続くかわかないが、少しは真面目に書いてみようかと思ったので、その最初のステップとして、自分が行ったことを書き留めておく。

まず、最初から全部自分でサイトデザインをするのは大変なので、ブログパーツを利用する。いまさらだが、このブログパーツばかりを専門に取り扱っているサイトが存在する。その中でも非常に多くのハイセンスなブログパーツを取り扱っている二つのサイトを紹介しておく。

まず国内サイト:
ハナツキ
このサイトは素晴らしい。たいていどんなサイトでも目的別にブログパーツを整理しているのだが、ハナツキではその目的が非常に細分化されているし、実用性を兼ね備えたものも多く収録されている。また、自企業の宣伝のために、企業が作っているハイセンスなブログパーツ等も積極的に収録している。


次に海外サイト:
Widgetbox
海外では、ブログパーツとは言わない。WidgetとかBlog widgetと呼ぶ。だから、blog parts等と検索しても、日本のサイトしか出てこない。widgetとかで検索すると非常に沢山出てくる。海外のBlog widgetの特徴を挙げると、まず、Mixiとの連携などは当然だがなく、代わりにFacebookやTwitter、Flickr、Delicious等のSNSとの連携のためのWidgetが非常に多い。ということで、そういった、海外発のサービスを利用している場合には、こちらで探した方が面白いものが見つかる。

まずは最初のステップと言うことで、他力本願で自分のサイトを彩る方法を紹介した。

Lego

Legoと言えば、子供から大人(?)まで楽しめるクリエイティブなおもちゃの代表例だと思う。LEGOの良いところは沢山あるが、次の点が大きいと思う。
・創意工夫で何でも作れる、そしてつぶすと、かさばらず、すっきりと片付く
・持続的に供給されている(自分が遊んでいたものを今子どもが楽しんで使っています)
・作りがよく、ブロック間の連携が良く考えられている
・世界中の人に愛されている(海外出張とかですぐに買うことができます、店員さんとかと子供がLEGOが好きなんですよーなんてどこの国ででもお話を始められます)

そんなわけで、自分も子供の時には欲しかったのだが、あまり買ってもらえなかった経験がある。確かにLEGOは高い。しかし欲しい。ということで、自分の安く買う方法を書いておく。

まず、買いたいものをLEGO.COMとかで決める。英語だがPRODUCTSのボタンをおしてどんどん見ていく。日本国内で売っているのはこの一部。でも最近では国内で基本的には売られていないLEGOもYahoo!Auctionや他のショッピングサイト等で購入できるようになってきているので諦めることはない。敷居は高いが、もちろんeBay等で個人輸入することもできる。

LEGO.COMでは、ブロックの詳細を確認することはできないので、興味がある商品があった場合にはbrickshelfで、すでに組み立てた人が投稿した写真をじっくり見て観察。Search Galleryのところに、商品番号を入れて、その横のGoボタンを押せば、たくさんの写真が出てくる。

本当に欲しくなったら、Yahoo!Auctionで、調べると大抵のものは出ている。Yahoo!Auctionで、もし見つけることができれば大抵の場合最も安く購入することができる。

Yahoo!Auction以外で、海外LEGOを安価で取り扱っているお店を紹介する。
aquacastle
aquacastle yahoo-shopping店
未来屋

海外LEGOは、あまり見当たらなかったが、値段が安い店を紹介する。
05BLOCK.COM

さぁ、みなさん、LEGOにはまりましょう。

2009年12月16日水曜日

Face Tracer Database

顔認識のデータセットは、多くの種類のデータセットが公開されているので、研究にもことかかかない。その殆どは下記のページで網羅されているので、まだ、見られたことのない方は見られると得をするとおもう。http://www.face-rec.org/databases/

一方で、顔の属性認識のデータセットはあまり多くない。また、あったとしても性別や年齢程度である。顔の属性認識は、非常に面白い技術だ。顔認識が顔を登録した状態で行うのに対して、顔の属性認識は調べたい顔が未知であってもある程度絞り込みを行える。例えば見ず知らずの人を誰かに教えるときのような感覚だ。もちろん絞り込み程度で完全な特定精度はないので、顔認識と組み合わせて用いるのが良いと思われるが、今後の技術として興味深い。

これに対して、Face Tracerを開発した、Columbia大学(Nayar研究室)でWeb上から収集した多くの画像に対して、ラベルを入力してラベル情報を下記のページで公開している。http://www1.cs.columbia.edu/CAVE/databases/facetracer/

一方著作権の観点から、画像に関しては、リンクのみで、画像データとしては提供されていない。
そこで、Irvineを利用して、ダウンロードしてみた。

Irvineのファイル→インポート→キューリストを利用して、ダウンロードリストを読み込む。ダウンロードリストは、上記FaceTracer Databaseの"faceindex.txt"をエクセルで適当に編集して、作成した。

結果、2009年12月16日現在ダウンロードできたのは、15000枚中、10706枚だった。さらに、ここから、"facestats.txt"情報をもとに画像切り出しを行った。ダウンロードできたと思っていた画像の中に内容が変わっているものも多いらしく、Flickrとだけ書かれたものなども、多く、最終的には10000枚を割り込みそうだ(こういうのは最終的には目視判断しかないと思われる。さらに顔検出をかけるという方法もあるが、目視でやった方が確実だし、10000枚程度ならすぐに終わる)。しかし、この手のデータセットは少ないので、それでもうれしい。

後日、このデータをもとに実験を行おうとしたが、難点かの問題に直面したので、書き記しておく。まず、提供されている"facestats.txt"に書かれている、目や口の点(それぞれの左右端点)座標がダウンロードした画像のものとずれている。いろいろ試してようやくわかったのだが、どうやら、"facestats.txt"の2-5カラム目までに書かれている切り出し開始点と、幅・高さで切り出した後の画像座標らしい。思い込みで、元座標系での点だと思っていたので、わかるまで時間がかかってしまった。

前述のデータベースのページにあるラベル情報"facelabels.txt"には合計3938枚の画像に対するラベル情報が書かれているが、ダウンロードできるものが限られているので、今回構築できたのは2538枚のみの評価セットだった。

なお、FaceTracerについては、次のFaceTracerの作者自身による紹介videoをみると、よく理解できるので、リンクしておく。