Luceneの類似画像検索プラグインLIREのデモアプリを動かしてみた

動かしてみたのと、その時調べたことをざっくりとメモ書き。

前提ソフトウェア

  • Javaの1.6以降
  • gradleをインストールしておくと簡単です

gradleはmac なら以下のコマンドで入れられます。Windowsでもググればわかりやすい記事が沢山出るはずです。

brew install gradle

LIREのダウンロード

デモアプリはLIREのレポジトリ内に含まれています。

github.com

gitコマンドで最新版をダウンロードするか、リリースのページからwgetでリリース版をダウンロードしてください。

# 最新版
git clone https://github.com/dermotte/LIRE.git

# リリース版
wget https://github.com/dermotte/LIRE/archive/gradle.tar.gz

ここではリリース版をダウンロードした前提で手順書きます。

ダウンロードファイルの解凍からgradle使ったデモの起動は以下の通り。

tar xf gradle.tar.gz
cd LIRE-gradle/samples/liredemo
gradle runDemo

このような画面が立ち上がってくるはずです。

サンプルデータのインデクシング

サンプルデータをインデックスに投入します。

サンプルデータもリポジトリ内に含まれています。4色のフェラーリの画像です。

./LIRE-gradle/testdata/ferrari

どんな画像が含まれているかはこちらからも確認できます。

LIRE/testdata/ferrari at master · dermotte/LIRE · GitHub

手元の環境だと1分半くらいでインデックス作成終わります。

インデックスの実ファイルを確認してみます。どこにインデックスファイル作成するかはオプションから変更もできます。

$ ls -l samples/liredemo/index/
total 2808
-rw-r--r--  1 yusuke  staff  721162  7  8 22:19 _2.fdt
-rw-r--r--  1 yusuke  staff     219  7  8 22:19 _2.fdx
-rw-r--r--  1 yusuke  staff   11365  7  8 22:19 _2.fnm
-rw-r--r--  1 yusuke  staff    8659  7  8 22:19 _2.nvd
-rw-r--r--  1 yusuke  staff    1078  7  8 22:19 _2.nvm
-rw-r--r--  1 yusuke  staff     451  7  8 22:19 _2.si
-rw-r--r--  1 yusuke  staff   90575  7  8 22:19 _2_Lucene50_0.doc
-rw-r--r--  1 yusuke  staff  534356  7  8 22:19 _2_Lucene50_0.pos
-rw-r--r--  1 yusuke  staff   33157  7  8 22:19 _2_Lucene50_0.tim
-rw-r--r--  1 yusuke  staff    3136  7  8 22:19 _2_Lucene50_0.tip
-rw-r--r--  1 yusuke  staff     143  7  8 22:19 segments_2
-rw-r--r--  1 yusuke  staff       0  7  8 22:18 write.lock

動作確認

「Browse 」から実際にインデックスされた画像を確認することができます。確認したら横にある「Search」ボタンを押してみましょう。

指定した画像を元に検索された結果がでてきます。黒い車で検索したので黒い車が並んでいます。一部他の色も混じっていたりします。

自分の持ってきた画像を使って類似検索することもできます。

例えばこの白い車で検索します。

思った通りの結果が出なかったりします。

他にも複数の検索の種類を利用できるので、簡単に動きを変化させて試すことができます。

  • Auto Color Correlogram
  • CEDD(Color and Edge Directivity Descriptor)
  • Color Layout
  • Edge Histogram
  • FCTH(Fuzzy color and texture histogram)
  • JCD( Joint Composite Descriptor. (CEDD and FCTH) )
  • JPEG Coefficient Histogram
  • RGB Color Histogram
  • Scalable Color

これらの検索の種類と言ってしまいましたが、実体はこの辺りで実装されていて feature と英語で表記されていま、GlobalFeature といういうインターフェースを実装していて、画像の特徴を成すベクトル値を取得するメソッドを定義したり、それを使ったランキング処理などに使われています。エンコードといった方がわかりやすいかもしれません。

上記に挙げている以外にも種類は色々あり、それぞれ正式名称でググると論文が出てきて(例えばCEDDだとこのPDFとか)正直なところ門外漢が全て追うのはしんどいです。

このPDFが纏まっていたので、ポイントで細かく読んだり

http://thomas.deselaers.de/publications/papers/deselaers_diploma03.pdf

他のデータセットを使って試してみるのも面白いです。

参考書籍には以下の2点がメインに紹介されていましたが、こちらなどを見ると他にも沢山あるようです。

d.hatena.ne.jp

参考資料等

github.com

Visual Information Retrieval using Java and LIRE (English Edition)

Visual Information Retrieval using Java and LIRE (English Edition)

LIRE - Open Source Visual Information Retrieval