Türkçe Görüntü Altyazılama: BLIP ile Bir Başlangıç Noktası

Projeye Genel Bakış ve Katkısı

Bu proje, Salesforce/blip-image-captioning-base modelinin, ituperceptron/image-captioning-turkish veri kümesinin "long_captions" bölümünden alınan bir alt küme üzerinde Türkçe görüntü altyazıları üretmek amacıyla ince ayar (fine-tuning) yapılmasına odaklanmaktadır. Amaç, görseller için otomatik, akıcı ve anlamlı Türkçe açıklamalar üretebilen bir model geliştirmek ve bu alanda bir "orta karar ama değerli bir başlangıç noktası" oluşturmaktır.

Bu çalışma, özellikle Türkçe gibi, İngilizceye kıyasla daha az kaynak ve önceden eğitilmiş modele sahip dillerde VLM (Görsel Dil Modeli) yeteneklerini keşfetmeyi ve geliştirmeyi hedefler.

Veri Kümesi

  • Adı: Türkçe Görüntü Altyazılama Veri Kümesi
  • Kaynak: ituperceptron/image-captioning-turkish
  • Yapılandırma/Split: long_captions
  • İçerik: Çeşitli görseller ve bu görsellere ait insanlar tarafından yazılmış uzun, açıklayıcı Türkçe altyazılar.
  • Kullanılan Alt Küme: Bu projede, eğitim ve değerlendirme için 60.000 örnekten oluşan bir alt küme kullanılmıştır.

Model

  • Temel Model: Salesforce/blip-image-captioning-base
  • Görev: Görüntüden Metne Çeviri (Image-to-Text) / Görüntü Altyazılama (Image Captioning)

BLIP (Bootstrapping Language-Image Pre-training), görüntü ve metin arasındaki ilişkiyi anlamak ve bu ilişkiden yola çıkarak metin üretmek üzere tasarlanmış güçlü bir VLM mimarisidir.

Temel Özellikler ve Yaklaşım

  • Salesforce/blip-image-captioning-base modeli, Türkçe altyazılama görevine adapte etmek için ituperceptron/image-captioning-turkish veri kümesi üzerinde fine tunining yapılmıştır.
  • Eğitimde, P100 GPU gibi kısıtlı kaynaklarda çalışabilmek için bellek optimizasyon teknikleri (örn: per_device_eval_batch_size=1, FP16 eğitimi, PYTORCH_CUDA_ALLOC_CONF ortam değişkeni, üretilen maksimum token sayısının sınırlandırılması) kullanılmıştır.
  • Hugging Face Transformers, Datasets ve Evaluate kütüphaneleri, veri işleme, model eğitimi ve metriklerin hesaplanması için temel araçlar olarak kullanılmıştır.
  • Modelin performansı SacreBLEU, ROUGE ve METEOR gibi standart görüntü altyazılama metrikleri ile değerlendirilmiştir.

Performans (İnce Ayar Sonrası)

Model, ituperceptron/image-captioning-turkish veri kümesinin test seti üzerinde aşağıdaki performansı göstermiştir:

  • SacreBLEU: 0.1129
  • ROUGE-L: 0.2852
  • ROUGE-1: 0.3486
  • METEOR: 0.2978

Bu metrikler, modelin Türkçe altyazı üretme yeteneğini önemli ölçüde kazandığını ve zero-shot performansına kıyasla büyük bir gelişme kaydettiğini göstermektedir. Özellikle kısıtlı veri ve donanım kaynakları göz önüne alındığında, bu sonuçlar Türkçe VLM alanında umut verici bir başlangıç noktası sunmaktadır.

Kullanım (Örnek)

Bu fine tuning yapılmış model, Hugging Face Hub'dan doğrudan yüklenebilir ve Türkçe görüntü altyazıları üretmek için kullanılabilir:

from transformers import BlipProcessor, BlipForConditionalGeneration
from PIL import Image
import torch

# 1. Modelinizi ve İşlemcinizi Hugging Face Hub'dan Yükleyin
MODEL_ID = "ogulcanakca/blip-base-turkish-image-captioning" # modelimizin Hub ID'si
try:
    processor = BlipProcessor.from_pretrained(MODEL_ID)
    model = BlipForConditionalGeneration.from_pretrained(MODEL_ID)
    print(f"'{MODEL_ID}' başarıyla yüklendi.")
