Ultralytics YOLO kullanarak Veri Artırma

YOLO data augmentation examples showing original and augmented images for training

Giriş

Veri artırma, mevcut görüntülere çeşitli dönüşümler uygulayarak eğitim veri kümeni yapay olarak genişleten, bilgisayarlı görü alanında çok önemli bir tekniktir. Ultralytics YOLO gibi derin öğrenme modellerini eğitirken, veri artırma modelin dayanıklılığını artırmaya, aşırı öğrenmeyi (overfitting) azaltmaya ve gerçek dünya senaryolarına karşı genelleme yeteneğini güçlendirmeye yardımcı olur.



Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀

Veri Artırma Neden Önemlidir?

Veri artırma, bilgisayarlı görü modellerini eğitirken birçok kritik amaca hizmet eder:

  • Genişletilmiş Veri Kümesi: Mevcut görüntülerin varyasyonlarını oluşturarak, yeni veri toplamadan eğitim veri kümeni etkili bir şekilde büyütebilirsin.
  • Gelişmiş Genelleme: Modeller, nesneleri çeşitli koşullar altında tanımayı öğrenir ve bu da onları gerçek dünya uygulamalarında daha dayanıklı hale getirir.
  • Azaltılmış Aşırı Öğrenme: Eğitim verilerine değişkenlik katarak, modellerin belirli görüntü özelliklerini ezberleme olasılığı düşer.
  • Artırılmış Performans: Uygun şekilde artırılmış verilerle eğitilen modeller, genellikle doğrulama ve test kümelerinde daha iyi doğruluk değerlerine ulaşır.

Ultralytics YOLO'nun uygulaması, her biri belirli amaçlara hizmet eden ve model performansına farklı şekillerde katkıda bulunan kapsamlı bir artırma teknikleri paketi sunar. Bu kılavuz, her bir artırma parametresini ayrıntılı olarak inceleyerek projelerinde bunları ne zaman ve nasıl etkili bir şekilde kullanacağını anlamana yardımcı olacak.

Örnek Yapılandırmalar

Her parametreyi Python API, komut satırı arayüzü (CLI) veya bir yapılandırma dosyası kullanarak özelleştirebilirsin. Aşağıda her yöntemde veri artırmanın nasıl ayarlanacağına dair örnekler bulunmaktadır.

Yapılandırma Örnekleri
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Training without any augmentations (disabled values omitted for clarity)
model.train(
    data="coco.yaml",
    epochs=100,
    hsv_h=0.0,
    hsv_s=0.0,
    hsv_v=0.0,
    translate=0.0,
    scale=0.0,
    fliplr=0.0,
    mosaic=0.0,
    erasing=0.0,
    auto_augment=None,
)

# Training with custom Albumentations transforms (Python API only)
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)

Bir yapılandırma dosyası kullanma

You can define all training parameters, including augmentations, in a YAML configuration file (e.g., train_custom.yaml). The mode parameter is only required when using the CLI. This new YAML file will then override the default one located in the ultralytics package.

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo26n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5

Ardından eğitimi Python API ile başlat:

Eğitim Örneği
from ultralytics import YOLO

# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")

Renk Uzayı Artırmaları

Ton Ayarı (hsv_h)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.015
  • Kullanım: Görüntü renklerini, aralarındaki ilişkileri koruyarak kaydırır. hsv_h hiperparametresi kaydırma miktarını tanımlar; nihai ayar -hsv_h ile hsv_h arasında rastgele seçilir. Örneğin, hsv_h=0.3 ile kaydırma -0.3 ile 0.3 arasında rastgele seçilir. 0.5 üzerindeki değerler için renk tonu kaydırması renk tekerleği üzerinde döngü oluşturur, bu nedenle 0.5 ve -0.5 arasındaki artırmalar aynı görünür.
  • Amaç: Özellikle aydınlatma koşullarının nesne görünümünü önemli ölçüde etkileyebileceği dış mekan senaryoları için yararlıdır. Örneğin, bir muz parlak güneş ışığında daha sarı, iç mekanda ise daha yeşilimsi görünebilir.
  • Ultralytics'in uygulaması: RandomHSV
-0.5-0.250.00.250.5
Hue shift -0.5 augmentationHue shift -0.25 augmentationOriginal image without augmentationHue shift 0.25 augmentationHue shift -0.5 augmentation

