YOLO Vision 2026:

OpenAI CLIP ile Anlamsal Görsel Arama Nasıl Oluşturulur#

OpenAI CLIP ve Flask kullanarak bir anlamsal görsel arama motoru oluşturman için bu rehber sana yol gösterir. CLIP'in görsel-dil gömmelerini, NumPy tarafından desteklenen hızlı kosinüs benzerliği aramasıyla birleştirerek, hiçbir etiket veya kategori gerektirmeden doğal dil sorgularından ilgili görselleri getiren bir web arayüzü kurabilirsin.



Watch: How Similarity Search Works | Visual Search Using OpenAI CLIP and the Ultralytics Package 🎉

Anlamsal arama sonuçları genel görünümüne sahip Flask web sayfası

Ultralytics Python paketi tüm bu boru hattını iki sınıfın arkasında sarmalar; böylece birkaç satırda çalışan bir arama uygulaması başlatabilir veya programatik olarak sorgular çalıştırabilirsin. Bu kılavuz; anlamsal aramanın neden yararlı olduğunu, nasıl çalıştığını, web uygulamasının nasıl çalıştırılacağını, programatik olarak nasıl arama yapılacağını ve parametrelerin nasıl yapılandırılacağını kapsar.

Anlamsal Görsel Arama Neden Kullanılır?#

CLIP ile kendi anlamsal görsel arama sistemini kurmanın birçok avantajı vardır:

  • Sıfır vuruş (zero-shot) yetenekleri: Veri setin üzerinde eğitim yapmana gerek yoktur. CLIP'in sıfır vuruşlu öğrenmesi, herhangi bir görsel koleksiyonunu serbest biçimli doğal dil ile sorgulamana olanak tanıyarak zamandan ve kaynaklardan tasarruf sağlar.
  • İnsan benzeri anlama: Anahtar kelime aramasının aksine, CLIP anlamsal bağlamı anlar ve "doğada mutlu bir çocuk" veya "gece fütüristik bir şehir silüeti" gibi soyut, duygusal veya ilişkisel sorgulardan görseller getirebilir.
  • Etiket veya meta veri gerekmez: Bu yaklaşım yalnızca ham görsellere ihtiyaç duyar. CLIP, herhangi bir manuel açıklama gerektirmeden embedding'ler üretir.
  • Hafif ve kesin arama: NumPy içindeki tek bir normalleştirilmiş matris çarpımı, her görseli cosine similarity değerine göre sıralar; binlerce embedding üzerinde gerçek zamanlı yanıt verir ve yönetilecek ekstra bir arama bağımlılığı gerektirmez.
  • Çapraz alan uygulamaları: Kişisel bir fotoğraf arşivi, yaratıcı bir ilham aracı, ürün arama motoru veya sanat öneri sistemi geliştiriyor olsan da, aynı teknoloji yığını minimum değişiklikle uyum sağlar.

Anlamsal Görsel Arama Nasıl Çalışır?#

İşlem hattı, görselleri ve metni sıralanmış sonuçlara dönüştürmenin her aşamasını yöneten üç bileşeni birleştirir:

  • CLIP, görseller için bir görsel kodlayıcı (ör. ResNet veya ViT) ve dil için bir metin kodlayıcı (Transformer tabanlı) kullanarak her ikisini de aynı çok modlu gömüm uzayına yansıtır. Bu, kosinüs benzerliği kullanarak metin ve görseller arasında doğrudan karşılaştırma yapılmasına olanak tanır.
  • NumPy, görsel embeddinglerini tek bir dizi olarak saklar ve bunları bir sorgu embedding'i ile tek bir matris çarpımıyla karşılaştırarak, ekstra bir indeksleme bağımlılığı olmadan cosine similarity açısından en yakın vektörleri döndürür.
  • Flask, doğal dilde sorgular göndermek ve dizinden anlamsal olarak eşleşen görselleri görüntülemek için basit bir web arayüzü sunar.

OpenAI Clip görsel getirme iş akışı

Hem görseller hem de metin aynı vektör uzayında yer aldığından, arama zero-shot'tır: etiketlere veya kategorilere ihtiyacın yoktur, sadece görsel verisine ve iyi bir isteme (prompt) sahip olman yeterlidir.

Anlamsal Arama Web Uygulamasını Çalıştır#

SearchApp sınıfı, tam Flask arayüzünü başlatır. İlk çalıştırılışında örnek bir görsel seti indirir, gömüm indeksini oluşturur ve bir sorgu yazıp sıralanmış sonuçları görüntüleyebileceğin bir sayfa sunar.

Görsel Yolu Uyarısı

Kendi görsellerini kullanıyorsan, görsel dizinine mutlaka mutlak bir yol sağladığından emin ol. Aksi takdirde, Flask'ın dosya sunma sınırlamaları nedeniyle görseller web sayfasında görünmeyebilir.

from ultralytics import solutions

app = solutions.SearchApp(
    data="images",  # replace with a path to build the search engine with your own images
    device="cpu",  # configure the device for processing, e.g., "cpu" or "cuda"
)

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

Programatik Olarak Görsel Ara#

