問題タブ [content-based-retrieval]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 画像検索システムの開発方法に関するアイデアが欲しい
Google がどのように画像を検索できるかについてもっと勉強したいだけです。私には複雑すぎることはわかっていますが、自分の画像セットでそれをやりたいと思っています。
これが私が提案する方法です:フォルダー内のランダムな画像の大規模なセットの場合、いくつかのキーワードを使用して(適切ではない可能性があり、アイデアに基づいて変更される可能性があります)、いくつかの画像を検索して並べ替えることができます。 .
画像間の類似性を判断する方法についてグラフィック関係者と話をしたところ、次のように言われました。
- グローバル カラー ヒストグラム
- 画像レイアウトとブロックベースのヒストグラム (あまり詳しくありません)
- RAG ベースの説明。
それで、今私はあなたのアイデアが本当に必要です。コードなどは必要ありません。そのようなローカル画像検索システムを設計する際に考えられることを教えてください。画像間の類似性をどのように定義しますか?あなたは画像などを表しています。
これからもグラフィック関係者と話し合って学んでいきますが、皆さんのアイデアを参考にしたいと思っています。
php - 類似の画像を識別する良い方法はありますか?
私はPHPで、画像の類似性を比較するためのシンプルで高速なアルゴリズムを開発しました。
ハッシュへの高速(800x600画像の場合は毎秒約40)で、最適化されていない検索アルゴリズムは、22分で3,000枚の画像を処理し、それぞれを他の画像と比較します(3 /秒)。
基本的な概要は、画像を取得し、それを8x8に再スケーリングしてから、それらのピクセルをHSV用に変換することです。次に、色相、彩度、値が4ビットに切り捨てられ、1つの大きな16進文字列になります。
画像の比較は、基本的に2つの文字列に沿って進み、検出された違いを追加します。総数が64未満の場合は、同じ画像です。さまざまな画像は通常600〜800前後です。20未満で非常によく似ています。
このモデルに使用できる改善点はありますか?さまざまなコンポーネント(色相、彩度、値)が比較にどの程度関連しているかは調べていません。色相はおそらく非常に重要ですが、他のものは?
検索を高速化するために、おそらく各部分の4ビットを半分に分割し、最上位ビットを最初に配置して、チェックに失敗した場合にlsbをチェックする必要がないようにすることができます。そのようなビットを保存する効率的な方法はわかりませんが、それでも簡単に検索して比較することができます。
私は3,000枚の写真(ほとんどがユニーク)のデータセットを使用してきましたが、誤検知はありませんでした。サイズ変更の影響を完全に受けず、明るさとコントラストの変化にかなり耐性があります。
image - 類似画像検索ソフト(TinEyeなど)
コミュニティ サイトの 1 つで、ユーザーが画像をアップロードできるようにしています。これらの画像は、モデレーターによって承認または拒否されます。
管理者が必要とする作業を制限するために、拒否された各写真をある種のデータベースに「記録」し、承認のために画像を送信する前にこのデータベースでルックアップを行います。類似の画像がすでに拒否されている場合、アップロードされた画像は承認のために送信されません。
もちろん、画像のファイル名、サイズ、MD5 などをログに記録して類似性を確認することもできますが、トリミングやサイズ変更が異なる画像を確実に見つけることができます。
TinEye.com も同様の機能を提供しています。
これが可能なオープンソースソフトウェアを知っていますか? 他にアイデアはありますか?
ありがとう!
search - 画像によるグーグル検索はどのように可能ですか?
最近、グーグルは画像による画像検索の新機能を開始しました。これは、グーグル検索ボックスに画像をアップロードすることで他の画像を検索できることを意味します。これはどのように可能ですか?
image - 画像で検索できるAPIはありますか?
画像があり、それが何であるかを検索したいと思います。そのために利用できるAPIはありますか?
opencv - OpenCV または LIRe を使用したスケッチベースの画像検索
私は現在、ロンドン大学で BSc Creative Computing の勉強をしており、研究の最後の年にいます。学位を取得するために残した唯一のモジュールはプロジェクトです。
私はコンテンツベースの画像検索の分野に非常に興味があり、私のプロジェクトのアイデアはそのコンセプトに基づいています。一言で言えば、私の考えは、3D モデルを参照として使用して、初心者のアーティストが遠近法でスケッチを描くのを助けることです。コレクション内の各 3D モデルの側面図、上面図、正面図をレンダリングし、これらの画像を前処理してインデックスを作成することで、これを実現するつもりです。描画中に、ユーザーは自分のスケッチに最適な一連のモデル (前処理済み) を取得します。これは、スケッチをさらに強化するためのガイドラインとして使用できます。このアプローチは 3D モデルに依存しているため、ユーザーは 3D 空間でスケッチを回転させ、その視点に基づいて描画を続けることもできます。このようなアプローチは、コミック アーティストやコンセプト デザイナーがアイデアをすばやくスケッチするのに役立ちます。
調査を行っているときにLIReに出会い、本当に感銘を受けたと言わざるを得ません。LIRe デモ v0.9 をダウンロードし、付属のサンプルをいじってみました。また、エンジンの内部動作をよりよく理解するために、同様の画像を自動的にダウンロード、インデックス付け、検索する小さなアプリケーションも開発しました。どちらのアプローチも、限られた画像セット (~300) でも非常に良い結果を返しました。
次の実験は、実際の画像ではなくスケッチが入力として提供された場合の出力応答をテストすることでした。前述のように、システムは、ユーザーのスケッチに基づいて、一致するモデルのセットを提供できる必要があります。これは、スケッチをレンダリングされたイメージ (もちろん、3D モデルにリンクされます) と一致させることで実現できます。いくつかのスケッチを小さな画像セットと比較してこのアプローチを試みたところ、結果は非常に良好でした - http://claytoncurmi.net/wordpress/?p=17を参照してください。しかし、別の画像セットで試したところ、前のシナリオほど良い結果は得られませんでした。LIRe が提供する Bag of Visual Words (SURF を使用) 手法を使用して、インデックスを作成および検索しました。
また、 OpenCVに付属するサンプル コードも試しています(このライブラリを使用したことがなく、まだ道を模索中です)。
それで、私の質問は次のとおりです。
1.スケッチベースの画像検索システムを実装しようとした人はいますか? もしそうなら、あなたはそれについてどうしましたか?
2.LIRe/OpenCV をスケッチベースの画像検索に使用できますか? もしそうなら、これはどのように行うことができますか?
PS。このテーマに関する論文をいくつか読みましたが、そのようなシステムの実際の実装に関するドキュメントは見つかりませんでした。
ヘルプやフィードバックは大歓迎です。
よろしく、
クレイトン
computer-vision - コンテンツ ベースの画像検索用にベクトル/ヒストグラムのコレクションのインデックスを作成する方法
私は現在、テキスト検索におけるベクトル空間モデルに似た視覚的単語ベースの画像検索システムのバッグを書いています。このフレームワークでは、各画像はベクトル (または文献ではヒストグラムとも呼ばれます) で表されます。基本的に、ベクトル内の各数値は、その画像内で各「ビジュアル ワード」が出現する回数をカウントします。2 つの画像が互いに「近い」ベクトルを持っている場合、これは、多くの画像特徴が共通しており、したがって類似していることを意味します。
私は基本的に、そのようなベクトルのセットの逆ファイル インデックスを作成しようとしています。自家製のデータ構造のハックが機能しないように、数千 (試用段階) から数十万または数百万以上の画像にスケーリングできるものが必要です。
私はLuceneを見てきましたが、どうやらそれはテキストのみにインデックスを付けているようです(間違っている場合は修正してください)が、私の場合は数字(つまりベクトル自体)にインデックスを付けたいと思っています。次の方法でベクターをテキスト ドキュメントに変換するケースを見てきました。
<3, 6, ..., 5> --> "w1 w2... wn". 基本的に、ゼロ以外のコンポーネントは、テキストの単語 "w[n]" に置き換えられます。ここで、n はその数値のインデックスです。次に、この「ドキュメント」が Lucene に渡されてインデックスが作成されます。
この方法を使用する際の問題は、ベクトルのテキスト表現が特定の「単語」の出現頻度をエンコードしないため、取得した画像のランキングが良くないことです。
Lucene を引き続き使用できるように、ベクターを処理できる成熟したインデックス API を知っている人はいますか? また、Lucene for Image Retrieval (LIRE) プロジェクトを調べ、付属のデモを試してみましたが、そのデモを実行したときに生成された例外の数により、それを使用するかどうかわかりません。
API の言語に関しては、C++ または Java を使用できます。
返信ありがとうございます。
mahout - Mahout コンテンツベースの類似性
製品分類に基づいてコンテンツ ベースの類似性をシミュレートするカスタム アイテムの類似性を作成しました。次の 2 つのアイテムだけを気に入っているユーザーがいます。
私のカスタムitemSimilarity
は [-1,1] の値を返します。ここで、1 は強い類似性を意味し、-1 は強い非類似性を意味します。ユーザーが気に入った 2 つのアイテムには、分類ツリー内で最も低い共通の祖先がないため、値が 1 ではありません。ただし、一部のアイテムでは 0、0.20、および 0.25 の値になります。
私は次の方法で推奨事項を作成します。
私は次の結果を得ています:
一見誰かが言うだろう、それはレコメンデーションを生成します。ペアごとのアイテム間の比較を行うため、 から値を出力しようとしましたitemSimilarity
が、次の驚くべき結果が得られました。
そして、さらにいくつかあります。それらは製造オーダーにはありません。要点を言いたかっただけです。-1 の非常に強い非類似性を持つアイテムはすべて推奨され、0.0、0.2、および 0.25 の類似性を持つアイテムはまったく推奨されません。これはどのように可能ですか?itemSimilarity
インターフェイスのメソッドにItemSimilarity
は、次の説明があります。
このインターフェースの実装は、2 つのアイテム間の類似性の概念を定義します。実装は、-1.0 から 1.0 の範囲の値を返す必要があります。1.0 は完全な類似性を表します。
[0,1] 間の類似性を使用すると、次の推奨事項が得られます。
ペアごとの類似度は次のとおりです (それらのツリーのみ、他のツリーは 0):
EDIT1449133, 18886199
: with:に最もよく似たアイテムも印刷しました(GenericItemBasedRecommender)delegate).mostSimilarItems(new long[]{1449133, 18886199}, 10)
。[RecommendedItem[item:228964, value:0.125], RecommendedItem[item:950062, value:0.125], RecommendedItem[item:899573, value:0.1]]
アイテム 18886199 のみ、(GenericItemBasedRecommender)delegate).mostSimilarItems(new long[]{18886199}, 10)
を入手し[RecommendedItem[item:228964, value:0.25]]
ました。似たような商品は1449133
ありません。
なぜそれが強い相違点で機能しないのかわかりませんか?もう 1 つの疑問は、予測された選好値がすべて8.0
またはである理由4.5
です。18886199
おすすめ商品と商品だけが類似しているのがわかりますが、 の場合の類似度に 8.0 の値を掛けて、 の代わりに の0.25
値を求める方法はありますか?これは、ユーザーがまだわからないため、類似度を計算している間は実行できませんが、推奨段階で実行する必要があると思います。これはレコメンダーがどのように機能するべきか、またはカスタムのレコメンダーを作成してカスタムの方法でジョブを実行する必要があるのではないでしょうか?2.0
8.0
Mahout コミュニティの誰かが私に指示を与えることができれば、本当に感謝しています。
mahout - Mahout は、コンテンツ間の類似性を判断する方法を提供しますか (コンテンツ ベースのレコメンデーション用)?
Mahout は、コンテンツ間の類似性を判断する方法を提供しますか?
Web アプリケーションの一部としてコンテンツ ベースのレコメンデーションを作成したいと考えています。Mahout がユーザー評価マトリックスを取得し、それに基づいてレコメンデーションを作成するのが得意であることは知っていますが、共同 (評価ベースの) レコメンデーションには興味がありません。2 つのテキストがどの程度一致しているかをスコア化し、ユーザー プロファイルにユーザー用に保存したテキストに最もよく一致するアイテムを推奨したいと考えています。
Mahout のドキュメントを読みましたが、主に共同 (評価ベース) の推奨事項を促進しているように見えますが、コンテンツベースの推奨事項は促進していないようです... これは本当ですか?