Doygunluk Ayarı (hsv_s)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.7
  • Kullanım: Görüntüdeki renklerin yoğunluğunu değiştirir. hsv_s hiperparametresi kaydırma miktarını tanımlar; nihai ayar -hsv_s ile hsv_s arasında rastgele seçilir. Örneğin, hsv_s=0.7 ile yoğunluk -0.7 ile 0.7 arasında rastgele seçilir.
  • Amaç: Modellerin değişen hava koşulları ve kamera ayarlarıyla başa çıkmasına yardımcı olur. Örneğin, kırmızı bir trafik işareti güneşli bir günde çok canlı görünebilir ancak sisli koşullarda donuk ve solgun görünebilir.
  • Ultralytics'in uygulaması: RandomHSV
-1.0-0.50.00.51.0
Saturation -1.0 grayscale augmentationSaturation -0.5 augmentationOriginal image without augmentationSaturation 0.5 augmentationSaturation 1.0 vivid augmentation

Parlaklık Ayarı (hsv_v)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.4
  • Kullanım: Görüntünün parlaklığını değiştirir. hsv_v hiperparametresi kaydırma miktarını tanımlar; nihai ayar -hsv_v ile hsv_v arasında rastgele seçilir. Örneğin, hsv_v=0.4 ile yoğunluk -0.4 ile 0.4 arasında rastgele seçilir.
  • Amaç: Farklı aydınlatma koşullarında performans göstermesi gereken modelleri eğitmek için gereklidir. Örneğin, kırmızı bir elma güneş ışığında parlak, gölgede ise çok daha karanlık görünebilir.
  • Ultralytics'in uygulaması: RandomHSV
-1.0-0.50.00.51.0
Brightness -1.0 dark augmentationBrightness -0.5 augmentationOriginal image without augmentationBrightness 0.5 augmentationBrightness 1.0 bright augmentation

Geometrik Dönüşümler

Döndürme (degrees)

  • Aralık: 0.0 ile 180
  • Varsayılan: 0
  • Kullanım: Görüntüleri belirtilen aralıkta rastgele döndürür. degrees hiperparametresi dönme açısını tanımlar; nihai ayar -degrees ile degrees arasında rastgele seçilir. Örneğin, degrees=10.0 ile dönüş -10.0 ile 10.0 arasında rastgele seçilir.
  • Amaç: Nesnelerin farklı yönlerde görünebildiği uygulamalar için çok önemlidir. Örneğin, hava drone görüntülerinde araçlar herhangi bir yöne yönelmiş olabilir, bu da modellerin döndürme ne olursa olsun nesneleri tanımasını gerektirir.
  • Ultralytics'in uygulaması: RandomPerspective
-180-900.090180
Rotation -180 degrees augmentationRotation -90 degrees augmentationOriginal image without augmentationRotation 90 degrees augmentationRotation 180 degrees augmentation

Öteleme (translate)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.1
  • Kullanım: Görüntüleri yatay ve dikey olarak görüntü boyutunun rastgele bir kesri kadar kaydırır. translate hiperparametresi kaydırma miktarını tanımlar; nihai ayar -translate ile translate aralığında iki kez (her eksen için bir kez) rastgele seçilir. Örneğin, translate=0.5 ile, x ekseninde -0.5 ile 0.5 arasında rastgele bir öteleme seçilir ve y ekseninde aynı aralıkta bağımsız başka bir rastgele değer seçilir.
  • Amaç: Modellerin kısmen görünen nesneleri tespit etmeyi öğrenmesine yardımcı olur ve nesne konumuna karşı dayanıklılığı artırır. Örneğin, araç hasar değerlendirme uygulamalarında, araba parçaları fotoğrafçının konumuna ve mesafesine bağlı olarak kare içinde tam veya kısmi görünebilir; öteleme artırması, modele bu özellikleri bütünlüklerinden veya konumlarından bağımsız olarak tanımayı öğretecektir.
  • Ultralytics'in uygulaması: RandomPerspective
  • Not: Basitlik açısından, aşağıda uygulanan ötelemeler hem x hem de y eksenleri için her seferinde aynıdır. Görüntüyü çerçevenin tamamen dışına taşıyacaklarından -1.0 ve 1.0 değerleri gösterilmemiştir.
-0.5-0.250.00.250.5
Translation -0.5 shift augmentationTranslation -0.25 shift augmentationOriginal image without augmentationTranslation 0.25 shift augmentationTranslation 0.5 shift augmentation

