fc2ブログ

Visual SfMをMacBook Airにインストール

06 03, 2013
NVidiaのGPUを積んでないMacBook AirにVisual SfMをインストールする奇特なプレイの道のりを記したメモ.GPU使う気満々の方は参考にする際気をつけてください.Visual SfMのサイト (http://homes.cs.washington.edu/~ccwu/vsfm/) から Mac OSX x86_64 向けのソースコードをダウンロードする.以後は基本的に同ページのインストールガイド (http://homes.cs.washington.edu/~ccwu/vsfm/install.html#mac) に従って作業する.

環境:Mac OSX 10.7.4, Core i7, グラボ無し (intel HD3000)

1. gtk+のインストール


もうしてあった.makefileも見た感じ編集する必要無さそうだった.必要に応じてpkg-configのパスを編集.pkg-configのパスは,$ echo $PKG_CONFIG_PATH で確認可能.

2. X11+GLX+OpenGLが使えるか確認


よくわからなかったのでスルー

3. make


エラー.一番上のエラーはこんな感じ.

Package cairo was not found in the pkg-config search path.
Perhaps you should add the directory containing `cairo.pc'
to the PKG_CONFIG_PATH environment variable
Package 'cairo', required by 'pangocairo', not found


cairoのインストール自体はされていたが,.pcファイルが先の$PKG_CONFIG_PATHで指定されたフォルダに無かったので,他のファイルを参考にシンボリックリンクを張った.

$ cd $PKG_CONFIG_PATH
$ ln -s ../../Cellar/cairo/1.10.2/lib/pkgconfig/cairo.pc


これを,同様のエラーが出なくなるまで,同様の手順で繰り返す.ライブラリ自体が無い場合はhomebrewから追加でインストール.自分の環境では,先のcairoとfreetype,fontconfigというライブラリに関して対処を行ったらmakeが通った.いずれもpango何とかっていうやつの依存ライブラリだった.

余談


ライブラリ自体はhomebrewを使ってインストールしていたのに.pcが無かったのは,インストールしたfomulaが「keg only」だったから.keg onlyというのは要するに,「一応今インストールはしましたが,今あなたがインストールしたものはOSXにデフォルトで入っているので,何もしないとOSXデフォルトの方を使いますよ.新しく入れた方を使いたかったら明示してね」ということ.

4. SiftGPUのインストール


ソースコードをダウンロード後,makefileの「siftgpu_disable_devil = 0」を 1 にした.makeするとエラー.

4.1 エラーその1


ヘッダファイルが見つからないらしい./usr/X11/include/GLというフォルダに所望のファイルがあったので,さっきダウンロードしてきたSiftGPUのフォルダにある「include」というフォルダに,gl.h, glx.h, glxext.h の3つをコピー.

4.2 エラーその2


「/usr/lib64」「/opt/local/lib」が無い.とりあえずmakefileの58行目と90行目から上記2つに関する記述を削除.もうひとつ,libglewも無いと言われたので,これはhomebrewからインストール.

4.3 エラーその3


「Xなんとか」と名のつくシンボルがUndefinedだと言われた.名前から判断して適当にライブラリを追加する.makefileの89行目,LIBS_SIFTGPUに「-lX11 -lgl」を追加.その下の90行目に「-L/usr/X11/lib」を追加.

この状態で make siftgpu するとビルドできた.正直奇跡に近い.できあがったlibsiftgpu.soとlibsiftgpu.aを,Visual SfMのbinにコピー.

5. PBAのインストール


ソースコードをダウンロード後,makefile_no_gpuという切ない名前のファイルをmakefileにリネームしてmake.やはりエラー.

5.1 エラーその1


手元のCPUに最適化してくれるオプション「-march=native」の,nativeが上手く働かない.gccのバージョンが古くて,corei7向けの最適化ができないからだった.gccのバージョンを上げてみたが上手くいかず,面倒になったので-marchオプションを消す.

5.2 エラーその2


#include <malloc.h>

#include <stdlib.h>

これでmakeが通るので,libpba_no_gpu.aとlibpba_no_gpu.soを,それぞれlibpba.aとlibpba.soにリネームしつつVisual SfMのbinにコピー.

6. 起動


VisualSfM/bin にある「VisualSFM」を実行すると起動できる.SfMもできたけど,GPUが使えないとSIFTが全然早くない.疲れたのでここまで.

7. エクストラステージ


gccのバージョンを上げたので,SIFT-GPUをコンパイルし直す.なぜか当環境では-march=nativeがうまく動かないので,corei7を明示的に指定する.
makefileの24行目を以下のようにする

siftgpu_sse_options = -march=corei7 -mfpmath=sse


57行目,使うコンパイラとしてg++-4.9を明示.

CC = g++-4.9


61行目から「Simple hack」なるものがあるが,gccのバージョンを上げたので一連の処理をコメントアウト.これで少しは早くなる?
スポンサーサイト



0 CommentsPosted in OSX

iTunesの累計視聴時間を確認する「Total iTunes」を書いた

10 20, 2012
ss.png

先日,僕のiTunesライブラリの楽曲数がぴったり1万曲を突破しました.
1万曲ともなると全曲再生するのに30日ほどかかるようなのですが,逆に僕はこれまでのべ何日間音楽を聴いてきたのか?と疑問に思ったので,それを調べるためのAppleScriptを書いてみました.

ダウンロード

動作環境:最近のMacと最近のiTunes(謎)
以下の環境で動作確認:
OSX:10.6.8 - iTunes:10.5.1
OSX:10.7.2 - iTunes:10.5.3, 11.0

●インストール

「ユーザ/ホーム/ライブラリ/iTunes」 フォルダに「Scripts」というフォルダを作って,そこにダウンロードした「Total iTunes.scpt」を置いてください.アンインストールはscptファイルを消すだけです.
OSX 10.7以降でライブラリが見つからないという人はこのへん:
非表示のユーザーライブラリフォルダーにアクセスする方法(Mac OS X 10.7 以降)

●使い方

その後,iTunesを起動 → 累計再生時間を知りたい曲を選択 → メニューバーのスクリプト → Total iTunesを実行してください.曲が画面に表示されているだけでは処理できないので,きちんと「選択」してください

スクリーンショット(2012-10-20 20.10.38)
実行するとこんなウィンドウが出ます.僕の場合は全体で100日強だそうで,全ての曲を3周ずつくらい聴いたことになります.1万曲で処理に6秒くらいかかるので,もっとたくさんある人はiTunesのハングアップに気をつけて下さい.また,ネットラジオを聴いたときなどにiTunesライブラリにストリーミングURLが追加されている場合がありますが,そのようなストリーミングが選択範囲に含まれていると計算できません

全曲選択せずに,アーティスト単位やアルバム単位で選択するのも面白いでしょう.僕の場合だと,Aphex Twinのあの音楽を15時間聴いたんだなあとか
スクリーンショット(2012-10-20 20.20.49)
DragonForceのアルバム「Ultra Beatdown」だけで13時間聴いたんだなあとかスクリーンショット(2012-10-20 20.22.52)
楽しめます.なんかこれで色々戦えそうですね!

●やっていること

単純に(曲の長さ)×(累計再生回数)を足していっているだけですが,曲の長さが文字列としてしか得られないので,細かいことをやっています.AppleScriptは初めて触ったので,なにか致命的なバグがあったらすみません.責任は負いかねます.
0 CommentsPosted in OSX

Firefoxの「All-in-One Gesures」でジェスチャ時にコンテキストメニューが出てしまう現象の解決

06 24, 2012
もろもろの事情でずっとFirefox3.6を使っていたのですが,最近
・Googleストリートビューの画面がドラッグで回転できない
・動画のシークバーが表示されない
などの地味な不具合があって,まあ流石に時代遅れなのかなということでFirefox12にアップデート.

ところが,アップデート以降,All-in-One Gesuresを使用した右ボタンでのマウスジェスチャ時に,コンテキストメニュー(右クリックメニュー)が毎回表示されるようになってしまったのです.今まではジェスチャ入力時は表示されなかったはずなのに...

フォーラムで検索すると,対象のアドオンこそ違うものの同じ現象で苦しんでいる人を発見.そして,同じ方法で解決できました.


MozillaZine.jp :: トピックを表示 - Scrollbar Anywhere/右ドラッグでメニューが出る

自己解決しました。
オプション>コンテンツ>JacaScriptの詳細設定>コンテキストメニューを無効化~
をオフにしていたためでした。

(原文ママ)


一見すると通常の右クリックも抑制されそうな設定項目名ですが,何も問題なく動作します.というわけで無事解決.僕の環境(OSX 10.6.8,Firefox 12.0)ではデフォルトでオフになっていたのですが,デフォルトの設定が変わったんですかね?

--------

余談.

実はこの問題はFirefox4くらいからあったはずです.初めに書いた「もろもろの事情」とはまさにこのことで,こういった問題点が嫌で3.6に戻して使っていた,というわけです.

他の未解決事項として,「Firefoxを閉じた状態で外部アプリケーション上のURLをクリックした際,当該ページではなくホームページが表示されてしまう」問題があります.3.6から12までバージョンが上がってるんだからどこかでデバッグされてもよさそうなもんですが,されてないということは僕の環境だけの問題なんですかね?誰か助けて下さい...

0 CommentsPosted in OSX

Rob Hess氏によるSIFTの実装をOSX SnowLeopardにインストール.

09 15, 2011
Rob Hess氏の実装したSIFT特徴のライブラリをOSXにインストールするのに格闘したのでメモ.
環境:MacOSX 10.6.7 Core2Duo
(2012/1/15 追記: 10.7.2でも同様の方法でインストール確認できました)

まず上記のリンクのDownloadからlinux向けの「sift-latest.tar.gz」をダウンロード.
しかるべきところに解凍します.

READMEに従ってOpenCVとGTK+2を入れる.
といってもOpenCVは既に入れてあるので,GTK+2だけをインストール.
(2012/1/15 追記: doxygenも必要になるので入れておきましょう.)

$ brew install gtk+
$ brew install doxygen



ここでまずlibtiffとかlibjpgとかが無いと言われてエラー.あるのに.
よくわからないが一旦それらをアンインストールしてもう一度入れ直したら治った.

というわけで,環境が整ったのでSIFTのビルドに臨む.
先ほど解凍したフォルダ(多分「sift」という名前)に移動し,そこでmake,
すると何やら色々とエラー.

まず,homebrewで入れたgtk+は,pkg-config用のメタデータファイル(*.pc)の名前が異なっているので,MakeFIleを修正.先ほど解凍したsiftフォルダにある「src」フォルダに移動し,そこのMakeFileを開いて,6,7行目を

INCL = -I$(INC_DIR) `pkg-config --cflags opencv gtk+-2.0`
LIBS = -L$(LIB_DIR) -lfeat `pkg-config --libs opencv gtk+-2.0`


と修正.

siftフォルダに戻ってmake clean,再度makeすると,

ld: warning: in (色々), file was built for i386 which is not the architecture being linked (x86_64)



というエラー.どうやら僕が以前homebrewから入れたOpenCVは32bitだったらしく,そこで問題が起きた模様.というわけでMakeFileのCFLAGSに-m32と書いて回避・・・となればよかったのですが,なんと今しがた入れたgtk+は64bit版だった(?)らしく,今度は

ld: warning: in (色々), file was built for unsupported file format which is not the architecture being linked (i386)


という逆の内容のエラー!これは詰んだ.

ここで,gtk+は今せっかく入れたので,ここはひとつOpenCVを64bit化してしまおうと思い立つ.
調べてみると,OpenCV本家に「32bit版が欲しければ『sudo brew install opencv --build32』しろ」と書かれていたので,じゃあ逆に64bitが欲しければ--build64かということで,

sudo brew uninstall opencv
sudo brew install opencv --build64


とやってみたら本当に入った.
そして再びmake.

おお,finish!無事成功!
成功しているか確かめるために,

./bin/match beaver.png beaver_xform.png

を実行してみる.

スクリーンショット(2011-09-15 6.14.35)

やったー!


・・・と思ったのも束の間,今度は自作のOpenCVプログラムがコンパイルできなくなる.
64bit版を入れ直したせいだとは思うが,そもそもこのMacは64bitマシンのはずだし・・・
と悩んでいたが,ふと「Snow Leopardは普通に起動すると32ビットモードで起動する」という事を思い出す.
ということでこれを機に常に64ビットモードで起動するようにする.
具体的には,再起動して画面が黒いうちに数字の「6」「4」キーを押し続ける.


うおーー!!!!
動きはええーー!!!
うおーコンパイルもできたぞー!!!
うおー5時だー!!!!寝るーーー!!!
(2012/1/15 追記: このあとマジでゼミに大遅刻したのはいい思い出です.)
0 CommentsPosted in OSX

OSXにOpenCVインストール

04 16, 2011
ちょっと前にソースコードからOpenCVをインストールしたのですが,試しにMacPortsから入れたら寝てるだけでインストールできたので,あんな面倒な事しなくてよかったようです.

$ sudo port install opencv


こんだけ.
時間がかかるので寝る前にやりましょう.

ただし,そのあと実際にXcodeを使ってコーディングする時の設定を他のサイトを参考にしてたら何点かつまずいた点があったので,そこだけメモ.

1.Xcodeのテンプレートを自作する


これからXcodeプロジェクトにフレームワーク追加したり設定変えたりと作業をしていくわけですが,これを毎回やるのは面倒なので,先にOpenCVプログラミング用のテンプレートを作りましょう.

/Developer/Library/Xcode/Project Templates/Application


にある「C++ Tool」フォルダを,

~/Library/Application Support/Developer/Shared/Xcode/Project Templates/Application


にコピーします(コピー先のフォルダが無ければ作りましょう).ここにテンプレートを置いておくとXcodeにユーザテンプレートとして見なされるらしいです.コピーしたフォルダの名前を「Open CV」とでも変えておきます.
あとはその中のxcodeprojファイルを開いて初期設定をするだけです.基本的な流れはぐぐればいくらでも出てきますのでそちらを参考に.

2.ヘッダ検索パスの指定


作業の中でヘッダ検索パスを設定する所がありますが,多くのサイトで

/opt/local/include/opencv


を設定するように書かれていました.しかし,その中のヘッダファイルを見てみると,

#include "opencv2/core/core_c.h"


のようなインクルードの仕方をしています.なので,ヘッダ検索パスに

/opt/local/include/


も追加しておくといい気がします.「再帰」のチェックは入れなくていいです.

スクリーンショット(2011-04-16 11-4-16 (土) 3.46.06)

もちろんこれはmacportsで入れた時の話なので,homebrewとか別の入れ方をした人は/optじゃないどっか対応する所を設定しましょう.
ヘッダファイルのコメントに「互換性を保つ為の措置だ」というような事が書いてあるので,バージョンアップに伴うアレでしょう.

3.追加するフレームワーク


フレームワークを追加する際に,libcxcore.dylib、libcvaux.dylib、libcv.dylib、libhighgui.dylib、libml.dylib あたりを追加するように書いているサイトが多いですが,これらの名前が変わってしまっているようです.おそらくこれもバージョンアップに伴うアレでしょう.
「libopencv_○○2.2.0.dylib」という名前のフレームワークを何も考えず全部追加してみたら無事に動きました.

基本的な流れは他サイトに任せたつもりでしたが,残った作業は「有効なアーキテクチャ」からppcを消すだけですね.まあそんな感じです.無事に設定ができたら,新規プロジェクトを作成してみましょう.OpenCVテンプレートがありますかね.どっかのサンプルをビルドしてみましょう.
0 CommentsPosted in OSX
プロフィール

津田沼

Author:津田沼

学生です。ドラムとDTMをやっていますが、多分向いていません。Macを使っています。好きなお笑い芸人はさまぁ~ずです。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
Ninjaアクセス解析