ニューラルネットワーク-最も類似した画像を見つける


11

私はPython、scikit-learn、kerasを使用しています。次のような前面時計の画像が30万枚あります: Watch_1Watch_2Watch_3

入力として実際の時計の写真を受け取って、上の写真よりも理想的ではない状況で撮影したプログラム(異なる背景色、暗い稲妻など)を書き、それに3000の時計の中で最も類似している時計を見つけたいと思います。同様に、薄いレースの丸い茶色の時計の写真を入力として与えると、丸い形の暗い色の薄いレースの出力時計として期待されます。

これを行うための最も効率的な機械学習アルゴリズムは何ですか?

たとえば、このリンクをたどることで、2つの異なる解決策を考えています。

1)CNNを特徴抽出器として使用し、入力画像を参照して、画像のすべてのペアについてこれらの特徴間の距離を比較します。

2)シャムニューラルネットワークで2つのCNNを使用して画像を比較する。

これらの2つのオプションは、このタスクに最適なオプションですか、それとも他のことを提案しますか?

このタスクについて、事前にトレーニングされたニューラルネットワーク(事前に定義されたハイパーパラメーターを使用)を知っていますか?

これについてStackOverflowで興味深い投稿をいくつか見つけましたが、それらはかなり古いです:Post_1Post_2Post_3


サイトへようこそ!埋め込みを学習し(1000ビット程度の高速検索にはバイナリハッシュをお勧めします)、類似度検索を実行します。
Emre

ここにいることが私の喜びです...笑!...はい、これは良い考えであり、私はすでにこの論文を読んでいました...
追放

回答:


4

このような高レベルのアーキテクチャが最適であるとは思いませんが、多くの要因と詳細に依存しています。最初のアプローチが私が知っていることから、特にTiefVisionで行われた追加のステップによって拡張された場合、有望です

  1. 追加の境界ボックスネットワークを使用して、画像の関連部分を残りの部分から区別します。
  2. 特徴ベクトルは単純に直接比較されるのではなく、トリプレットを使用して比較ネットワークをトレーニングするために使用されます(特徴ベクトルと類似するインスタンスの例に基づいて類似性を学習します)。

この作品はあなたが投稿したものよりもはるかに新しい(2016/17)もので、素晴らしいツールセットとより詳細なペーパーが付属しています。

トリプレット、つまりディープランキングを使用する理由

コメントで述べたように、特徴ベクトルを学習して距離を計算する代わりに、画像の類似性にトリプレットを使用する必要があるのはなぜですか?トリプレットは、基本的に類似性を気にしない特徴ベクトルを学習する代わりに、類似性質問を学習問題として定式化する方法です。このアプローチは、人間が知覚する類似性が重要である場合に特に意味があり、マシンの知覚とは異なる場合があります。

トリプレットは次のように機能します。3つの画像を提供します。比較対象の1つ、類似した(近い)1つのイメージ、および類似していない(遠い)1つのイメージ。これはトレーニング/テスト/検証データです。これらのサンプルでネットワークをトレーニングし、全体的に正しい順序(非類似画像から類似を分類)を予測すると、ネットワークは類似性に基づいて画像を順序付ける方法を学習できます。

全体として、このアプローチは比較的複雑です。過度に設計されている可能性がありますが、これを行うための最良の方法も求められ、ディープランキングは非常に高い精度の値を達成します。


お返事ありがとうございます。これは興味深いものです(私はそれを支持しました)。画像のトリプレットを使用する方が、タスクで画像のペアを使用するよりも必然的に優れている理由が正確にわからない場合でも、トリプレットについての考え方は適切です。必要に応じて、投稿で詳しく説明することもできます。また、TiefVisionについても説明します。
追放

ヒント(および賛成票)を@Universalisに感謝します。トリプレットとその理由についての詳細を追加して、回答を更新しました。論文も非常によく書かれているので、すべての詳細を見てください。しかし、TiefVisionとDeepRankingが登場して以来、これを行うための新しい手の込んだ方法があるかもしれません。
Gegenwind 2018

お返事ありがとうございます。はい、私は紙を見て、あなたがあなたの答えに何を追加したかについてはかなり明確でした。この意味で、私はあなたがあなたの答えを追加したことをすでに理解しており、私の質問は次のとおりでした:3つの画像(トリプレット)ではなく2つの画像(ペア)を使用して、類似性に従って画像をランク付けしないのはなぜですか?ペアの代わりにトリプレットを使用することの追加の利点は何ですか?
2018