except Exception as e:
    print(f"Hata: Model veya Processor yüklenemedi: {e}")
    raise

model.eval()
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
print(f"Model '{device}' cihazına taşındı ve değerlendirme modunda.")

# 2. Altyazı Üretmek İstediğiniz Görüntüyü Yükleyin
image_path = "path/to/your/image.jpg"  # <<< KENDİ GÖRÜNTÜNÜZÜN YOLUNU GİRİN
try:
    image_pil = Image.open(image_path).convert("RGB")
    print(f"'{image_path}' başarıyla yüklendi.")
except FileNotFoundError:
    print(f"HATA: Görüntü '{image_path}' bulunamadı.")
    exit()

# 3. Görüntüyü İşleyin ve Altyazı Üretin
# BLIP altyazılama modelleri genellikle text prompt'a ihtiyaç duymaz.
inputs = processor(images=image_pil, return_tensors="pt").to(device, model.dtype) # model.dtype ile aynı hassasiyette

print("\nModel ile altyazı üretiliyor...")
with torch.no_grad():
    generated_ids = model.generate(
        **inputs,
        max_length=70,       # Eğitimdeki TEXT_MAX_LENGTH ile uyumlu veya istediğiniz bir değer
        # num_beams=3,       # İsteğe bağlı: Daha kaliteli ama yavaş üretim için
        # early_stopping=True  # num_beams > 1 ise
    )
generated_caption = processor.decode(generated_ids[0], skip_special_tokens=True)

print("\nÜretilen Türkçe Altyazı:")
print(generated_caption)

# Görüntüyü göstermek için (isteğe bağlı):
# import matplotlib.pyplot as plt
# plt.imshow(image_pil)
# plt.title(generated_caption)
# plt.axis('off')
# plt.show()

Eğitim Hiperparametreleri (Örnek)

  • Base Model: Salesforce/blip-image-captioning-base
  • Learning Rate: 2e-5
  • Training Epochs: 3
  • Training Batch Size per Device: 4
  • Evaluation Batch Size per Device: 1
  • Gradient Accumulation Steps: 4 (Effective batch size: 16)
  • Warmup Ratio: 0.1
  • Weight Decay: 0.01
  • Optimizer: AdamW (adamw_torch)
  • Mixed Precision: FP16
  • Maximum Text Length (Training): 70
    • This approach was taken in anticipation that it would become disconnected from context as the length increased.

Ortam Bilgileri ve Süreler

  • Model Boyutu: Salesforce/blip-image-captioning-base (~990MB pytorch_model.bin olarak)
  • Veri Kümesi: ituperceptron/image-captioning-turkish (long_captions split'inden 60.000 örnek)
  • GPU: NVIDIA P100 (Kaggle üzerinde)
  • Toplam Eğitim Süresi (3 epoch için): 6:57:27.93
  • Saniyede eğitilen örnek sayısı: 7.186
  • Saniyede atılan eğitim adımı: 0.449
  • Çıkarım Hızı: Yaklaşık 5 örnek/saniye (Trainer.predict() ile test seti üzerinde (NVIDIA P100))

CITATION

@misc{ogulcanakca_blip_turkish_captioning_2025,
  author = {Oğulcan Akca},
  title = {Fine-tuned BLIP-Base for Turkish Image Captioning},
  year = {2025},
  publisher = {Hugging Face},
  journal = {Hugging Face Model Hub},
  howpublished = {{[https://huggingface.co/ogulcanakca/blip-base-turkish-image-captioning](https://huggingface.co/ogulcanakca/blip-base-turkish-image-captioning)}}
}
  • BLIP:
@inproceedings{li2022blip,
  title={BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation},
  author={Li, Junnan and Li, Dongxu and Xiong, Caiming and Hoi, Steven},
  booktitle={International Conference on Machine Learning (ICML)},
  year={2022}
}

Notebook'lar

Downloads last month
21
Safetensors
Model size
247M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ogulcanakca/blip-itu-turkish-captions-finetuned

Finetuned
(30)
this model

Dataset used to train ogulcanakca/blip-itu-turkish-captions-finetuned

Evaluation results