Ölçekleme (scale)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.5
  • Kullanım: Görüntüleri belirtilen aralıkta rastgele bir faktörle yeniden boyutlandırır. scale hiperparametresi ölçekleme faktörünü tanımlar; nihai ayar 1-scale ile 1+scale arasında rastgele seçilir. Örneğin, scale=0.5 ile, ölçekleme 0.5 ile 1.5 arasında rastgele seçilir.
  • Amaç: Modellerin nesneleri farklı mesafelerde ve boyutlarda işlemesini sağlar. Örneğin, otonom sürüş uygulamalarında araçlar kameradan çeşitli mesafelerde görünebilir, bu da modelin onları boyutlarından bağımsız olarak tanımasını gerektirir.
  • Ultralytics'in uygulaması: RandomPerspective
  • Not:
    • Görüntünün kaybolmasına neden olacağı için -1.0 değeri gösterilmemiştir, 1.0 değeri ise sadece 2x yakınlaştırma sağlar.
    • Aşağıdaki tabloda görüntülenen değerler, nihai ölçek faktörü değil, scale hiperparametresi ile uygulanan değerlerdir.
    • Eğer scale 1.0 değerinden büyükse, ölçekleme faktörü 1-scale ile 1+scale arasında rastgele seçildiği için görüntü çok küçük olabilir veya ters dönebilir. Örneğin, scale=3.0 ile, ölçekleme -2.0 ile 4.0 arasında rastgele seçilir. Negatif bir değer seçilirse görüntü ters çevrilir.
-0.5-0.250.00.250.5
Scale 0.5x zoom out augmentationScale 0.75x zoom out augmentationOriginal image without augmentationScale 1.25x zoom in augmentationScale 1.5x zoom in augmentation

Kaydırma (Shear) (shear)

  • Aralık: -180 ile +180
  • Varsayılan: 0
  • Kullanım: Görüntüyü hem x ekseni hem de y ekseni boyunca eğen, paralel çizgileri korurken görüntünün parçalarını bir yöne kaydıran geometrik bir dönüşüm sunar. shear hiperparametresi kaydırma açısını tanımlar; nihai ayar -shear ile shear arasında rastgele seçilir. Örneğin, shear=10.0 ile, x ekseninde -10 ile 10 arasında rastgele bir kaydırma seçilir ve y ekseninde aynı aralıkta bağımsız başka bir rastgele değer seçilir.
  • Amaç: Modellerin hafif eğimler veya eğik bakış açılarından kaynaklanan görüş açısı varyasyonlarına genelleme yapmasına yardımcı olur. Örneğin, trafik izlemede, araba ve yol işaretleri gibi nesneler dikey olmayan kamera yerleşimleri nedeniyle eğik görünebilir. Kaydırma (shear) artırması uygulamak, modelin nesneleri bu tür çarpık bozulmalara rağmen tanımayı öğrenmesini sağlar.
  • Ultralytics'in uygulaması: RandomPerspective
  • Not:
    • shear değerleri görüntüyü hızla bozabilir, bu nedenle küçük değerlerle başlayıp bunları kademeli olarak artırman önerilir.
    • Perspektif dönüşümlerinin aksine, kaydırma (shear) derinlik veya kaçış noktaları eklemez, bunun yerine karşıt kenarları paralel tutarak açılarını değiştirip nesnelerin şeklini bozar.
-10-50.0510
Shear -10 degrees augmentationShear -5 degrees augmentationOriginal image without augmentationShear 5 degrees augmentationShear 10 degrees augmentation

Perspektif (perspective)

  • Aralık: 0.0 - 0.001
  • Varsayılan: 0
  • Kullanım: Hem x-ekseni hem de y-ekseni boyunca tam bir perspektif dönüşümü uygulayarak nesnelerin farklı derinlik veya açılardan bakıldığında nasıl göründüğünü simüle eder. perspective hiperparametresi, perspektif büyüklüğünü tanımlar ve nihai ayar -perspective ile perspective arasında rastgele seçilir. Örneğin, perspective=0.001 ile, perspektif x-ekseninde rastgele -0.001 ile 0.001 arasında, y-ekseninde ise aynı aralıkta bağımsız bir rastgele değer seçilerek belirlenir.
  • Amaç: Perspektif artırma, özellikle nesnelerin perspektif kaymaları nedeniyle kısaldığı veya bozulduğu durumlarda aşırı bakış açısı değişikliklerini yönetmek için kritiktir. Örneğin, drone tabanlı nesne algılamada binalar, yollar ve araçlar drone'un eğimine ve yüksekliğine bağlı olarak uzamış veya sıkışmış görünebilir. Perspektif dönüşümleri uygulayarak modeller, bu perspektif kaynaklı bozulmalara rağmen nesneleri tanımayı öğrenir ve gerçek dünya dağıtımlarında dayanıklılıklarını artırır.
  • Ultralytics'in uygulaması: RandomPerspective
-0.001-0.00050.00.00050.001
Perspective -0.001 transformationPerspective -0.0005 transformationOriginal image without augmentationPerspective 0.0005 transformationPerspective 0.001 transformation

