Ultralytics YOLO27:
Get Started

Albumentations Kullanarak YOLO26 Eğitimi İçin Veri Kümeni Zenginleştir#

Bilgisayarlı görü modelleri geliştirirken eğitim verilerinin kalitesi ve çeşitliliği, modelinin performansını büyük ölçüde etkileyebilir. Albumentations, modelinin gerçek dünya senaryolarına uyum sağlama becerisini artırabilecek çok çeşitli görüntü dönüşümlerini uygulamak için hızlı, esnek ve verimli bir yol sunar. Ultralytics YOLO26 ile kolayca bütünleşir ve nesne algılama, segmentasyon ve sınıflandırma görevleri için sağlam veri kümeleri oluşturmana yardımcı olabilir.

Albumentations kullanarak YOLO26 eğitim verilerini geometrik dönüşümler ve renk ayarlamaları gibi tekniklerle geliştirebilirsin. Bu makalede, Albumentations'ın veri artırma sürecini nasıl iyileştirebileceğini ve YOLO26 projelerini nasıl daha da etkili hâle getirebileceğini göreceksin. Hadi başlayalım!

Görüntü Artırma İçin Albumentations#

Albumentations, Haziran 2018'de oluşturulmuş açık kaynaklı bir görüntü artırma kütüphanesidir. Bilgisayarlı görü alanındaki görüntü artırma sürecini basitleştirmek ve hızlandırmak için tasarlanmıştır. Performans ve esneklik gözetilerek geliştirilen Albumentations, döndürme ve çevirme gibi basit dönüşümlerden parlaklık ve kontrast değişiklikleri gibi daha karmaşık ayarlamalara kadar uzanan çok çeşitli artırma tekniklerini destekler. Albumentations, geliştiricilerin görüntü sınıflandırma, nesne algılama ve segmentasyon gibi görevler için zengin ve çeşitli veri kümeleri oluşturmasına yardımcı olur.

Albumentations ile görüntülere, segmentasyon maskelerine, sınırlayıcı kutulara ve anahtar noktalara kolayca artırma uygulayabilir ve veri kümenin tüm öğelerinin birlikte dönüştürülmesini sağlayabilirsin. PyTorch ve TensorFlow gibi popüler derin öğrenme çerçeveleriyle sorunsuz çalışır ve böylece çok çeşitli projelerde kullanılabilir.

Ayrıca Albumentations, küçük veri kümeleriyle veya büyük ölçekli bilgisayarlı görü görevleriyle çalışırken artırma için harika bir seçenektir. Hızlı ve verimli işleme sağlayarak veri hazırlığı için harcanan zamanı azaltır. Aynı zamanda model performansını iyileştirmeye yardımcı olur ve modellerini gerçek dünya uygulamalarında daha etkili hâle getirir.

Albumentations'ın Temel Özellikleri#

Albumentations, çok çeşitli bilgisayarlı görü uygulamalarında karmaşık görüntü artırma işlemlerini basitleştiren pek çok kullanışlı özellik sunar. Öne çıkan özelliklerinden bazıları şunlardır:

  • Geniş Dönüşüm Yelpazesi: Albumentations, geometrik değişiklikler (ör. döndürme, çevirme), renk ayarlamaları (ör. parlaklık, kontrast) ve gürültü ekleme (ör. Gauss gürültüsü) dâhil 70'in üzerinde farklı dönüşüm sunar. Birden fazla seçenek, son derece çeşitli ve sağlam eğitim veri kümeleri oluşturmayı sağlar.

Albumentations augmentation examples

  • Yüksek Performanslı Optimizasyon: OpenCV ve NumPy üzerine kurulu Albumentations, işlemleri hızlandırmak için birden fazla veri noktasını aynı anda işleyen SIMD (Tek Komut, Çoklu Veri) gibi gelişmiş optimizasyon tekniklerinden yararlanır. Büyük veri kümelerini hızlıca işleyerek görüntü artırma için kullanılabilen en hızlı seçeneklerden biri hâline gelir.

  • Üç Artırma Düzeyi: Albumentations üç artırma düzeyini destekler: piksel düzeyinde dönüşümler, uzamsal düzeyde dönüşümler ve karıştırma düzeyinde dönüşümler. Piksel düzeyindeki dönüşümler, maskeleri, sınırlayıcı kutuları veya anahtar noktaları değiştirmeden yalnızca giriş görüntülerini etkiler. Uzamsal düzeydeki dönüşümlerde ise hem görüntü hem de maske ve sınırlayıcı kutu gibi öğeleri dönüştürülür. Ayrıca karıştırma düzeyindeki dönüşümler, birden çok görüntüyü tek bir görüntüde birleştirerek veriyi artırmanın özgün bir yolunu sunar.

