İçeriğe geç

OpenAI CLIP ve Meta FAISS ile Anlamsal Görüntü Arama

Giriş

Bu kılavuz, OpenAI CLIP, Meta FAISS ve Flask kullanarak anlamsal bir görsel arama motoru oluşturmanızda size yol gösterir. CLIP'in güçlü görsel-dil katıştırmalarını FAISS'in verimli en yakın komşu aramasıyla birleştirerek, doğal dil sorgularını kullanarak ilgili görüntüleri alabileceğiniz tamamen işlevsel bir web arayüzü oluşturabilirsiniz.

Semantik Görsel Arama Görsel Önizleme

Semantik arama sonuçlarına genel bakış içeren Flask web sayfası

Nasıl Çalışır

  • CLIP, görüntüler için bir görüntü kodlayıcı (örn. ResNet veya ViT) ve dil için bir metin kodlayıcı (Transformer tabanlı) kullanarak her ikisini de aynı multimodal gömme uzayına yansıtır. Bu, kosinüs benzerliği kullanılarak metin ve görüntüler arasında doğrudan karşılaştırma yapılmasına olanak tanır.
  • FAISS (Facebook Yapay Zeka Benzerlik Araması), görüntü katıştırmalarının bir dizinini oluşturur ve belirli bir sorguya en yakın vektörlerin hızlı, ölçeklenebilir bir şekilde alınmasını sağlar.
  • Flask, doğal dil sorguları göndermek ve dizinden semantik olarak eşleşen görüntüleri görüntülemek için basit bir web arayüzü sağlar.

Bu mimari sıfır çekim aramayı destekler, yani etiketlere veya kategorilere ihtiyacınız yoktur, sadece görüntü verileri ve iyi bir istem yeterlidir.

Ultralytics Python paketini kullanarak Anlamsal Görüntü Arama

Görüntü Yolu Uyarısı

Kendi resimlerinizi kullanıyorsanız, resim dizinine mutlak bir yol sağladığınızdan emin olun. Aksi takdirde, Flask'ın dosya sunma sınırlamaları nedeniyle görüntüler web sayfasında görünmeyebilir.

from ultralytics import solutions

app = solutions.SearchApp(
    # data = "path/to/img/directory" # Optional, build search engine with your own images
    device="cpu"  # configure the device for processing i.e "cpu" or "cuda"
)

app.run(debug=False)  # You can also use `debug=True` argument for testing

VisualAISearch sınıf

Bu sınıf tüm arka uç işlemlerini gerçekleştirir:

  • Yerel resimlerden bir FAISS dizini yükler veya oluşturur.
  • CLIP kullanarak görüntü ve metin gömülerini çıkarır.
  • Kosinüs benzerliğini kullanarak benzerlik araması yapar.

Benzer Görseller Arama

Görüntü Yolu Uyarısı

Kendi resimlerinizi kullanıyorsanız, resim dizinine mutlak bir yol sağladığınızdan emin olun. Aksi takdirde, Flask'ın dosya sunma sınırlamaları nedeniyle görüntüler web sayfasında görünmeyebilir.

from ultralytics import solutions

searcher = solutions.VisualAISearch(
    # data = "path/to/img/directory" # Optional, build search engine with your own images
    device="cuda"  # configure the device for processing i.e "cpu" or "cuda"
)

results = searcher("a dog sitting on a bench")

# Ranked Results:
#     - 000000546829.jpg | Similarity: 0.3269
#     - 000000549220.jpg | Similarity: 0.2899
#     - 000000517069.jpg | Similarity: 0.2761
#     - 000000029393.jpg | Similarity: 0.2742
#     - 000000534270.jpg | Similarity: 0.2680

VisualAISearch Parametreler

Aşağıdaki tablo aşağıdakiler için mevcut parametreleri özetlemektedir VisualAISearch:

Tartışma Tip Varsayılan Açıklama
data str images Benzerlik araması için kullanılan görüntü dizininin yolu.
Tartışma Tip Varsayılan Açıklama
device str None Çıkarım için cihazı belirtir (örn, cpu, cuda:0 veya 0). Kullanıcıların CPU, belirli bir GPU veya model yürütme için diğer hesaplama cihazları arasında seçim yapmasına olanak tanır.

CLIP ve FAISS ile Anlamsal Görüntü Aramanın Avantajları

