Octave で VLFeat を使う(Ubuntu 上)

VLFeat は,SIFTMSERk-meansAIB などのコンピュータビジョン・機械学習のアルゴリズムを実装したライブラリである.C 言語のライブラリと,MATLAB および Octave から利用できる mex ファイルから構成される.

この Web ページで行うこと

VLFeat の最新版は 0.9.21(2018 年公開)であり,その後の更新は行われていない.ソースコードのリポジトリは https://github.com/vlfeat/vlfeat にある.

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

C/C++ コンパイラー,make,パッケージツール,curl のインストール

端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config
sudo apt -y install curl

Octave と liboctave-dev のインストール

Octave 用の mex ファイルのビルドには mkoctfile が必要である.mkoctfile は liboctave-dev パッケージに含まれる. 端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install octave liboctave-dev

VLFeat のインストール(Ubuntu 上)

ダウンロード

  1. 次のページで VLFeat のバージョンを確認する

    https://www.vlfeat.org/download.html

  2. ダウンロードと展開(解凍)

    端末で,次のコマンドを実行する.

    cd /tmp
    curl -O https://www.vlfeat.org/download/vlfeat-0.9.21.tar.gz
    rm -rf vlfeat-0.9.21
    tar -xvzof vlfeat-0.9.21.tar.gz
    

(以下省略)

VLFeat のビルドとインストール

  1. ビルド

    端末で,次のコマンドを実行する.

    cd /tmp
    cd vlfeat-0.9.21
    make
    
  2. インストール

    ビルド結果は,アーキテクチャごとのディレクトリ(64 ビット Linux では glnxa64)の下に置かれる.次のコマンドは,存在するディレクトリから共有ライブラリ libvl.so とコマンド(sift, aib, mser)をコピーする.

    端末で,次のコマンドを実行する.

    cd /tmp/vlfeat-0.9.21/bin
    for d in glnxa64 glnx64 glnx86 glnx32 glx a64; do
      if [ -f $d/sift ]; then
        sudo cp $d/libvl.so /usr/local/lib
        sudo cp $d/sift $d/aib $d/mser /usr/local/bin/
      fi
    done
    sudo chmod 755 /usr/local/bin/sift /usr/local/bin/aib /usr/local/bin/mser
    # man ページのインストール(ディレクトリが無い場合は作成)
    sudo mkdir -p /usr/local/share/man/man1 /usr/local/share/man/man7
    cd ../src
    sudo cp mser.1 sift.1 /usr/local/share/man/man1
    sudo cp vlfeat.7 /usr/local/share/man/man7
    # 共有ライブラリのキャッシュを更新
    sudo /sbin/ldconfig
    

VLFeat 付属のドキュメントの生成

端末で,次のコマンドを実行する.

cd /tmp/vlfeat-0.9.21
sudo apt -y install xfig dvipng doxygen
make doc

Octave で VLFeat を使ってみる

Octave 用の mex ファイルをビルドし,インストールする. 端末で,次のコマンドを実行する.

cd /tmp/vlfeat-0.9.21/toolbox
for d in aib imop kmeans misc sift; do
  cd $d
  for i in *.c; do echo $i; mkoctfile $i -I.. -I../.. -L/usr/local/lib -lvl --mex; done
  cd ..
done
# インストール
sudo /sbin/ldconfig
sudo mkdir -p /usr/local/share/octave/mex
cd /tmp/vlfeat-0.9.21/toolbox
sudo cp */*.mex /usr/local/share/octave/mex

ホームディレクトリの .octaverc に次の行を追加する.Octave の起動時に,mex ファイルのディレクトリが検索パスに追加される.

addpath( fullfile( '/usr/local/share/octave/mex' ) );

動作確認のため,Octave を起動し,次を実行する.関数のヘルプが表示されれば,mex ファイルが読み込まれている.

octave
which vl_sift
help vl_sift