Farklı Artırma Düzeylerine Genel Bakış

Görüntü Yapay Zekâ Projelerinde Neden Albumentations Kullanmalısın?#

Görüntü artırma söz konusu olduğunda Albumentations, bilgisayarlı görü görevleri için güvenilir bir araç olarak öne çıkar. Görüntü Yapay Zekâ projelerinde kullanmayı düşünmen için birkaç önemli neden:

  • Kullanımı Kolay API: Albumentations; görüntülere, maskelere, sınırlayıcı kutulara ve anahtar noktalara çok çeşitli artırmalar uygulamak için tek ve basit bir API sunar. Farklı veri kümelerine kolayca uyum sağlayacak şekilde tasarlanmıştır; böylece veri hazırlama daha basit ve verimli hâle gelir.

  • Titiz Hata Testleri: Artırma hattındaki hatalar, giriş verilerini sessizce bozabilir; çoğu zaman fark edilmeyip sonunda model performansını düşürür. Albumentations, geliştirme sürecinin başlarında hataları yakalamaya yardımcı olan kapsamlı bir test paketiyle bu sorunu ele alır.

  • Genişletilebilirlik: Albumentations, yerleşik dönüşümlerin yanı sıra tek bir arayüz üzerinden yeni artırmalar eklemek ve bunları bilgisayarlı görü hatlarında kullanmak için kolayca kullanılabilir.

YOLO26 Eğitimi İçin Verileri Albumentations ile Artırma#

Albumentations'ın ne olduğunu ve neler yapabildiğini ele aldığımıza göre, şimdi YOLO26 model eğitimi için verilerini artırma amacıyla nasıl kullanabileceğine bakalım. Doğrudan Ultralytics'in eğitim moduna entegre olduğu ve Albumentations paketi yüklüyse otomatik olarak uygulandığı için kurulumu kolaydır.

Kurulum#

Albumentations'ı YOLO26 ile kullanmak için önce gerekli paketlerin yüklü olduğundan emin ol. Albumentations yüklü değilse eğitim sırasında artırmalar uygulanmaz. Kurulumu tamamladıktan sonra Albumentations'ın modeli otomatik olarak iyileştirmek üzere entegre edildiği, artırılmış bir veri kümesi oluşturmaya hazır olursun.

Kurulum
# Install the required packages
pip install albumentations ultralytics

Kurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Kurulum kılavuzumuza göz at. YOLO26 için gerekli paketleri yüklerken zorluk yaşarsan çözüm ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.

Bu sayfadaki özel dönüşüm örnekleri Albumentations 1.4.22 veya daha yeni bir sürümü ve dolayısıyla Python 3.9 veya daha yeni bir sürümü gerektirir.

Kullanım#

Gerekli paketleri yükledikten sonra Albumentations'ı YOLO26 ile kullanmaya başlayabilirsin. YOLO26'yı eğittiğinde Albumentations entegrasyonu aracılığıyla bir dizi artırma otomatik olarak uygulanır ve böylece modelinin performansını kolayca iyileştirebilirsin.

Kullanım
from ultralytics import YOLO

# Önceden eğitilmiş bir modeli yükle
model = YOLO("yolo26n.pt")

# Modeli varsayılan artırmalarla eğit
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Şimdi eğitim sırasında uygulanan belirli artırmaları daha yakından inceleyelim.

Bulanıklaştırma#

Albumentations'taki Blur dönüşümü, küçük kare bir alandaki veya çekirdekteki piksel değerlerinin ortalamasını alarak görüntüye basit bir bulanıklaştırma efekti uygular. Bu işlem, görüntüdeki gürültüyü azaltmaya yardımcı olan OpenCV cv2.blur işleviyle yapılır; ancak görüntü ayrıntılarını da bir miktar azaltır.

Bu entegrasyonda kullanılan parametreler ve değerler şunlardır:

  • blur_limit: Bulanıklaştırma efektinin boyut aralığını belirler. Varsayılan aralık (3, 7) şeklindedir; yani bulanıklaştırma çekirdeğinin boyutu 3 ile 7 piksel arasında değişebilir. Bulanıklığın merkezde kalması için yalnızca tek sayılara izin verilir.

  • p: Bulanıklaştırma uygulama olasılığıdır. Entegrasyonda p=0.01 olduğundan her görüntüye bu bulanıklaştırmanın uygulanma olasılığı %1'dir. Bu düşük olasılık, arada sırada bulanıklaştırma uygulayarak görüntüleri aşırı bulanıklaştırmadan modele bir miktar çeşitlilik kazandırır ve genelleme becerisini artırmaya yardımcı olur.