VisualAISearch sınıfı, web katmanı olmadan tüm arka uç işlemlerini gerçekleştirir:

  • Yerel görsellerden bir embedding indeksi yükler veya oluşturur.
  • CLIP kullanarak görsel ve metin gömümlerini çıkarır.
  • Kosinüs benzerliğini kullanarak benzerlik araması yapar.

Arayıcıyı doğal dilde bir sorguyla çağırarak, benzerliğe göre sıralanmış eşleşen görsel dosya isimlerinin bir listesini alabilirsin:

from ultralytics import solutions

searcher = solutions.VisualAISearch(
    data="images",  # replace with a path to build the search engine with your own images
    device="cpu",  # configure the device for processing, e.g., "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 Parametrelerini Yapılandır#

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

ArgümanTipVarsayılanAçıklama
datastr'images'Benzerlik araması için kullanılan görüntü dizinine giden yol.
ArgümanTipVarsayılanAçıklama
devicestrNoneÇıkarım için cihazı belirtir (ör. cpu, cuda:0 veya 0). Kullanıcıların model yürütme için CPU, belirli bir GPU veya diğer bilgi işlem cihazları arasında seçim yapmasına olanak tanır.
Verilerini bulutta yönet

Yerel dosyaları yönetmeden üretim ölçeğinde görsel koleksiyonlarında arama yapmak için, CLIP ile indekslemeden önce görsellerini Ultralytics Platform içinde organize edebilir ve sürümleyebilirsin.

Sonuç#

CLIP ve Ultralytics Python paketi ile ister bir Flask web uygulaması olarak ister programatik bir arama arka ucu olarak sadece birkaç satırda sıfır vuruşlu bir anlamsal görsel arama motoru ayağa kaldırabilirsin. Buradan, indekslemek için data öğesini kendi görsel dizinine yönlendir ve ardından bilgisayarlı görü iş akışlarının üzerine inşa etmek için diğer Ultralytics Çözümlerini keşfet.

SSS#

CLIP hem görselleri hem de metni nasıl anlıyor?#

CLIP (Contrastive Language Image Pretraining - Karşılaştırmalı Dil Görsel Ön Eğitimi), OpenAI tarafından geliştirilen ve görsel ile dilsel bilgileri birbirine bağlamayı öğrenen bir modeldir. Doğal dil açıklamalarıyla eşleştirilmiş devasa bir görsel veri seti üzerinde eğitilmiştir. Bu eğitim, hem görselleri hem de metinleri ortak bir gömüm uzayına eşlemesine olanak tanır, böylece bunları vektör benzerliği kullanarak doğrudan karşılaştırabilirsin.

CLIP neden yapay zeka görevleri için 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 ski süren bir adam" veya "sürreal bir rüya manzarası" gibi esnek sorguları işlemesine olanak tanır ve yeniden eğitim gerektirmeden sınıflandırmadan yaratıcı anlamsal aramaya kadar her şey için kullanışlı olmasını sağlar.

Görseller bir metin sorgusuna göre nasıl sıralanır?#

CLIP görsellerini gömümlere dönüştürdükten sonra, Ultralytics paketi bunları L2 normalizasyonundan geçirir ve tek bir NumPy dizisinde saklar. Bir sorgu, sorgu gömümü ile her bir görsel gömümü arasındaki kosinüs benzerliğini hesaplayan ve ardından puanları sıralayan tek bir matris çarpımıyla sıralanır. Bu kaba kuvvet araması, yüklemek veya yönetmek için ekstra bir vektör veritabanı bağımlılığı olmaksızın tipik görsel koleksiyonları için kesin ve hızlıdır.

CLIP OpenAI'dendiyse neden Ultralytics Python paketini kullanmalısın?#

CLIP OpenAI tarafından geliştirilmiş olsa da, Ultralytics Python paketi gömüm oluşturma, indeksleme ve kosinüs benzerliği aramasını, doğrudan çalışan birkaç satırlık kodun arkasında eksiksiz bir anlamsal görsel arama boru hattında toplar:

from ultralytics import solutions

searcher = solutions.VisualAISearch(
    data="images",  # replace with a path to build the search engine with your own images
    device="cpu",  # configure the device for processing, e.g., "cpu" or "cuda"
)

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

Bu üst düzey uygulama şunları yönetir:

  • CLIP tabanlı görsel ve metin embedding üretimi.
  • Embedding indeksi oluşturma ve yönetimi.
  • Kosinüs benzerliği ile verimli anlamsal arama.
  • Dizin tabanlı görsel yükleme ve görselleştirme.

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

Evet. Mevcut kurulum basit bir HTML ön yüzüyle Flask kullanır, ancak bunu kendi HTML'inle değiştirebilir veya React, Vue ya da başka bir ön yüz çerçevesiyle daha dinamik bir kullanıcı arayüzü oluşturabilirsin. Flask, özel arayüzün için arka uç API'si olarak görev yapabilir.

Sabit görseller yerine videolar üzerinde arama yapmak mümkün mü?#

Doğrudan değil. Basit bir geçici çözüm, videolarından tek tek kareleri çıkarmak (ör. saniyede bir kare), bunları bağımsız görseller olarak ele almak ve bunları sisteme beslemektir. Bu sayede arama motoru, videolarındaki görsel anları anlamsal olarak dizine ekleyebilir.

Yorumlar