Bir görüntü katıştırma mesafesini bir grup görüntü katıştırmasına karşı hesaplama

0

Soru

Bir görüntü gömme mesafesini başka bir görüntü gömme listesine/grubuna karşı nasıl düzgün bir şekilde alabilirim?

Görüntülerden katıştırmaları ayıklamak için kullandığım önceden eğitilmiş bir modelim var ve bir görüntünün diğer birkaç görüntüye karşı mesafesini almak istiyorum.

Embedding (1028,) against Embedding (5, 1028)

İki gömme arasındaki mesafeyi hesaplamak için Tensorflow'dan Kosinüs benzerlik metriğini kullandığım bir görüntü benzerliği deneyi yapmaya çalışıyorum ve 1'e 1 hesaplamada iyi çalışıyor.

Embedding_1 = (1028,)
Embedding_2 = (1028,)
metrics.CosineSimilarity(Embedding_1, Embedding_2)

ama bunu 1'den N'ye mesafe hesaplamasında nasıl yapacağımı anlayamıyorum.

Embedding_1 = (1028,)
Embedding_Group = [(1028,),(1028,),(1028,),(1028,),(1028,)]
1

En iyi cevabı

1

Yayınla da yapılabilir. Her bir çift için görüntüler ve hesaplama mesafesi üzerinde yineleme yapmak, bu durumda paralelleştirilmeyeceğinden (kendiniz nasıl yapacağınızı bilmediğiniz sürece) kötü bir fikirdir.

import tensorflow as tf

embedding = tf.constant([1., 1.]) # your shape here is (1028,) instead of (2,)
embedding_group = tf.constant([[1., 1.], [1., 2.], [0., 1.]]) # your shape here is (5, 1028) instead of (3, 2)
norm_embedding = tf.nn.l2_normalize(embedding[None, ...], axis=-1)
norm_embedding_group = tf.nn.l2_normalize(embedding_group, axis=-1)
similarity = tf.reduce_sum(norm_embedding * norm_embedding_group, axis=-1) # cosine similarity of same shape as number of samples

print(norm_embedding.numpy())
print(norm_embedding_group.numpy())
print(similarity.numpy())
# [[0.7071067 0.7071067]]
# [[0.7071067  0.7071067 ]
#  [0.44721356 0.8944271 ]
#  [0.         1.        ]]
# [0.9999998  0.94868314 0.7071067 ]
2021-11-22 13:22:59

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................