Dikey Çevirme (flipud)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of flipud=1.0 ensuring that all images are flipped and a value of flipud=0.0 disabling the transformation entirely. For example, with flipud=0.5, each image has a 50% chance of being flipped upside-down.
  • Amaç: Nesnelerin baş aşağı görünebildiği senaryolar için kullanışlıdır. Örneğin, robotik görme sistemlerinde, konveyör bantlarındaki veya robotik kollardaki nesneler çeşitli yönlerde alınıp yerleştirilebilir. Dikey çevirme, modelin nesneleri yukarıdan aşağıya konumlarına bakılmaksızın tanımasına yardımcı olur.
  • Ultralytics uygulaması: RandomFlip
flipud kapalıflipud açık
Original image without augmentationVertical flip augmentation enabled

Yatay Çevirme (fliplr)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.5
  • Kullanım: Görüntüyü x-ekseni boyunca yansıtarak yatay bir çevirme gerçekleştirir. Bu dönüşüm, sol ve sağ tarafları değiştirirken uzamsal tutarlılığı korur, bu da modelin aynalanmış yönlerde görünen nesnelere karşı genelleme yapmasına yardımcı olur. fliplr hiperparametresi dönüşümün uygulanma olasılığını tanımlar; fliplr=1.0 değeri tüm görüntülerin çevrilmesini sağlar ve fliplr=0.0 değeri dönüşümü tamamen devre dışı bırakır. Örneğin, fliplr=0.5 ile her görüntünün soldan sağa çevrilme olasılığı %50'dir.
  • Amaç: Yatay çevirme, sol-sağ varyasyonlarına karşı dayanıklılığı artırmak için nesne algılama, poz tahmini ve yüz tanıma süreçlerinde yaygın olarak kullanılır. Örneğin, otonom sürüşte araçlar ve yayalar yolun her iki tarafında da görünebilir ve yatay çevirme, modelin her iki yönde de onları aynı şekilde iyi tanımasına yardımcı olur.
  • Ultralytics uygulaması: RandomFlip
fliplr kapalıfliplr açık
Original image without augmentationHorizontal flip augmentation enabled

BGR Kanal Değişimi (bgr)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Bir görüntünün renk kanallarını RGB'den BGR'ye değiştirerek renklerin temsil edilme sırasını değiştirir. bgr hiperparametresi dönüşümün uygulanma olasılığını tanımlar; bgr=1.0 tüm görüntülerin kanal değişimine tabi tutulmasını sağlar ve bgr=0.0 bunu devre dışı bırakır. Örneğin, bgr=0.5 ile her görüntünün RGB'den BGR'ye dönüştürülme olasılığı %50'dir.
  • Amaç: Farklı renk kanalı sıralamalarına karşı dayanıklılığı artırır. Örneğin, RGB ve BGR formatlarının tutarsız bir şekilde kullanılabildiği çeşitli kamera sistemleri ve görüntüleme kütüphaneleri arasında çalışması gereken modelleri eğitirken veya modelleri giriş renk formatının eğitim verilerinden farklı olabileceği ortamlara dağıtırken kullanışlıdır.
  • Ultralytics uygulaması: Format
bgr kapalıbgr açık
Original image without augmentationBGR channel swap augmentation

Mosaic (mosaic)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 1
  • Kullanım: Dört eğitim görüntüsünü bir araya getirir. mosaic hiperparametresi dönüşümün uygulanma olasılığını tanımlar; mosaic=1.0 tüm görüntülerin birleştirilmesini sağlar ve mosaic=0.0 dönüşümü devre dışı bırakır. Örneğin, mosaic=0.5 ile her görüntünün diğer üç görüntüyle birleştirilme olasılığı %50'dir.
  • Amaç: Küçük nesne algılamayı ve bağlam anlayışını iyileştirmek için oldukça etkilidir. Örneğin, hayvanların çeşitli mesafelerde ve ölçeklerde görünebildiği yaban hayatı koruma projelerinde, mosaic artırma, kısıtlı verilerden çeşitli eğitim örnekleri oluşturarak modelin aynı türü farklı boyutlarda, kısmi tıkanmalarda ve çevresel bağlamlarda tanımayı öğrenmesine yardımcı olur.
  • Ultralytics uygulaması: Mosaic
  • Not:
    • mosaic artırma modeli daha dayanıklı hale getirse de, eğitim sürecini de zorlaştırabilir.
    • mosaic artırma, eğitimin sonuna doğru close_mosaic değeri, kapatılması gereken epoch sayısına ayarlanarak devre dışı bırakılabilir. Örneğin, epochs değeri 200 ve close_mosaic değeri 20 olarak ayarlanırsa, mosaic artırma 180 epoch'tan sonra devre dışı bırakılır. close_mosaic değeri 0 olarak ayarlanırsa, mosaic artırma tüm eğitim süreci boyunca etkin kalır.
    • Oluşturulan mozaik merkezi rastgele değerler kullanılarak belirlenir ve görüntünün içinde veya dışında olabilir.
    • mosaic artırmanın mevcut uygulaması, veri kümesinden rastgele seçilen 4 görüntüyü birleştirir. Veri kümesi küçükse, aynı görüntü aynı mozaik içinde birden fazla kez kullanılabilir.
