Archive for 8月 2013

【Curious Vehicle 第14回 勉強会ネタ】

『Solrを利用した画像検索について』 Part2

また2週間ほど空いてしまいました。お疲れ様です.makino です。

* 今回は先日の第11回 Solr勉強会でお話しさせていただいた『Solrを用いた画像検索システム』について継続して共有をさせていただきます。

* 今回は特徴情報をSolrのIndexデータとしてまとめる部分についてご説明いたします!

【解説】Solrで画像を検索するための3ステップ Part2
Solrによる画像検索-2 001

・Part1で行った画像データの特徴情報化だけでは情報量が多くまた計算量も増えてしまうため、『特徴情報のクラスタリングによるWORD化』を行います。

クラスタリングアルゴリズム:K平均法クラスタリング(K-means)

  • クラスタリングアルゴリズムとしてK平均法クラスタリングを簡単にご紹介します
  • K-means は 入力データを k個のクラスタに分類する単純な分類機アルゴリズムです
  • ランダムに振り分けたクラスタから各クラスタの重心を測定し、重心に近い座標で 再度重心計算とクラスタリングを繰り返すクラスタリング手法です

Solrによる画像検索-2 002

  • 上記の図はクラスタリング数を2として 重心計算を20回繰り返した結果を示しています

K平均法クラスタリングによるクラスタリング処理の流れ

  • 前回の復習も含め どのように動くか流れを見てみます!
    1. 解析用の画像を準備します

    Solrによる画像検索-2 003

      今回は画像の特徴量情報を検索軸として利用するため、色情報をカットします

    Solrによる画像検索-2 004

      SIFT特徴量アルゴリズムを実施し、特徴が検出された地点にプロットしています

    Solrによる画像検索-2 005

      K平均法クラスタリングを利用し画像の特徴情報のクラスタリングを行います

    Solrによる画像検索-2 006

      クラスタリング結果をヒストグラム化し、SolrのWORD情報として切り出します

    Solrによる画像検索-2 007

* これらのクラスタリング処理も検索画像すべてに実施します
* 勉強会の際はクラスタリング数を全画像100固定でクラスタリングを行っています
* この状態でやっとSolrに投入できる状態のデータが出来上がりましたので、『Solrによる画像情報の検索』へ進みたいと思います

Tips:Solr勉強会以降の進展について

その1:特徴量とクラスタリングの数のチューニングについて

  • 前回、特徴量の数に比例させk-meansによるクラスタ数を変化させるようなチューニングでは検索精度の向上という部分とは紐づかなかったと書かせていただきました
  • こちらの改善として精度向上が見られた点を共有したいと思います
  • Part1でのTipsにも書きましたが、検索精度が低い画像は総じて特徴情報の量が少ない傾向がありました。
  • 情報量が少ない画像は画像加工処理を追加し画像を回転させて再度特徴情報を取得することである程度安定した特徴量の抽出が行え、検索精度の高い向上が見られました
  • Sift特徴量のアルゴリズムでは、特徴が発生した座標やアングル情報を持っていますが今回の画像検索では汎用性という意味でこちらの情報を利用せず特徴情報のみで類似検出を行っているためこのような結果につながっていると思います
  • 用途が絞られるような画像検索であればもっとピンキーなチューニングにより精度向上が狙えると思うのですが、汎用性を踏まえ検証したところでは上記のようなチューニングで高い効果の確認ができました
  • 作業量の多そうな検証を省いたわけでなありません!たぶん!
【Curious Vehicle 第14回 勉強会ネタ】

『Solrを利用した画像検索について』

みなさまご無沙汰しております。makino です。

* 今回は先日の第11回 Solr勉強会でお話しさせていただいた『Solrを用いた画像検索システム』についてこちらで発表させていただきます!

* テキストデータの検索ツールであるSolrで画像検索も行えたら今までとは違うインターフェースやサービスを作れるのでは!?
* Solr勉強会で話をさせていただいた時よりも改善を加えていますのでお付き合いいただければと思います!

【解説】Solrで画像を検索するための3ステップ
Solrによる画像検索 001

・画像情報はそのままでは検索が行えないので、Solrが得意なテキスト形式に画像データを加工していきます。
・そのファーストステップとして、『画像の特徴情報の抽出』を行います。

特徴点抽出アルゴリズム:SIFT特徴点解析

  • まず特徴点抽出アルゴリズムとしてSIFTの概要をご紹介します
  • SIFTアルゴリズムは画像内の特徴点の検出を行い、座標やスケールなどの情報を応答として抽出します
  • SIFTでは各特徴点毎に以下の情報が取得できます
    1. x座標
      y座標
      スケール
      回転角度
      対応する128の記述子

SIFT特徴点解析による特徴点抽出の流れ

  • どのように動くか流れを見てみます!
  • Solr勉強会の際は、著作権的にNGな画像を多量に使ってしまいましたが、今回は弊社のロゴで許してください
    1. 解析用の画像を準備します

    Solrによる画像検索 002

      今回は画像の特徴量情報を検索軸として利用するため、色情報をカットします

    Solrによる画像検索 003

      SIFT特徴量アルゴリズムを実施し、特徴が検出された地点にプロットしています

    Solrによる画像検索 004

      特徴のベクトルをサークルの大きさで表示しています

    Solrによる画像検索 005

      実際は各特徴点ごとに以下のような情報が数値化されて取得できます

    Solrによる画像検索 006

* これらの解析処理を検索画像すべてに実施します
* この状態ではまだSolrのword情報(Term)としては少し情報が荒いため、『特徴情報のクラスタリングによるWord化』へ進みたいと思います
* 勉強会の際にお見せしたデモサイトも近いうちに公開したいと思います。よろしくお願いします!

Tips:Solr勉強会で質問いただいた点について
質問1:特徴量とクラスタリングの数のチューニングについて

  • 今回はクラスタリング数をを100固定としてしまいましたが、今回の検索精度を上げるための1番のチューニングポイントだったのでまず検証を進めました
  • 結果からとなりますが、特徴量の数に比例させk-meansによるクラスタ数を変化させましたが、検索精度の向上という部分とは紐づきませんでした
  • ただこちらを調べているうちに特徴点の数が画像によりだいぶ検出数が異なっていることを確認しこちらを改善することで検索精度の大きな向上が見られました
  • k-meansは計算量を減らすためのアプローチとして利用していますが、検索精度という意味でのアプローチではないため、DeepLearningや教師有り的なアルゴリズムへ次はチャレンジしようと思います

質問2:tf-idfにより画像の特徴がロストしてしまわないか

  • 画像の特徴から作り出したTerm情報の頻度分布を見てみましたが、小さい特徴の塊が6~7割の割合を占め大きな特徴情報がうまくロングテールとなり検索精度の向上に繋がっているように見られました

※ 質問いただいた方とは、先日のトレジャーデータさんの懇親会でまたお会いしました。まさかトレジャーの方だったとは