Использован Π°Π²Ρ‚ΠΎΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄

ДСмонстрация систСмы поиска ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° основС ResNet50 ΠΈ ΠΊΠΎΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ поиска ΠΏΠΎ сходству

🎯 ЦСль: ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ поисковой систСмы ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ ResNet50 для выдСлСния ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΈ косинусноС сходство для поиска ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

ИдСя этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поиска ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² вычислСнии сходства ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ всСми Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ изобраТСниями ΠΈΠ· основного Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… для получСния индСксов k Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ².

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сходства ΠΌΠ΅ΠΆΠ΄Ρƒ двумя изобраТСниями, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ всС изобраТСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ~ Π½Π°Π±ΠΎΡ€ числовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… влоТСниями / Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ResNet50 для извлСчСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎ ResNet50.

Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ эффСктивности ResNet50, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π½Π° ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (ImageNet) ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ для извлСчСния ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² Π² ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ спСктрС Π·Π°Π΄Π°Ρ‡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния. АрхитСктура ResNet50 (Π°Π²Ρ‚ΠΎΡ€: Π’ΠΈΠΊΠΈΠœΠ΅Π΄ΠΈΠ°)

ΠšΠΎΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠ΅ сходство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ†Π΅Π½ΠΊΠΈ стСпСни сходства ΠΌΠ΅ΠΆΠ΄Ρƒ двумя изобраТСниями, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ эффСктивно измСряСт Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ², Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ являСтся эффСктивным с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния вычислСний. Π€ΠΎΡ€ΠΌΡƒΠ»Π° ΠΊΠΎΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сходства (источники: ВикипСдия):Β Β 

Код Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ поиска ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

def search_similar_images(запрос_image_index, image_features, image_files, k=5):
    query_feature = image_features[индСкс_изобраТСния].ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ(1, -1)
    сходства = ΠΊΠΎΡΠΈΠ½ΡƒΡΠΎΠΈΠ΄Π°Π»ΡŒΠ½ΠΎΠ΅ сходство(query_feature, image_features).ΡΠ³Π»Π°Π΄ΠΈΡ‚ΡŒ()
    top_k_indices = сходства.argsort()[-k-1:-1][::-1] # ~ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ само ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· запроса
, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ top_k_indices

Бсылки:

1. https://www.tensorflow.org/api_docs/python/tf/keras/applications/resnet

2. https://en.wikipedia.org/wiki/Cosine_similarity

Записная ΠΊΠ½ΠΈΠΆΠΊΠ° Kaggle: https://www.kaggle.com/code/armanzhalgasbayev/image-search-engine-demo-resnet-cossim

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ 4

ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

πŸ”₯πŸ”₯πŸ”₯

ΠžΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ

πŸ”₯πŸ”₯πŸ”₯

ΠžΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ

πŸ‘

ΠžΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