Albumentations Blur augmentation result

Medyan Bulanıklaştırma#

Albumentations'taki MedianBlur dönüşümü, kenarları korurken gürültüyü azaltmada özellikle yararlı olan medyan bulanıklaştırma efektini görüntüye uygular. Tipik bulanıklaştırma yöntemlerinden farklı olarak MedianBlur, özellikle kenarların keskinliğini koruyarak tuz-biber gürültüsünü gidermede etkili bir medyan filtresi kullanır.

Bu entegrasyonda kullanılan parametreler ve değerler şunlardır:

  • blur_limit: Bu parametre, bulanıklaştırma çekirdeğinin maksimum boyutunu belirler. Bu entegrasyonda varsayılan aralık (3, 7) şeklindedir; yani uygun hizalamayı sağlamak için yalnızca tek değerlere izin verilerek bulanıklaştırma çekirdeği boyutu rastgele 3 ile 7 piksel arasında seçilir.

  • p: Medyan bulanıklaştırma uygulanma olasılığını belirler. Burada p=0.01 olduğundan dönüşümün her görüntüye uygulanma olasılığı %1'dir. Bu düşük olasılık, medyan bulanıklaştırmanın seyrek kullanılmasını sağlar; böylece model zaman zaman gürültüsü azaltılmış ve kenarları korunmuş görüntüler görerek genelleme becerisini artırır.

Aşağıdaki görüntü, bu artırmanın bir görüntüye uygulanmış örneğini gösterir.

Albumentations MedianBlur augmentation

Gri Tonlama#

Albumentations'taki ToGray dönüşümü, görüntüyü gri tonlamaya dönüştürerek tek kanallı biçime indirger ve isteğe bağlı olarak bu kanalı belirtilen sayıda çıktı kanalına çoğaltır. Gri ton parlaklığının nasıl hesaplanacağını ayarlamak için basit ortalamadan kontrast ve parlaklık algısını gerçeğe yakın biçimde yansıtan daha gelişmiş tekniklere kadar farklı yöntemler kullanılabilir.

Bu entegrasyonda kullanılan parametreler ve değerler şunlardır:

  • num_output_channels: Çıktı görüntüsündeki kanal sayısını belirler. Bu değer 1'den büyükse tek gri tonlama kanalı çoğaltılarak çok kanallı gri tonlamalı bir görüntü oluşturulur. Varsayılan değer 3'tür; böylece üç özdeş kanaldan oluşan gri tonlamalı bir görüntü elde edilir.

  • method: Gri tonlamaya dönüştürme yöntemini belirler. Varsayılan yöntem olan "weighted_average", insan algısıyla yakından örtüşen (0.299R + 0.587G + 0.114B) formülünü uygulayarak doğal görünümlü bir gri tonlama efekti sağlar. "from_lab", "desaturation", "average", "max" ve "pca" gibi diğer seçenekler; hız, parlaklık vurgusu veya ayrıntıların korunması gereksinimlerine göre gri tonlamalı görüntüler oluşturmak için alternatif yollar sunar.

  • p: Gri tonlama dönüşümünün ne sıklıkta uygulanacağını belirler. p=0.01 olduğunda her görüntüyü gri tonlamaya dönüştürme olasılığı %1'dir; böylece modelin daha iyi genelleme yapmasına yardımcı olmak için renkli ve gri tonlamalı görüntüler bir arada kullanılabilir.

Aşağıdaki görüntü, bu gri tonlama dönüşümünün uygulanmış bir örneğini gösterir.

Albumentations grayscale conversion

Kontrast Sınırlı Adaptif Histogram Eşitleme (CLAHE)#

Albumentations'taki CLAHE dönüşümü, görüntü kontrastını tüm görüntü genelinde değil yerel bölgelerde (kutucuklarda) histogram eşitlemesi yaparak artıran bir teknik olan Kontrast Sınırlı Adaptif Histogram Eşitleme'yi (CLAHE) uygular. CLAHE, standart histogram eşitlemesinde özellikle başlangıçta düşük kontrasta sahip bölgelerde görülebilen aşırı kontrast artışını önleyerek dengeli bir iyileştirme efekti oluşturur.