mosaic kapalımosaic açık
Original image without augmentationMosaic 4-image augmentation enabled

Mixup (mixup)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Belirli bir olasılıkla iki görüntüyü ve etiketlerini karıştırır. mixup hiperparametresi dönüşümün uygulanma olasılığını tanımlar; mixup=1.0 tüm görüntülerin karıştırılmasını sağlar ve mixup=0.0 dönüşümü devre dışı bırakır. Örneğin, mixup=0.5 ile her görüntünün başka bir görüntüyle karıştırılma olasılığı %50'dir.
  • Amaç: Modelin dayanıklılığını artırır ve aşırı öğrenmeyi (overfitting) azaltır. Örneğin, perakende ürün tanıma sistemlerinde mixup, farklı ürünlerin görüntülerini harmanlayarak modelin daha sağlam özellikler öğrenmesine yardımcı olur; bu da öğeleri kısmen göründüklerinde veya kalabalık mağaza raflarında diğer ürünler tarafından gizlendiklerinde bile tanımlamayı öğretir.
  • Ultralytics uygulaması: Mixup
  • Not:
    • mixup oranı, np.random.beta(32.0, 32.0) beta dağılımından seçilen rastgele bir değerdir, yani her görüntü yaklaşık %50 katkıda bulunur, küçük varyasyonlar içerir.
İlk görüntü, mixup kapalıİkinci görüntü, mixup kapalımixup açık
First image for MixUp blendingSecond image for MixUp blendingMixUp blending augmentation enabled

CutMix (cutmix)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Bir görüntüden dikdörtgen bir bölgeyi keser ve belirli bir olasılıkla başka bir görüntünün üzerine yapıştırır. cutmix hiperparametresi dönüşümün uygulanma olasılığını tanımlar; cutmix=1.0 tüm görüntülerin bu dönüşüme tabi tutulmasını sağlar ve cutmix=0.0 bunu tamamen devre dışı bırakır. Örneğin, cutmix=0.5 ile her görüntünün bir bölgesinin başka bir görüntüden alınan bir parça ile değiştirilme olasılığı %50'dir.
  • Amaç: Yerel özellik bütünlüğünü korurken gerçekçi tıkanma senaryoları oluşturarak model performansını artırır. Örneğin, otonom sürüş sistemlerinde cutmix, modelin araçları veya yayaları diğer nesneler tarafından kısmen engellendiklerinde bile tanımayı öğrenmesine yardımcı olur ve üst üste binen nesnelerin olduğu karmaşık gerçek dünya ortamlarında algılama doğruluğunu artırır.
  • Ultralytics uygulaması: CutMix
  • Not:
    • Kesilen bölgenin boyutu ve konumu her uygulama için rastgele belirlenir.
    • Piksel değerlerini küresel olarak harmanlayan mixup'ın aksine, cutmix yerel özellikleri koruyarak kesilen bölgeler içindeki orijinal piksel yoğunluklarını muhafaza eder.
    • Bir bölge, yalnızca mevcut herhangi bir sınırlayıcı kutu (bounding box) ile çakışmadığı takdirde hedef görüntüye yapıştırılır. Ayrıca, yapıştırılan bölge içinde orijinal alanlarının en az 0.1 (%10) kısmını koruyan sınırlayıcı kutular korunur.
    • Bu minimum sınırlayıcı kutu alanı eşiği mevcut uygulamada değiştirilemez ve varsayılan olarak 0.1 olarak ayarlanmıştır.
İlk görüntü, cutmix kapalıİkinci görüntü, cutmix kapalıcutmix açık
First image for CutMixSecond image for CutMixCutMix augmentation enabled

Segmentasyona Özel Artırmalar

