CLIP (Contrastive Language-Image Pre-training)
CLIP, görüntüleri ve metni ortak bir uzayda gömülü vektörlere dönüştüren, böylece görüntüleri düz metin etiketleriyle sınıflandıran OpenAI modelidir. Eğitimin ve sıfır örnekli öğrenmenin nasıl çalıştığını öğren.
CLIP (Karşıtlıksal Dil-Görüntü Ön Eğitimi), görüntüleri metin açıklamalarıyla eşleştirmeyi öğrenen OpenAI modelidir. Bir görüntü kodlayıcıyı metin kodlayıcıyla eşleştirir ve görüntüyle onu açıklayan bir altyazının ortak bir gömme uzayında birbirine yakın vektörlere dönüşmesi için ikisini birlikte eğitir. İnternetten toplanan 400 milyon görüntü-altyazı çiftiyle eğitilen CLIP, yalnızca metinle belirtilen kategorilerde, bu kategorilere ait etiketli örnekler olmadan görüntüleri sınıflandırabilir; bu yeteneğe sıfır örnekli öğrenme denir. 2021 tarihli makalede, en iyi modeli ImageNet üzerinde %76,2 sıfır örnekli top-1 doğruluğa ulaşarak, ResNet-50'nin eğitiminde kullanılan 1,28 milyon etiketli görüntünün hiçbirini kullanmadan, tamamen denetimli özgün ResNet-50 modeliyle aynı başarıyı gösterdi.
CLIP Nasıl Eğitilir?#
CLIP'in iki kodlayıcısı vardır. Görüntü kodlayıcı bir ResNet veya Görsel Transformer'dır (ViT); metin kodlayıcı ise temel boyutunda 63 milyon parametre içeren, 12 katmanlı bir Transformer'dır. Doğrusal bir izdüşüm, her kodlayıcının çıktısını ortak uzaya eşler ve burada her vektör birim uzunluğa normalize edilir.
Eğitim, 32.768 görüntü-altyazı çiftinden oluşan yığınlar üzerinde karşıtlıksal öğrenme kullanır. N çiftlik bir yığın için CLIP, her görüntünün her altyazıyla kosinüs benzerliğini hesaplayarak köşegeni doğru çiftlerden oluşan N×N boyutlu bir matris elde eder. Her satıra uygulanan softmax çapraz entropi kaybı, her görüntünün N seçenek arasından kendi altyazısını seçmesini ister; sütunlara uygulanan ikinci bir kayıp da her altyazının kendi görüntüsünü seçmesini sağlar. Öğrenilebilir bir sıcaklık parametresi, softmax öncesinde benzerlikleri ölçeklendirir.
Altyazılar serbest biçimli metin olduğundan CLIP; nesneler, sahneler, sanat tarzları, görüntülerdeki metinler ve eylemler dâhil, web'de açıklanan her şeyden, sabit bir sınıf listesi yerine bunlardan öğrenir.
Sıfır Örnekli Sınıflandırma#
Bir görüntüyü sınıflandırmak için CLIP, her aday etiketi "bir köpeğin fotoğrafı" gibi kısa bir cümleyle ifade eder, bu cümlenin ve görüntünün vektör temsillerini oluşturur ve kosinüs benzerliği en yüksek olan etiketi seçer. İstem ifadesi önemlidir: makale, tek başına "Bir {label} fotoğrafı." şablonunun ImageNet doğruluğunu %1,3 artırdığını ve 80 şablona ait metin gömme vektörlerinin ortalamasını almanın doğruluğa %3,5 daha katkı sağladığını bildiriyor. Aşağıdaki Hugging Face Transformers işlem hattı her etiketi "Bu bir {} fotoğrafı." şablonuna yerleştirir ve özgün ViT-B/32 modelini çalıştırır:
from transformers import pipeline
# Load OpenAI's CLIP ViT-B/32 for zero-shot image classification
classifier = pipeline("zero-shot-image-classification", model="openai/clip-vit-base-patch32")
# The classes are free-form text, chosen at inference time
labels = ["a city bus", "a tram", "a delivery truck", "a bicycle"]
predictions = classifier("https://ultralytics.com/images/bus.jpg", candidate_labels=labels)
# Scores are a softmax over the image's similarity to each caption
for prediction in predictions:
print(f"{prediction['label']}: {prediction['score']:.3f}")a city bus: 0.657, a tram: 0.341, a delivery truck: 0.001 ve a bicycle: 0.000 çıktısını verir. Tramvay, yolcu taşıyan başka bir büyük taşıt olarak kalan olasılığın neredeyse tamamını alır; yeni bir etiket kümesi için yalnızca yeni bir metin listesi gerekir.
Gerçek Dünya Uygulamaları#
- Anlamsal arama: Görüntü koleksiyonları bir kez gömülür ve bir vektör veritabanında saklanır. "Ahşap zeminde kırmızı spor ayakkabılar" gibi bir metin sorgusu arama sırasında gömülüp bunlarla eşleştirilir; böylece görüntüler manuel etiketler olmadan içeriğe göre bulunur.
- Metinden görüntüye üretim: Stable Diffusion 1.x, görüntü oluşturucusunu CLIP ViT-L/14'ün metin gömmeleriyle koşullandırır; CLIP benzerliği de oluşturulan bir görüntünün istemine ne ölçüde uyduğunu puanlamak için yaygın biçimde kullanılır.
- Açık söz varlıklı algılama: Ultralytics paketinde çalışan Tencent AI Lab'in YOLO-World modelleri,
set_classesişlevine iletilen sınıf adlarını CLIP'in ViT-B/32 metin kodlayıcısıyla kodlar; böylece bir kez eğitilen bir algılayıcı "red backpack" veya "forklift" gibi nesneleri adlarıyla bulabilir. Google'ın OWLv2 modeli, CLIP'in önceden eğitilmiş görüntü ve metin kodlayıcılarını temel alır. VLM Leaderboard, OWLv2'yi gerçek dünya algılama veri kümelerinde diğer açık söz varlıklı algılayıcılar ve VLM'lerle karşılaştırır. - VLM'ler için görsel kodlayıcılar: Birçok görsel dil modeli, önceden eğitilmiş bir CLIP görüntü kodlayıcısıyla başlar. Örneğin LLaVA, CLIP ViT-L/14 özelliklerini bir dil modeline aktarır.
- Veri kümesi filtreleme: LAION-5B gibi büyük açık görüntü-metin veri kümeleri, CLIP görüntü-metin benzerliği bir eşiği geçen web çiftlerini tutar ve görüntülerini açıklamayan altyazıları kaldırır.
CLIP ve İlgili Yaklaşımlar#
- Denetimli öğrenme sınıflandırıcıları: Standart bir sınıflandırıcının her eğitim sınıfı için bir çıktısı vardır ve hiç görmediği bir sınıfa puan veremez. CLIP'in "sınıflandırıcısı" metin gömmelerinden oluşur; dolayısıyla etiketler değiştikçe o da değişir.
- SigLIP: Google'ın bu varyantı, CLIP'in tüm yığına uygulanan softmax işlevini her görüntü-metin çiftini bağımsız puanlayan sigmoid kaybıyla değiştirir; böylece daha az bellek kullanır ve küçük yığın boyutlarında daha iyi çalışır.
- Kendi kendini denetleyen karşıtlıksal öğrenme: SimCLR gibi yöntemler aynı görüntünün artırılmış iki görünümünü karşılaştırır ve yalnızca görüntülerden öğrenir. CLIP ise iki farklı modaliteyi karşılaştırarak görüntü özelliklerini sözcüklere bağlar.
- Üretici VLM'ler: CLIP, görüntü-metin benzerliğini puanlar ve altyazı yazamaz ya da soruları yanıtlayamaz. Üretici modeller bir dil modelini görüntü kodlayıcıya, çoğu zaman CLIP'in kendisine, bağlar.
Sınırlamalar#
CLIP'in sıfır örnekli doğruluğu; uçak veya araba modelleri gibi ince ayrımlı kategorilerde, nesne sayma ve mesafeleri tahmin etme gibi soyut görevlerde düşer. Ayrıca web altyazılarındaki yanlılıkları da öğrenir. CLIP, görüntülerdeki metinleri okumayı öğrendiğinden bu metinlerle yanıltılabilir: OpenAI'ın çok modlu nöronlar araştırmasında, üzerine el yazısıyla "iPod" etiketi konmuş bir elma iPod olarak sınıflandırılmıştır.