Bu entegrasyonda kullanılan parametreler ve değerler şunlardır:

  • clip_limit: Kontrast iyileştirme aralığını belirler. Varsayılan aralık (1, 4) olarak ayarlanır ve her kutucukta izin verilen maksimum kontrastı belirler. Daha yüksek değerler daha fazla kontrast sağlar, ancak gürültüye de yol açabilir.

  • tile_grid_size: Genellikle (satır, sütun) biçiminde belirtilen kutucuk ızgarasının boyutunu tanımlar. Varsayılan değer (8, 8)'dir; yani görüntü 8x8'lik bir ızgaraya bölünür. Daha küçük kutucuk boyutları daha yerel ayarlamalar sağlarken, daha büyük boyutlar genel eşitlemeye daha yakın efektler oluşturur.

  • p: CLAHE uygulama olasılığıdır. Burada p=0.01 olduğundan iyileştirme efekti yalnızca %1 olasılıkla uygulanır ve eğitim görüntülerinde ara sıra çeşitlilik sağlamak için kontrast ayarlamaları seyrek yapılır.

Aşağıdaki görüntü, CLAHE dönüşümünün uygulanmış bir örneğini gösterir.

Albumentations CLAHE contrast enhancement

Özel Albumentations Dönüşümleri Kullanma#

Varsayılan Albumentations entegrasyonu güçlü bir artırma seçenekleri kümesi sunsa da kullanım durumuna özel dönüşümler belirlemek isteyebilirsin. Ultralytics YOLO26 ile Python API'sini kullanarak augmentations parametresi üzerinden özel Albumentations dönüşümlerini kolayca iletebilirsin. Bu bölümdeki örnekler Albumentations 1.4.22 veya daha yeni bir sürüm gerektirir.

Özel Dönüşümler Tanımlama#

Kendi Albumentations dönüşüm listeni tanımlayıp eğitim işlevine iletebilirsin. Böylece diğer tüm YOLO artırmaları (hsv_h, degrees, mosaic vb.) etkin kalırken varsayılan Albumentations dönüşümleri değiştirilir.

Daha gelişmiş dönüşümlere bir örnek:

import albumentations as A

from ultralytics import YOLO

# Modeli yükle
model = YOLO("yolo26n.pt")

# Çeşitli artırma teknikleriyle özel dönüşümleri tanımla
custom_transforms = [
    # Bulanıklık çeşitleri
    A.OneOf(
        [
            A.MotionBlur(blur_limit=7, p=1.0),
            A.MedianBlur(blur_limit=7, p=1.0),
            A.GaussianBlur(blur_limit=7, p=1.0),
        ],
        p=0.3,
    ),
    # Gürültü çeşitleri
    A.OneOf(
        [
            A.GaussNoise(std_range=(0.0124, 0.0277), p=1.0),
            A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
        ],
        p=0.2,
    ),
    # Renk ve kontrast ayarlamaları
    A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
    # Örtülmeleri simüle et
    A.CoarseDropout(num_holes_range=(1, 8), hole_height_range=(8, 32), hole_width_range=(8, 32), fill=0, p=0.2),
]

# Özel dönüşümlerle eğit
results = model.train(
    data="coco8.yaml",
    epochs=100,
    imgsz=640,
    augmentations=custom_transforms,
)

Önemli Hususlar#

Özel Albumentations dönüşümleri kullanırken şu noktaları göz önünde bulundur:

  • Yapılandırma: Python API'si üzerinden özel dönüşüm nesneleri oluştur. Serileştirilmiş dönüşümleri, eğitime devam ederken de CLI veya YAML yapılandırma dosyaları aracılığıyla iletebilirsin.
  • Varsayılanları Değiştirir: Özel dönüşümlerin varsayılan Albumentations dönüşümlerinin tamamının yerini alır. Diğer YOLO artırmaları etkin kalır.
  • Etiketlerin İşlenmesi: A.OneOf veya A.Compose içinde yer alanlar da dahil olmak üzere uzamsal dönüşümler; sınırlayıcı kutuları, çokgenleri, kilit noktaları ve derinlik ya da anlamsal maskeleri görüntüyle birlikte taşır. A.RandomGridShuffle çokgen veya kilit noktaların topolojisini koruyamaz ve segmentasyon, poz ve OBB örneklerinde hata verir.
  • Performans: Bazı dönüşümler hesaplama açısından maliyetlidir. Eğitim hızını takip et ve gereken ayarlamaları yap.
  • Görev Uyumluluğu: Özel Albumentations dönüşümleri; algılama, segmentasyon, anlamsal segmentasyon, derinlik, poz ve OBB eğitimiyle çalışır, ancak farklı bir artırma hattı kullanan sınıflandırmayla çalışmaz.