Kopyala-Yapıştır (copy_paste)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Yalnızca segmentasyon görevleri için çalışır, bu artırma, copy_paste_mode ile kontrol edilen belirtilen bir olasılığa dayalı olarak nesneleri görüntülerin içinde veya arasında kopyalar. copy_paste hiperparametresi dönüşümün uygulanma olasılığını tanımlar; copy_paste=1.0 tüm görüntülerin kopyalanmasını sağlar ve copy_paste=0.0 dönüşümü devre dışı bırakır. Örneğin, copy_paste=0.5 ile her görüntünün başka bir görüntüden kopyalanan nesnelere sahip olma olasılığı %50'dir.
  • Amaç: Özellikle örnek segmentasyon görevleri ve nadir nesne sınıfları için yararlıdır. Örneğin, belirli kusur türlerinin seyrek göründüğü endüstriyel kusur tespitinde, kopyala-yapıştır artırma, bu nadir kusurları bir görüntüden diğerine kopyalayarak suni olarak artırabilir, bu da modelin ek kusurlu numunelere ihtiyaç duymadan bu az temsil edilen vakaları daha iyi öğrenmesine yardımcı olur.
  • Ultralytics uygulaması: CopyPaste
  • Not:
    • Aşağıdaki gif'te görüldüğü gibi, copy_paste artırma, nesneleri bir görüntüden diğerine kopyalamak için kullanılabilir.
    • Bir nesne kopyalandıktan sonra, copy_paste_mode ne olursa olsun, kaynak görüntünün tüm nesneleri ile Alan Üzerinden Kesişim (IoA) hesaplanır. Tüm IoA'lar 0.3 (%30)'un altındaysa, nesne hedef görüntüye yapıştırılır. Eğer IoA'lardan sadece biri 0.3'ün üzerindeyse, nesne hedef görüntüye yapıştırılmaz.
    • IoA eşiği mevcut uygulamada değiştirilemez ve varsayılan olarak 0.3 olarak ayarlanmıştır.
copy_paste kapalıcopy_paste on with copy_paste_mode=flipcopy_paste sürecini görselleştir
Original image without augmentationCopy-paste augmentation enabledCopy-paste augmentation animated demo

Kopyala-Yapıştır Modu (copy_paste_mode)

  • Seçenekler: 'flip', 'mixup'
  • Varsayılan: 'flip'
  • Kullanım: Kopyala-yapıştır artırma için kullanılan yöntemi belirler. Eğer 'flip' olarak ayarlanırsa, nesneler aynı görüntüden gelirken, 'mixup' nesnelerin farklı görüntülerden kopyalanmasına olanak tanır.
  • Amaç: Kopyalanan nesnelerin hedef görüntülere nasıl entegre edileceği konusunda esneklik sağlar.
  • Ultralytics uygulaması: CopyPaste
  • Not:
    • IoA prensibi her iki copy_paste_mode için de aynıdır, ancak nesnelerin kopyalanma şekli farklıdır.
    • Görüntü boyutuna bağlı olarak, nesneler bazen kısmen veya tamamen çerçevenin dışına kopyalanabilir.
    • Poligon ek açıklamalarının kalitesine bağlı olarak, kopyalanan nesneler orijinallerine kıyasla hafif şekil varyasyonlarına sahip olabilir.
Referans görüntücopy_paste için seçilen görüntücopy_paste on with copy_paste_mode=mixup
Second image for MixUp blendingOriginal image without augmentationCopy-paste with MixUp mode

Sınıflandırmaya Özel Artırmalar

Otomatik Artırma (auto_augment)

  • Seçenekler: 'randaugment', 'autoaugment', 'augmix', None
  • Varsayılan: 'randaugment'
  • Kullanım: Sınıflandırma için otomatik artırma politikaları uygular. 'randaugment' seçeneği RandAugment'i, 'autoaugment' seçeneği AutoAugment'i ve 'augmix' seçeneği AugMix'i kullanır. None olarak ayarlamak otomatik artırmayı devre dışı bırakır.
  • Amaç: Sınıflandırma görevleri için artırma stratejilerini otomatik olarak optimize eder. Aralarındaki farklar şunlardır:
    • AutoAugment: Bu mod, ImageNet, CIFAR10 ve SVHN gibi veri kümelerinden öğrenilen önceden tanımlanmış artırma politikalarını uygular. Kullanıcılar bu mevcut politikaları seçebilir ancak Torchvision içinde yenilerini eğitemezler. Belirli veri kümeleri için optimal artırma stratejileri keşfetmek istersen, harici kütüphaneler veya özel uygulamalar gerekebilir. AutoAugment makalesine referans.
    • RandAugment: Rastgele seçilen dönüşümleri tekdüze bir büyüklükle uygular. Bu yaklaşım, kapsamlı bir arama aşamasına duyulan ihtiyacı azaltır, modeli daha sağlam hale getirirken hesaplama açısından daha verimli olmasını sağlar. RandAugment makalesine referans.
    • AugMix: AugMix, basit dönüşümlerin rastgele kombinasyonlarıyla çeşitli görüntü varyasyonları oluşturarak modelin sağlamlığını artıran bir veri artırma yöntemidir. AugMix makalesine referans.
  • Ultralytics uygulaması: classify_augmentations()
  • Not:
    • Özünde, üç yöntem arasındaki temel fark, artırma politikalarının tanımlanma ve uygulanma biçimidir.
    • Bu üç yöntemi ayrıntılı olarak karşılaştıran bu makaleye göz atabilirsin.