CLIP ve FAISS ile kendi semantik görsel arama sisteminizi oluşturmak birçok cazip avantaj sağlar:

  1. Sıfır Atış Yetenekleri: Modeli kendi özel veri kümeniz üzerinde eğitmenize gerek yoktur. CLIP'ın sıfır vuruşlu öğrenme özelliği, serbest biçimli doğal dil kullanarak herhangi bir görüntü veri kümesinde arama sorguları gerçekleştirmenize olanak tanıyarak hem zamandan hem de kaynaklardan tasarruf etmenizi sağlar.

  2. İnsana Benzer Anlayış: Anahtar kelime tabanlı arama motorlarının aksine, CLIP semantik bağlamı anlar. "Doğada mutlu bir çocuk" veya "gece fütüristik bir şehir silüeti" gibi soyut, duygusal veya ilişkisel sorgulara dayalı görüntüleri getirebilir.

    OpenAI Klip görüntü alma iş akışı

  3. Etiket veya Meta Veriye Gerek Yok: Geleneksel görüntü arama sistemleri dikkatlice etiketlenmiş veri gerektirir. Bu yaklaşım sadece ham görüntülere ihtiyaç duyar. CLIP, herhangi bir manuel ek açıklamaya ihtiyaç duymadan yerleştirmeler oluşturur.

  4. Esnek ve Ölçeklenebilir Arama: FAISS, büyük ölçekli veri kümelerinde bile hızlı en yakın komşu araması sağlar. Hız ve bellek için optimize edilmiştir ve binlerce (veya milyonlarca) gömme ile bile gerçek zamanlı yanıt sağlar.

    Meta FAISS gömme vektörleri oluşturma iş akışı

  5. Alanlar Arası Uygulamalar: İster kişisel bir fotoğraf arşivi, ister yaratıcı bir ilham aracı, bir ürün arama motoru veya hatta bir sanat öneri sistemi oluşturuyor olun, bu yığın çok az değişiklikle farklı alanlara uyum sağlar.

SSS

CLIP hem görüntüleri hem de metinleri nasıl anlar?

CLIP (Contrastive Language Image Pretraining) OpenAI tarafından geliştirilen, görsel ve dilsel bilgileri birbirine bağlamayı öğrenen bir modeldir. Doğal dil altyazılarıyla eşleştirilmiş büyük bir görüntü veri kümesi üzerinde eğitilmiştir. Bu eğitim, hem görüntüleri hem de metni ortak bir gömme alanına eşlemesini sağlar, böylece vektör benzerliğini kullanarak bunları doğrudan karşılaştırabilirsiniz.

CLIP neden yapay zeka görevleri için bu kadar güçlü kabul ediliyor?

CLIP'ı öne çıkaran şey genelleme yeteneğidir. Sadece belirli etiketler veya görevler için eğitilmek yerine, doğal dilin kendisinden öğrenir. Bu sayede "jet ski kullanan bir adam" veya "gerçeküstü bir rüya manzarası" gibi esnek sorguların üstesinden gelebilir ve yeniden eğitim almadan sınıflandırmadan yaratıcı semantik aramaya kadar her şey için kullanışlı hale gelir.

FAISS (Facebook AI Similarity Search), yüksek boyutlu vektörler arasında çok verimli bir şekilde arama yapmanıza yardımcı olan bir araç setidir. CLIP resimlerinizi gömülü hale getirdiğinde, FAISS bir metin sorgusuna en yakın eşleşmeleri bulmayı hızlı ve kolay hale getirir, gerçek zamanlı görüntü alma için mükemmeldir.

Neden Ultralytics CLIP ve FAISS OpenAI ve Meta'dan ise Python paketi?

CLIP ve FAISS sırasıyla OpenAI ve Meta tarafından geliştirilirken, Ultralytics Python paketi, sadece çalışan 2 satırlık bir iş akışında eksiksiz bir semantik görüntü arama hattına entegrasyonlarını basitleştirir:

Benzer Görseller Arama

from ultralytics import solutions

searcher = solutions.VisualAISearch(
    # data = "path/to/img/directory" # Optional, build search engine with your own images
    device="cuda"  # configure the device for processing i.e "cpu" or "cuda"
)

results = searcher("a dog sitting on a bench")

# Ranked Results:
#     - 000000546829.jpg | Similarity: 0.3269
#     - 000000549220.jpg | Similarity: 0.2899
#     - 000000517069.jpg | Similarity: 0.2761
#     - 000000029393.jpg | Similarity: 0.2742
#     - 000000534270.jpg | Similarity: 0.2680

Bu üst düzey uygulama şunları ele alır:

  • CLIP tabanlı görüntü ve metin gömme üretimi.
  • FAISS endeksi oluşturma ve yönetimi.
  • Kosinüs benzerliği ile verimli semantik arama.
  • Dizin tabanlı görüntü yükleme ve görselleştirme.

Bu uygulamanın ön yüzünü özelleştirebilir miyim?

Evet, kesinlikle yapabilirsiniz. Mevcut kurulum temel bir HTML ön uç ile Flask kullanıyor, ancak kendi HTML'nizi değiştirmekte veya hatta React, Vue veya başka bir ön uç çerçevesi ile daha dinamik bir şey oluşturmakta özgürsünüz. Flask, özel arayüzünüz için kolayca arka uç API'si olarak kullanılabilir.

Statik görüntüler yerine videolar üzerinden arama yapmak mümkün mü?

Doğrudan değil ama basit bir çözüm var. Videolarınızdan tek tek kareler çıkarabilir (örneğin, her saniyede bir tane), bunları bağımsız görüntüler olarak ele alabilir ve bunları sisteme besleyebilirsiniz. Bu şekilde, arama motoru videolarınızdaki görsel anları semantik olarak dizine ekleyebilir.



📅 28 gün önce oluşturuldu ✏️ 26 gün önce güncellendi

Yorumlar