動かしてみたのと、その時調べたことをざっくりとメモ書き。
前提ソフトウェア
gradleはmac なら以下のコマンドで入れられます。Windowsでもググればわかりやすい記事が沢山出るはずです。
brew install gradle
LIREのダウンロード
デモアプリはLIREのレポジトリ内に含まれています。
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点がメインに紹介されていましたが、こちらなどを見ると他にも沢山あるようです。
参考資料等
Visual Information Retrieval using Java and LIRE (English Edition)
- 作者: Mathias Lux,Oge Marques
- 出版社/メーカー: Morgan & Claypool Publishers
- 発売日: 2013/01/01
- メディア: Kindle版
- この商品を含むブログを見る