Özel Dönüşümlerin Kullanım Alanları#

Farklı uygulamalar, farklı artırma stratejilerinden yararlanır:

  • Tıbbi Görüntüleme: Elastik deformasyonlar, ızgara bozulmaları ve özel gürültü desenleri kullan
  • Hava/ Uydu Görüntüleri: Farklı irtifaları, hava koşullarını ve ışık açılarını simüle eden dönüşümler uygula
  • Düşük Işık Koşulları: Zorlu aydınlatma koşullarına dayanıklı modeller eğitmek için gürültü eklemeyi ve parlaklık ayarlamalarını öne çıkar
  • Endüstriyel Denetim: Kalite kontrol uygulamaları için doku çeşitleri ve simüle edilmiş kusurlar ekle

Kullanılabilir dönüşümlerin ve parametrelerinin tam listesi için Albumentations belgelerine göz at.

YOLO26 ile özel Albumentations dönüşümlerini kullanmaya ilişkin daha ayrıntılı örnekler ve en iyi uygulamalar için YOLO Veri Artırma kılavuzuna göz at.

Albumentations Hakkında Öğrenmeye Devam Et#

Albumentations hakkında daha fazla bilgi edinmek istersen daha ayrıntılı yönergeler ve örnekler için şu kaynaklara göz at:

Öne Çıkan Noktalar#

Bu kılavuzda, görüntü artırma için harika bir Python kütüphanesi olan Albumentations'ın temel yönlerini ele aldık. Geniş dönüşüm yelpazesini, optimize edilmiş performansını ve bir sonraki YOLO26 projenizde nasıl kullanabileceğinizi konuştuk.

Ayrıca diğer Ultralytics YOLO26 entegrasyonları hakkında daha fazla bilgi edinmek istersen entegrasyon kılavuzu sayfamızı ziyaret et. Orada değerli kaynaklar ve bilgiler bulacaksın.

Sık Sorulan Sorular#

  • Albumentations, YOLO26 ile sorunsuz bir şekilde entegre olur ve paket yüklüyse eğitim sırasında otomatik olarak uygulanır. Başlamak için:

    # Gerekli paketleri yükle
    # !pip install albumentations ultralytics
    from ultralytics import YOLO
    
    # Modeli yükle ve otomatik artırmalarla eğit
    model = YOLO("yolo26n.pt")
    model.train(data="coco8.yaml", epochs=100)

    Entegrasyon; model performansını artırmak için dikkatle ayarlanmış olasılıklarla bulanıklık, medyan bulanıklığı, gri tonlamaya dönüştürme ve CLAHE gibi optimize edilmiş artırmalar içerir.

  • Albumentations birkaç özelliğiyle öne çıkar:

    1. Performans: Üstün hız için OpenCV ve NumPy üzerine kurulmuştur ve SIMD optimizasyonu kullanır
    2. Esneklik: Piksel düzeyinde, uzamsal düzeyde ve karıştırma düzeyinde artırmaları kapsayan 70'ten fazla dönüşümü destekler
    3. Uyumluluk: PyTorch ve TensorFlow gibi popüler çerçevelerle sorunsuz çalışır
    4. Güvenilirlik: Kapsamlı test paketi, sessiz veri bozulmalarını önler
    5. Kullanım kolaylığı: Tüm artırma türleri için tek ve birleşik bir API
  • Albumentations, aşağıdakiler dahil çeşitli bilgisayarlı görü görevlerini geliştirir:

    • Nesne Algılama: Modelin aydınlatma, ölçek ve yönelim farklılıklarına dayanıklılığını artırır
    • Örnek Segmentasyonu: Çeşitli dönüşümler aracılığıyla maske tahmininin doğruluğunu artırır
    • Poz Tahmini: Modellerin farklı bakış açılarına ve aydınlatma koşullarına uyum sağlamasına yardımcı olur
    • Yönelimli Sınırlayıcı Kutu Algılama: Hava görüntüleri ve döndürülmüş nesnelerin görüntüleri için renk ve gürültü çeşitliliği ekler

    Kütüphanenin çeşitli artırma seçenekleri, güçlü model performansı gerektiren görü görevlerinde onu değerli kılar. Ultralytics YOLO26'da sınıflandırma eğitimi, torchvision tabanlı kendi artırma hattını kullanır ve Albumentations dönüşümlerini uygulamaz.

Yorumlar