Rastgele Silme (erasing)

  • Aralık: 0.0 - 0.9
  • Varsayılan: 0.4
  • Kullanım: Sınıflandırma eğitimi sırasında görüntünün bölümlerini rastgele siler. erasing hiperparametresi, dönüşümü uygulama olasılığını tanımlar; erasing=0.9 neredeyse tüm görüntülerin silinmesini sağlarken erasing=0.0 dönüşümü devre dışı bırakır. Örneğin, erasing=0.5 ile her görüntünün bir bölümünün silinme şansı %50'dir.
  • Amaç: Modellerin sağlam özellikler öğrenmesine yardımcı olur ve belirli görüntü bölgelerine aşırı güvenilmesini önler. Örneğin, yüz tanıma sistemlerinde rastgele silme, modellerin güneş gözlüğü, yüz maskesi veya yüz özelliklerini kısmen kapatabilecek diğer nesneler gibi kısmi tıkanmalara karşı daha dayanıklı hale gelmesine yardımcı olur. Bu, modelin yalnızca gizlenmiş olabilecek belirgin özelliklere güvenmek yerine birden fazla yüz özelliğini kullanarak bireyleri tanımlamaya zorlayarak gerçek dünya performansını iyileştirir.
  • Ultralytics uygulaması: classify_augmentations()
  • Not:
    • The erasing augmentation comes with a scale, ratio, and value hyperparameters that cannot be changed with the current implementation. Their default values are (0.02, 0.33), (0.3, 3.3), and 0, respectively, as stated in the PyTorch documentation.
    • erasing hiperparametresinin üst sınırı, dönüşümün tüm görüntülere uygulanmasını önlemek için 0.9 olarak ayarlanmıştır.
erasing kapalıerasing açık (örnek 1)erasing açık (örnek 2)erasing açık (örnek 3)
Orijinal görüntü, artırma yokRastgele silme örneği 1Rastgele silme örneği 2Rastgele silme örneği 3

Gelişmiş Artırma Özellikleri

Özel Albumentations Dönüşümleri (augmentations)

  • Tür: Albumentations dönüşümleri list'i
  • Varsayılan: None
  • Kullanım: Python API'sini kullanarak veri artırma için özel Albumentations dönüşümleri sağlamana olanak tanır. Bu parametre, varsayılan Albumentations dönüşümleri yerine eğitim sırasında uygulanacak Albumentations dönüşüm nesnelerinin bir listesini kabul eder.
  • Amaç: Albumentations dönüşümlerinden oluşan kapsamlı kütüphaneden yararlanarak veri artırma stratejileri üzerinde ince ayar kontrolü sağlar. Bu, gelişmiş renk ayarlamaları, gürültü ekleme veya alana özgü dönüşümler gibi yerleşik YOLO seçeneklerinin ötesinde özel artırmalara ihtiyaç duyduğunda özellikle yararlıdır.
  • Ultralytics uygulaması: Albumentations
Özel Albumentations Örneği
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Define custom Albumentations transforms
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
    A.CLAHE(clip_limit=4.0, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]

# Train with custom Albumentations transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=custom_transforms,  # Pass custom transforms
    imgsz=640,
)

Önemli Noktalar:

  • Sadece Python API: Özel Albumentations dönüşümleri şu anda yalnızca Python API aracılığıyla desteklenmektedir. CLI veya YAML yapılandırma dosyaları aracılığıyla belirtilemezler.
  • Varsayılan Dönüşümleri Değiştirir: augmentations parametresi aracılığıyla özel dönüşümler sağladığında, bunlar varsayılan Albumentations dönüşümlerinin yerini tamamen alır. Varsayılan YOLO artırmaları ( mosaic, hsv_h, hsv_s, degrees vb. gibi) aktif kalır ve bağımsız olarak uygulanır.
  • Sınırlayıcı Kutu Uyumluluğu: Uzamsal dönüşümler (görüntünün geometrisini değiştiren dönüşümler) kullanırken dikkatli ol. Ultralytics, sınırlayıcı kutu ayarlamalarını otomatik olarak işler, ancak bazı karmaşık dönüşümler ek yapılandırma gerektirebilir.
  • Kapsamlı Kütüphane: Albumentations 70'ten fazla farklı dönüşüm sunar. Mevcut tüm seçenekleri keşfetmek için Albumentations belgelerine göz at.
  • Performans Değerlendirmesi: Çok fazla artırma eklemek veya hesaplama açısından pahalı dönüşümler kullanmak eğitimi yavaşlatabilir. Küçük bir setle başla ve eğitim hızını izle.

