İçeriğe geç

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

Giriş

Bu kılavuz, OpenAI CLIP, Meta FAISS ve Flask kullanarak bir semantik görüntü arama motoru oluşturma sürecinde size yol gösterir. CLIP'in güçlü görsel-dil gömme özelliklerini 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 tam işlevsel bir web arayüzü oluşturabilirsiniz.



İzle: Benzerlik Arama Nasıl Çalışır | OpenAI CLIP, META FAISS ve Ultralytics Paketi Kullanarak Görsel Arama 🎉

Semantik Görüntü Arama Görsel Önizlemesi

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

Nasıl Çalışır

  • CLIP, görüntüleri için bir vizyon kodlayıcı (örn. ResNet veya ViT) ve dili aynı çok modlu gömme alanına yansıtmak için bir metin kodlayıcı (Transformer tabanlı) kullanır. Bu, kosinüs benzerliği kullanılarak metin ve görüntüler arasında doğrudan karşılaştırma yapılmasını sağlar.
  • FAISS (Facebook AI Similarity Search), görüntü gömme indeksini 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 atışlı aramayı destekler; bu, etiketlere veya kategorilere ihtiyacınız olmadığı, yalnızca görüntü verilerine ve iyi bir isteme ihtiyacınız olduğu anlamına gelir.

Ultralytics Python paketi kullanılarak Semantik Görüntü Arama

Resim 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 resimler 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 görüntülerden bir FAISS dizini yükler veya oluşturur.
  • CLIP kullanarak görüntü ve metin gömme (embeddings) işlemlerini çıkarır.
  • Kosinüs benzerliğini kullanarak benzerlik araması yapar.

Benzer Görüntü Arama

Resim 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 resimler 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 tabloda, için mevcut parametreler özetlenmektedir: VisualAISearch:

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

CLIP ve FAISS ile Semantik Görüntü Arama'nın Avantajları

CLIP ve FAISS ile kendi anlamsal görsel arama sisteminizi oluşturmak çeşitli avantajlar sağlar:

  1. Sıfır Atış Yetenekleri (Zero-Shot Capabilities): Modeli belirli veri kümeniz üzerinde eğitmenize gerek yoktur. CLIP'in sıfır atışlı öğrenme özelliği, serbest biçimli doğal dili kullanarak herhangi bir görüntü veri kümesinde arama sorguları yapmanıza olanak tanıyarak hem zamandan hem de kaynaklardan tasarruf sağlar.

  2. İnsan Benzeri 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 göre görüntüleri alabilir.

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

  3. Etiketlere veya Meta Verilere Gerek Yok: Geleneksel görüntü arama sistemleri, dikkatlice etiketlenmiş veriler gerektirir. Bu yaklaşım yalnızca ham görüntülere ihtiyaç duyar. CLIP, herhangi bir manuel açıklama gerektirmeden gömme işlemleri oluşturur.

  4. Esnek ve Ölçeklenebilir Arama: FAISS, büyük ölçekli veri kümeleriyle 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. Çapraz Alan Uygulamaları: İster kişisel bir fotoğraf arşivi, ister yaratıcı bir ilham aracı, bir ürün arama motoru, hatta bir sanat öneri sistemi oluşturuyor olun, bu yığın minimum ayarlamayla çeşitli alanlara uyum sağlar.

SSS

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

CLIP (Kontrastif Dil Görüntü Ön Eğitimi), görsel ve dilsel bilgileri birbirine bağlamayı öğrenen OpenAI tarafından geliştirilen bir modeldir. Doğal dil başlıkları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 metinleri ortak bir gömme alanına eşlemesine olanak tanır, böylece bunları vektör benzerliğini kullanarak doğrudan karşılaştırabilirsiniz.

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

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

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, görüntülerinizi gömmelere dönüştürdükten sonra, FAISS bir metin sorgusuna en yakın eşleşmeleri bulmayı hızlı ve kolay hale getirir, bu da gerçek zamanlı görüntü alma için mükemmeldir.

CLIP ve FAISS OpenAI ve Meta'dan ise neden Ultralytics Python paketini kullanmalıyım?

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

Benzer Görüntü 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 dizin 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 yüzü ile Flask kullanır, ancak kendi HTML'nizi değiştirmekte veya hatta React, Vue veya başka bir ön yüz çerçevesiyle daha dinamik bir şey oluşturmakta özgürsünüz. Flask, özel arayüzünüz için arka uç API'si olarak kolayca hizmet verebilir.

Statik resimler yerine videolarda arama yapmak mümkün mü?

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



📅 2 ay önce oluşturuldu ✏️ 23 gün önce güncellendi

Yorumlar