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
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:
-
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.
-
İ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.
-
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.
-
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.
-
Ç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 bu projede (Semantik Arama) tam olarak ne yapar?
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.