OpenBRをインストールしてみる

概要

ちょっと興味があったのでOpenBRをビルドして動かしてみる。

OpenBR

OpenBRはOSSの生体識別ライブラリで、顔写真から年齢や性別を判別したりできる。最近だとMicrosoftのProjectOxfordで公開されたデモが話題になっていた。

OpenBRのインストール

installationをみてみると現状ソースコードからビルドするしかないようだった。Macにインストールはしたくないので適当なUbuntu環境を用意してビルドする。

DockerでUbuntu環境を用意

boo2dockerを起動

boo2dockerのVMが起動していないなら起動

$ boot2docker up

コンテナを起動

$ docker run --name openbr -i -t ubuntu /bin/bash

Ubuntuのバージョンを確認

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS"

OpenBRをビルド

installationに沿って作業を進める。

GCCのインストール

$ sudo apt-get update
$ sudo apt-get install build-essential

CMakeのインストール

$ sudo apt-get install cmake cmake-curses-gui

OpenCVのインストール

ビデオのデコードに問題出たらここ参考にしてねとあるが、取り敢えず手順通りに進める。手順ではOpenCVのバージョンが2.4.5になってるが2.4.11で試す。

OpenCVここからダウンロードしてきてコンテナにボリュームをマウントするなりして渡す。

$ sudo apt-get install unzip
$ unzip opencv-2.4.11.zip
$ cd opencv-2.4.11
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j4
$ sudo make install
$ cd ../..
$ rm -rf opencv-2.4.11

/usr/local/lib以下にインストールされた。

Qtのインストール

$ sudo apt-get install qt5-default libqt5svg5-dev qtcreator

OpenBRのビルド

$ git clone https://github.com/biometrics/openbr.git
$ cd openbr
$ git checkout 0.5
$ git submodule init
$ git submodule update
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..

ここでなぜかOpenCVがインストールされて無いと言われたので、再度OpenCVをインストール後再度cmakeを実行。

$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j4
$ sudo make install

バージョンを確認

$ br -version
0.5.0

インストールできた。

動かしてみる

OpenBRのトップページにあるAge Estimationを実行してみる。実行例だと写真を2枚使用しているが一枚でも問題ないようだった。(metadata.csvの中身を見る限る)

$ br -algorithm AgeEstimation -enroll me.jpg metadata.csv

metadata.csvに結果が出力されるので見てみる。

File,Affine_0_X,Affine_0_Y,Affine_1_X,Affine_1_Y,Age,Confidence,DFFS,FTE,First_Eye_X,First_Eye_Y,FrameNumber,FrontalFace_X,FrontalFace_Y,FrontalFace_Width,FrontalFace_Height,PossibleFTE,Second_Eye_X,Second_Eye_Y
me.jpg,88,74,116,73,35.2215,1,737.614,false,88,74,0,66,47,74,74,false,116,73

35.2215歳か・・

Docker imageを作成

OpenBRをインストールできたのでimageを作成しておく。

$ docker commit -m 'OpenBRをインストール' <コンテナID> horie1024/openbr_0.5

作成されているか確認。

$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
horie1024/openbr_0.5   latest              12abc56def        About a minute ago   5.000 GB

作成できた。

Docker Hubにimageを登録する

Docker Hubに登録

https://hub.docker.com/account/signup/から登録する。

f:id:horie1024:20150511105359p:plain

コマンドラインからログイン

$ docker login

以下のようなエラーが出てdocker loginに失敗する場合、boot2docker restartすればok。

FATA[0034] Error response from daemon: Server Error: Post https://index.docker.io/v1/users/: dial tcp: lookup index.docker.io on 192.168.13.1:50: read udp 192.168.13.1:50: i/o timeout

Docker Hubに作成したimageを登録

先ほど作成したimageをpush。

$ docker push horie1024/openbr_0.5

登録できた。

registry.hub.docker.com

使用する場合は、docker pull後にdocker runすればok。

追記

Node.jsのバインディングがあった。https://www.npmjs.com/package/openbr

参考