Yaygın Kullanım Senaryoları:

  • Tıbbi Görüntüleme: Röntgen veya MRI görüntü artırma için elastik deformasyonlar veya ızgara bozulmaları gibi özel dönüşümler uygula
  • Hava/Uydu Görüntüleri: Üstten görünümler için optimize edilmiş dönüşümler kullan
  • Düşük Işık Koşulları: Zorlu aydınlatmayı simüle etmek için gürültü ve parlaklık ayarlamaları uygula
  • Endüstriyel Denetim: Kalite kontrol uygulamaları için kusur benzeri desenler veya doku varyasyonları ekle

Uyumluluk Notları:

  • Albumentations sürüm 1.0.3 veya üzerini gerektirir
  • Tüm YOLO algılama ve segmentasyon görevleriyle uyumludur
  • Sınıflandırma görevleri için geçerli değildir (sınıflandırma farklı bir artırma hattı kullanır)

Albumentations ve mevcut dönüşümler hakkında daha fazla bilgi için resmi Albumentations belgelerini ziyaret et.

SSS

Seçilebilecek çok fazla artırma var. Hangilerini kullanacağımı nasıl bilirim?

Doğru artırmaları seçmek, özel kullanım durumuna ve veri kümene bağlıdır. Karar vermene yardımcı olacak birkaç genel kılavuz şunlardır:

  • Çoğu durumda, renk ve parlaklıktaki küçük varyasyonlar faydalıdır. hsv_h, hsv_s ve hsv_v için varsayılan değerler sağlam bir başlangıç noktasıdır.
  • Kameranın bakış açısı tutarlıysa ve model dağıtıldıktan sonra değişmeyecekse, rotation, translation, scale, shear veya perspective gibi geometrik dönüşümleri atlayabilirsin. Ancak kamera açısı değişebilir ve modelin daha sağlam olmasını istiyorsan, bu artırmaları tutmak daha iyidir.
  • mosaic artırmasını yalnızca kısmen gizlenmiş nesnelere veya görüntü başına birden fazla nesneye sahip olmak kabul edilebilirse ve etiket değerini değiştirmiyorsa kullan. Alternatif olarak, mosaic'i aktif tutabilir ancak eğitim sürecinin başlarında devre dışı bırakmak için close_mosaic değerini artırabilirsin.

Kısacası: basit tut. Küçük bir artırma setiyle başla ve gerektiğinde kademeli olarak daha fazlasını ekle. Amaç, eğitim sürecini aşırı karmaşıklaştırmak değil, modelin genelleme yeteneğini ve sağlamlığını artırmaktır. Ayrıca, uyguladığın artırmaların modelinin üretim aşamasında karşılaşacağı veri dağılımıyla aynı olduğundan emin ol.

Eğitime başlarken bir albumentations: Blur[...] referansı görüyorum. Bu, Ultralytics YOLO'nun bulanıklaştırma gibi ek artırmalar çalıştırdığı anlamına mı geliyor?

albumentations paketi yüklüyse, Ultralytics bunu kullanarak otomatik olarak bir dizi ek görüntü artırması uygular. Bu artırmalar dahili olarak yönetilir ve ek yapılandırma gerektirmez.

Uygulanan dönüşümlerin tam listesini teknik belgelerimizde ve Albumentations entegrasyon kılavuzumuzda bulabilirsin. Yalnızca p olasılığı 0'dan büyük olan artırmaların aktif olduğunu unutma. Bunlar, bulanıklık veya gri tonlama efektleri gibi gerçek dünya görsel kusurlarını taklit etmek için düşük frekanslarda kasıtlı olarak uygulanır.

Ayrıca Python API'sini kullanarak kendi özel Albumentations dönüşümlerini de sağlayabilirsin. Daha fazla ayrıntı için Gelişmiş Artırma Özellikleri bölümüne bak.

Eğitime başlarken albumentations ile ilgili herhangi bir referans görmüyorum. Neden?

albumentations paketinin yüklü olup olmadığını kontrol et. Yüklü değilse, pip install albumentations komutunu çalıştırarak yükleyebilirsin. Yüklendikten sonra paket otomatik olarak algılanmalı ve Ultralytics tarafından kullanılmalıdır.

Artırmalarımı nasıl özelleştirebilirim?

Özel bir veri kümesi sınıfı ve eğitmen oluşturarak artırmaları özelleştirebilirsin. Örneğin, varsayılan Ultralytics sınıflandırma artırmalarını PyTorch'un torchvision.transforms.Resize veya diğer dönüşümleriyle değiştirebilirsin. Uygulama ayrıntıları için sınıflandırma belgelerindeki özel eğitim örneğine bak.

Yorumlar