うーん多分私はあなたのアプローチを誤解しました。このトリプレットは、画像1が画像3よりも画像2に近いという比較情報を提供します。2つの画像のみがあり、「これら2は類似している」と述べることは、「どの点でも類似している」という比較要素を欠いています。特徴ベクトルの十分ではありません。言い換えると、注文によって類似性を学習し、少なくとも2つの項目を注文しなければ類似性に欠けます。
Gegenwind 2018

お返事ありがとうございます。しかし、今でも、紙をもう少し注意深く読んだ後でも、この教師なしのアプローチでは、なぜ画像のペアではなくトリプレットが必要なのかがはっきりしません。ラベルを使用する場合、トリプレットを使用することで、ペアでは取得できない画像の完全な類似性ランキングが得られることは明らかです。しかし、あなたが提案するこの(一種の)監視されていないアプローチでは、画像の各ペア(常にペアの1つの画像が入力画像です)の損失関数の値を比較して、たとえば、入力画像?
追放

2

imagenetクラスでうまく機能するVGG-16などの分類子を選びます。次に、時計の画像を実行します。確かに、出力は高い確率でほとんど「監視」されると期待できます。

ただし、追加の機能、つまり、他のすべてのカテゴリのアクティブ化レベルを取得します。これにより、0と1の間の1000個の値のベクトルが得られます。

ネットワークのさまざまなポイントでアクティベーションを抽出することもできます。次に、それらのアクティブ化と出力の類似性は、画像が類似している場合にのみ、2つのケース間で類似する必要があります。


ご回答ありがとうございます(賛成)。はい、これは私の心の中にありました。ある意味、それは私の投稿で提供した最初のオプションに関連しています。それで、SURFのような他の検出器を使用することも考えていました...これらが十分に成功するかどうかを確認します...
2018

2

最初にデータ拡張に焦点を当てます。画像の背景が白なので、少し簡単です。白い背景を透明な背景に変え、画像を縮小して回転させ、ターゲットデータと同様の背景に配置します。

これをさまざまな組み合わせで何度も行い、各時計にラベルを付けます。次に、分類に通常の畳み込みニューラルネットワークを使用することをお勧めします。各ラベルにはスコアがあり、最も信頼度が高く、最も類似しているラベルを選択します。

たとえば、画像を使用して分類子を実行し、この結果を取得するとします。

Watch1: 0.51

Watch2: 0.30

Watch3: 0.25

CNNは、Watch1が入力画像の時計であるという51%の信頼度があると言っています。しかし、真実であることは、それがより似ていると考えるものであり、Watch2が次に似ているということです。

良い結果が得られない場合は、いつものようにしてください。パラメータを試してみるか、レイヤを追加してください。それが失敗している場所を見つけてみてください。その洞察が得られたら、それを使用して、特定の問題に対してより特殊なタイプの畳み込みネットワークを選択できます。それがどのように機能するかについての事前の知識なしにそれを探すことは正しいアプローチではありません。基本的なたたみ込みモデルから始めて、そこから作業することをお勧めします。


1
ご回答ありがとうございます(賛成)。はい、すでにデータの拡張を心に抱いていました。しかし、あなたの反応は非常に不明確です。「時計ごとにラベルを付ける」とはどういう意味ですか?似ているかどうかに応じて、各時計に個別にラベルを付けるか、別の時計とペアとしてラベルを付けるのですか?(前者の場合は、なぜこれが効率的であるかを説明してください)
アウトキャスト

これは前者の提案ですが、すでにすべてにラベルを付ける便利な方法があると思いました。これは基本的に最も基本的なソリューションであるため、効率的ではありません。私の提案は、基本モデルはおそらくより専門的なモデルを追跡するための十分な情報を提供することができるということでした。@Gegenwindが言ったように、深いランキングを探すことは非常に有望に思えます。もう少し明確にするために、回答を更新しました。
zimio 2018

フム、そう今それはより多くのあなたが何を意味するのか明確である....これは確かに良い一般的な提案である:ステップバイステップのより複雑なものへの基礎と動きで始まる...どのような場合でもおかげで...
2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.