Apache alikeを試してみる(その4:データの作成)
さらにつづきです。
- Apache alikeを試してみる(その1:準備と前置き) - 日記と、買い物記録
- Apache alikeを試してみる(その2:前提環境構築) - 日記と、買い物記録
- Apache alikeを試してみる(その3:alikeのインストール&コンパイル) - 日記と、買い物記録
- Apache alikeを試してみる(その4:データの作成) - 日記と、買い物記録
- Apache alikeを試してみる(その5:デモWebサーバの起動) - 日記と、買い物記録
- Apache alikeを試してみる(おまけ:run_desc_extractor.pyの改良) - 日記と、買い物記録
- Apache alikeを試してみる(おまけ2:動作例とサンプル画像) - 日記と、買い物記録
画像データの準備と解析
その1で紹介した参考ページによれば、alike/trunk/demo/ukbenchというディレクトリを用意して、そこにテスト用の画像をダウンロードすることになっています。これでもよいとは思うのですが私は別のディレクトリ名で動作させたかったので、ここにpicディレクトリを作成しました。
$ cd ~/alike/trunk/demo/ $ mkdir pic
この場所に自分で所有している写真を多数放り込みます。サブディレクトリは検索されない様子だったので、JPEGファイルをこのディレクトリ直下に配置しました。サイズは1.7GB、ファイル数は10215です。
参考ページの手順に従うと、その後run_desc_extractor.pyを実行することになるのですが、画像ディレクトリの場所を変更したので、一部書き換える必要があります。vi等でファイルを開いてIMAGES_DIRを変更します。
IMAGES_DIR = 'pic'
その後は参考ページの通り実行です。demoディレクトリから実行します。
$ ant clean $ mkdir desc $ export PYTHONPATH=../src/python $ python run_desc_extractor.py $ ant piv
run_desc_extractor.pyの処理はたぶん10分くらいだったと思います。その後のant pivは30秒程度です。次のant kmeansは相当時間がかかります。参考ページでは400ファイルの画像で、十分から数十分とあったのでかなりかかることを覚悟していたのですが、意外に63分で終了しました(ちゃんとできてるのかな……)。(注1)
$ ant kmeans : : : [java] 情報: Combine input records=0 [java] 5 04, 2014 10:13:56 午前 org.apache.hadoop.mapred.Counters log [java] 情報: Map output records=7000 [java] 5 04, 2014 10:13:56 午前 org.apache.hadoop.mapred.Counters log [java] 情報: SPLIT_RAW_BYTES=819 [java] 5 04, 2014 10:13:56 午前 org.apache.hadoop.mapred.Counters log [java] 情報: Reduce input records=7000 BUILD SUCCESSFUL Total time: 63 minutes 2 seconds $
さらにant clusterdumpを実行します。実はこのあたりで何をしているのか、まったくわかっていません。最後にBUILD SUCCESSFULとでているので、大丈夫だろうと考えてどんどん進みます。
$ ant clusterdump : : : alike-compile: [javac] /Users/WindVoice/alike/trunk/build.xml:44: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds check-hadoop: clusterdump: [java] 2014-05-04 10:17:19.533 java[67355:1903] Unable to load realm info from SCDynamicStore [java] 5 04, 2014 10:17:50 午前 org.slf4j.impl.JCLLoggerAdapter info [java] 情報: Command line arguments: {--dictionaryType=[text], --distanceMeasure=[org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure], --endPhase=[2147483647], --input=[file:/Users/WindVoice/alike/trunk/demo/output-clusters/clusters-5-final], --output=[result-centroids.txt], --outputFormat=[TEXT], --startPhase=[0], --tempDir=[temp]} [java] 5 04, 2014 10:17:51 午前 org.slf4j.impl.JCLLoggerAdapter info [java] 情報: Wrote 1000 clusters BUILD SUCCESSFUL Total time: 40 seconds $
最後にant qvを実行します。
$ ant qv : : : alike-compile: [javac] /Users/WindVoice/alike/trunk/build.xml:44: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds qv: BUILD SUCCESSFUL Total time: 51 seconds $
これでいわゆる検索インデックスができたはず(おそらく)です。次回はいよいよ仕上げとなる簡易検索Webサーバの構築です。
(注1)
run_desc_extractor.pyは、デフォルトで400ファイルまでしか画像を処理しないことがわかりました。全ての画像ファイルを処理したい場合には引数にallを渡す必要があります。あるいは、スクリプト内のMAX_IMGSの数を増やすことでも対処できるはずです。
$ python run_desc_extractor.py all
- 作者: Drew Conway,John Myles White,萩原正人,奥野陽,水野貴明,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/12/22
- メディア: 大型本
- 購入: 2人 クリック: 41回
- この商品を含むブログ (12件) を見る
- 作者: Toby Segaran,當山仁健,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/07/25
- メディア: 大型本
- 購入: 91人 クリック: 2,220回
- この商品を含むブログ (277件) を見る