Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO ile Veri Artırma#

YOLO data augmentation examples showing original and augmented images for training

Link to this sectionGiriş#

Veri artırma, mevcut görüntülere çeşitli dönüşümler uygulayarak eğitim veri setini yapay olarak genişleten, bilgisayarlı görüde kritik 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 yönelik genelleme yeteneğini geliştirmeye yardımcı olur.



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

Link to this sectionVeri Artırma Neden Önemlidir?#

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

  • Genişletilmiş Veri Seti: Mevcut görüntülerin varyasyonlarını oluşturarak, yeni veriler toplamaya gerek kalmadan eğitim veri setinizin boyutunu etkili bir şekilde artırabilirsin.
  • 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ığını düşürürsün.
  • Artırılmış Performans: Uygun şekilde artırılmış verilerle eğitilen modeller, genellikle doğrulama ve test setlerinde 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 rehber, her bir artırma parametresini detaylıca inceleyecek ve bunları projelerinde ne zaman ve nasıl etkili bir şekilde kullanabileceğini anlamana yardımcı olacaktır.

Link to this sectionÖ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 verilmiştir.

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)

Link to this sectionBir yapılandırma dosyası kullanmak#

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 Python API ile eğitimi 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")

Link to this sectionRenk Uzayı Artırmaları#

Link to this sectionTon 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 büyüklüğünü tanımlar ve nihai ayar -hsv_h ile hsv_h arasında rastgele seçilir. Örneğin, hsv_h=0.3 olduğunda kaydırma -0.3 ile 0.3 arasında rastgele belirlenir. 0.5 üzerindeki değerlerde, renk tonu kaydırması renk çarkı etrafında döner; bu yüzden artırmalar 0.5 ile -0.5 arasında aynı görünür.
  • Amaç: Özellikle ışık koşullarının nesne görünümünü ciddi şekilde etkileyebildiği dış mekan senaryoları için kullanışlıdır. Örneğin bir muz, parlak güneş ışığı altı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

Link to this sectionDoygunluk 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 büyüklüğünü tanımlar ve nihai ayar -hsv_s ile hsv_s arasında rastgele seçilir. Örneğin, hsv_s=0.7 olduğunda yoğunluk -0.7 ile 0.7 arasında rastgele belirlenir.
  • 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 levhası güneşli bir günde çok canlı görünürken, sisli havalarda 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

Link to this sectionParlaklı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 büyüklüğünü tanımlar ve nihai ayar -hsv_v ile hsv_v arasında rastgele seçilir. Örneğin, hsv_v=0.4 olduğunda yoğunluk -0.4 ile 0.4 arasında rastgele belirlenir.
  • Amaç: Farklı ışık koşullarında çalışması 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

Link to this sectionGeometrik Dönüşümler#

Link to this sectionDöndürme (degrees)#

  • Aralık: 0.0 - 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 ve nihai ayar -degrees ile degrees arasında rastgele seçilir. Örneğin, degrees=10.0 olduğunda dönüş -10.0 ile 10.0 arasında rastgele seçilir.
  • Amaç: Nesnelerin farklı yönlerde görünebileceği uygulamalar için kritiktir. Örneğin hava aracı görüntülerinde taşıtlar herhangi bir yönde olabilir, bu da modellerin nesneleri dönüşlerinden bağımsız olarak 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

Link to this sectionÖ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 büyüklüğünü tanımlar ve nihai ayar her eksen için -translate ile translate aralığında rastgele seçilir. Örneğin, translate=0.5 olduğunda, x ekseninde -0.5 ile 0.5 arasında rastgele bir öteleme seçilir ve y ekseni için aynı aralıkta başka bağımsız rastgele bir değer belirlenir.
  • Amaç: Modellerin kısmen görünür nesneleri tespit etmeyi öğrenmesine yardımcı olur ve nesne konumuna karşı dayanıklılığı artırır. Örneğin araç hasar tespiti uygulamalarında araba parçaları, fotoğrafçının konumuna ve mesafesine bağlı olarak kadrajda 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 ekseni için her seferinde aynıdır. -1.0 ve 1.0 değerleri gösterilmemiştir çünkü bunlar görüntüyü tamamen kadraj dışına çıkaracaktır.
-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

Link to this sectionÖ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 ve nihai ayar 1-scale ile 1+scale arasında rastgele seçilir. Örneğin, scale=0.5 olduğunda ölçekleme 0.5 ile 1.5 arasında rastgele belirlenir.
  • Amaç: Modellerin farklı mesafelerdeki ve boyutlardaki nesnelerle başa çıkmasını sağlar. Örneğin otonom sürüş uygulamalarında taşıtlar 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:
    • -1.0 değeri gösterilmemiştir çünkü bu görüntünün kaybolmasına neden olurken, 1.0 değeri basitçe 2 kat yakınlaştırma ile sonuçlanır.
    • Aşağıdaki tabloda görüntülenen değerler, nihai ölçekleme faktörü değil, scale hiperparametresi aracılığıyla uygulanan değerlerdir.
    • Eğer scale 1.0 değerinden büyükse, görüntü çok küçük olabilir veya ters dönebilir, çünkü ölçekleme faktörü rastgele 1-scale ile 1+scale arasında seçilir. Örneğin, scale=3.0 olduğunda ö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

Link to this sectionKaydırma/Eğme (shear)#

  • Aralık: -180 ile +180
  • Varsayılan: 0
  • Kullanım: Görüntüdeki bölümleri bir yöne doğru kaydırırken paralel çizgileri koruyan, x ve y eksenleri boyunca görüntüyü büken bir geometrik dönüşüm ekler. shear hiperparametresi eğme açısını tanımlar ve nihai ayar -shear ile shear arasında rastgele seçilir. Örneğin, shear=10.0 olduğunda, x ekseninde -10 ile 10 arasında rastgele bir eğme seçilir ve y ekseni için aynı aralıkta başka bağımsız rastgele bir değer belirlenir.
  • Amaç: Modellerin hafif eğimler veya çapraz bakış açılarından kaynaklanan görüş açısı farklılıklarına karşı genelleme yapmasına yardımcı olur. Örneğin trafik izlemede arabalar veya trafik levhaları gibi nesneler, dik olmayan kamera yerleşimleri nedeniyle eğik görünebilir. Kaydırma artırması uygulamak, modelin bu tür çarpık bozulmalara rağmen nesneleri tanımayı öğrenmesini sağlar.
  • Ultralytics'in uygulaması: RandomPerspective
  • Not:
    • shear değerleri görüntüyü hızla bozabilir, bu yüzden küçük değerlerle başlamak ve bunları kademeli olarak artırmak önerilir.
    • Perspektif dönüşümlerinin aksine kaydırma, derinlik veya kaybolma noktaları eklemez; bunun yerine karşı tarafları paralel tutarak nesnelerin açılarını değiştirmek suretiyle şekillerini bozar.
-10-50.0510
Shear -10 degrees augmentationShear -5 degrees augmentationOriginal image without augmentationShear 5 degrees augmentationShear 10 degrees augmentation

Link to this sectionPerspektif (perspective)#

  • Aralık: 0.0 - 0.001
  • Varsayılan: 0
  • Kullanım: Nesnelerin farklı derinliklerden veya açılardan bakıldığında nasıl göründüğünü simüle ederek, hem x ekseni hem de y ekseni boyunca tam bir perspektif dönüşümü uygular. perspective hiperparametresi perspektif büyüklüğünü tanımlar ve nihai ayar rastgele -perspective ile perspective arasında seçilir. Örneğin, perspective=0.001 ile perspektif, x ekseninde -0.001 ile 0.001 arasında rastgele seçilir ve y ekseninde aynı aralıkta bağımsız başka bir rastgele değer seçilir.
  • 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 çok önemlidir. Örneğin, drone tabanlı nesne algılamada binalar, yollar ve araçlar, drone'un eğimine ve irtifasına bağlı olarak esnemiş 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

Link to this sectionYukarıdan Aşağıya Ç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ünebileceği senaryolar için kullanışlıdır. Örneğin, robotik görme sistemlerinde, konveyör bantlarındaki veya robot kollarındaki nesneler çeşitli yönlerde alınıp yerleştirilebilir. Dikey çevirme, modelin nesneleri yukarıdan aşağıya konumlandırmalarından bağımsız olarak tanımasına yardımcı olur.
  • Ultralytics uygulaması: RandomFlip
flipud kapalıflipud açık
Original image without augmentationVertical flip augmentation enabled

Link to this sectionSoldan Sağa Ç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ı yer değiştirirken uzamsal tutarlılığı korur; bu da modelin aynalanmış yönelimlerde görünen nesnelere karşı genelleme yapmasına yardımcı olur. fliplr hiperparametresi, dönüşümü uygulama olasılığını tanımlar; fliplr=1.0 değeri tüm görüntülerin çevrilmesini sağlarken 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 %50 olasılıkla soldan sağa çevrilme şansı vardır.
  • Amaç: Yatay çevirme, sol-sağ varyasyonlarına karşı dayanıklılığı artırmak için nesne algılama, poz tahmini ve yüz tanımada yaygın olarak kullanılır. Örneğin, otonom sürüşte araçlar ve yayalar yolun her iki tarafında görünebilir ve yatay çevirme, modelin her iki yönelimde de onları eşit derecede iyi tanımasına yardımcı olur.
  • Ultralytics uygulaması: RandomFlip
fliplr kapalıfliplr açık
Original image without augmentationHorizontal flip augmentation enabled

Link to this sectionBGR Kanal Takası (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 edildiği sırayı değiştirir. bgr hiperparametresi dönüşümü uygulama olasılığını tanımlar; bgr=1.0 tüm görüntülerin kanal takasına tabi tutulmasını sağlarken bgr=0.0 bunu devre dışı bırakır. Örneğin, bgr=0.5 ile her görüntünün %50 olasılıkla RGB'den BGR'ye dönüştürülme şansı vardır.
  • Amaç: Farklı renk kanalı sıralamalarına karşı dayanıklılığı artırır. Örneğin, RGB ve BGR formatlarının tutarsız kullanılabildiği çeşitli kamera sistemleri ve görüntüleme kütüphanelerinde çalışması gereken modelleri eğitirken veya giriş renk formatının eğitim verilerinden farklı olabileceği ortamlara modelleri dağıtırken kullanılır.
  • Ultralytics uygulaması: Format
bgr kapalıbgr açık
Original image without augmentationBGR channel swap augmentation

Link to this sectionMosaic (mosaic)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 1
  • Kullanım: Dört eğitim görüntüsünü birleştirir. mosaic hiperparametresi dönüşümü uygulama olasılığını tanımlar; mosaic=1.0 tüm görüntülerin birleştirilmesini sağlarken 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 şansı %50'dir.
  • Amaç: Küçük nesne algılama ve bağlam anlayışını geliştirmek için oldukça etkilidir. Örneğin, hayvanların farklı mesafelerde ve ölçeklerde görünebildiği vahşi yaşam koruma projelerinde, mosaic artırma, sınırlı veriden yapay olarak ç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 bile, eğitim sürecini daha zorlu hale getirebilir.
    • mosaic artırma, eğitimin sonuna doğru close_mosaic değerini, kapatılması gereken epok sayısına ayarlayarak devre dışı bırakılabilir. Örneğin, epochs değeri 200 ve close_mosaic değeri 20 olarak ayarlanırsa, mosaic artırma 180 epoktan sonra devre dışı bırakılacaktır. close_mosaic değeri 0 olarak ayarlanırsa, mosaic artırma tüm eğitim süreci boyunca etkin olacaktır.
    • Oluşturulan mozaiğin merkezi rastgele değerler kullanılarak belirlenir ve görüntünün içinde veya dışında olabilir.
    • Mevcut mosaic artırma uygulaması, veri kümesinden rastgele seçilen 4 görüntüyü birleştirir. Veri kümesi küçükse, aynı görüntü aynı mozaikte birden çok kez kullanılabilir.
mosaic kapalımosaic açık
Original image without augmentationMosaic 4-image augmentation enabled

Link to this sectionMixup (mixup)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: İki görüntüyü ve etiketlerini belirli bir olasılıkla harmanlar. mixup hiperparametresi dönüşümü uygulama olasılığını tanımlar; mixup=1.0 tüm görüntülerin karıştırılmasını sağlarken 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 şansı %50'dir.
  • Amaç: Model 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 dayanıklı özellikler öğrenmesine yardımcı olur ve öğelerin kısmen göründüklerinde veya kalabalık mağaza raflarında diğer ürünler tarafından kapatıldıklarında bile tanımlanmasını sağlar.
  • 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 varyasyonlarla.
İ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

Link to this sectionCutMix (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ü uygulama olasılığını tanımlar; cutmix=1.0 tüm görüntülerin bu dönüşüme tabi tutulmasını sağlarken 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çayla değiştirilme şansı %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ı kısmen diğer nesneler tarafından kapalıyken bile tanımayı öğrenmesine yardımcı olur, örtüşen 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 kesilen bölgeler içindeki orijinal piksel yoğunluklarını koruyarak yerel özellikleri muhafaza eder.
    • Bir bölge, yalnızca mevcut herhangi bir sınırlayıcı kutu ile örtüşmediği 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'ini (%10) koruyan sınırlayıcı kutular muhafaza edilir.
    • 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

Link to this sectionSegmentasyona Özel Artırmalar#

Link to this sectionCopy-Paste (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 tarafından kontrol edilen belirtilen bir olasılığa göre nesneleri görüntüler içinde veya arasında kopyalar. copy_paste hiperparametresi dönüşümü uygulama olasılığını tanımlar; copy_paste=1.0 tüm görüntülerin kopyalanmasını sağlarken 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 şansı %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 nadiren görüldüğü endüstriyel kusur algılamada, copy-paste artırma, bu nadir kusurları bir görüntüden diğerine kopyalayarak yapay olarak oluşumlarını artırabilir ve modelin ek kusurlu örnekler gerektirmeden bu az temsil edilen durumları daha iyi öğrenmesine yardımcı olabilir.
  • Ultralytics uygulaması: CopyPaste
  • Not:
    • Aşağıdaki gifte gösterildiği gibi, copy_paste artırma, nesneleri bir görüntüden diğerine kopyalamak için kullanılabilir.
    • Bir nesne kopyalandığında, copy_paste_mode ne olursa olsun, Alan Üzerinden Kesişim (IoA) değeri kaynak görüntünün tüm nesneleriyle hesaplanır. Tüm IoA'lar 0.3'ün (%30) 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 açık (copy_paste_mode=flip ile)copy_paste sürecini görselleştir
Original image without augmentationCopy-paste augmentation enabledCopy-paste augmentation animated demo

Link to this sectionCopy-Paste Modu (copy_paste_mode)#

  • Seçenekler: 'flip', 'mixup'
  • Varsayılan: 'flip'
  • Kullanım: copy-paste artırması için kullanılan yöntemi belirler. '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 ilkesi 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 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 açık (copy_paste_mode=mixup ile)
Second image for MixUp blendingOriginal image without augmentationCopy-paste with MixUp mode

Link to this sectionSınıflandırmaya Özel Artırmalar#

Link to this sectionAuto Augment (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'ı, 'autoaugment' seçeneği AutoAugment'ı, 'augmix' seçeneği ise AugMix'i kullanır. None olarak ayarlanması otomatik artırmayı devre dışı bırakır.
  • Amaç: Sınıflandırma görevleri için artırma stratejilerini otomatik olarak optimize eder. Farklılıklar şunlardır:
    • AutoAugment: Bu mod, ImageNet, CIFAR10 ve SVHN gibi veri kümelerinden öğrenilen önceden tanımlanmış artırma politikalarını uygular. Mevcut politikaları seçebilirsin ancak Torchvision içinde yenilerini eğitemezsin. Belirli veri kümeleri için en uygun artırma stratejilerini keşfetmek istiyorsan, harici kütüphaneler veya özel uygulamalar gerekli olacaktır. AutoAugment makalesine referans.
    • RandAugment: Eşit büyüklükte rastgele dönüşümler seçimi uygular. Bu yaklaşım, kapsamlı bir arama aşamasına duyulan ihtiyacı azaltır, model sağlamlığını artırırken hesaplama açısından daha verimli olmasını sağlar. RandAugment makalesine referans.
    • AugMix: AugMix, basit dönüşümlerin rastgele kombinasyonları aracılığıyla çeşitli görüntü varyasyonları oluşturarak model sağlamlığını artıran bir veri artırma yöntemidir. AugMix makalesine referans.
  • Ultralytics uygulaması: classify_augmentations()
  • Not:
    • Esasen, üç yöntem arasındaki temel fark, artırma politikalarının tanımlanma ve uygulanma biçimidir.
    • Üç yöntemi detaylıca karşılaştıran bu makaleye göz atabilirsin.

Link to this sectionRastgele 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ğlar, erasing=0.0 ise 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 öznitelikler öğrenmesine yardımcı olur ve belirli görüntü bölgelerine aşırı bağımlılığı ö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 dirençli olmasını sağlar. Bu, modelin yalnızca belirgin özelliklere güvenmek yerine birden fazla yüz özelliğini kullanarak kişileri tanımlamasını zorunlu kılarak 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)
Artırma olmadan orijinal görüntüRastgele silme örneği 1Rastgele silme örneği 2Rastgele silme örneği 3

Link to this sectionGelişmiş Artırma Özellikleri#

Link to this sectionÖzel Albumentations Dönüşümleri (augmentations)#

  • Tür: Albumentations dönüşümleri listesi
  • 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, eğitim sırasında varsayılan Albumentations dönüşümleri yerine uygulanacak bir Albumentations dönüşüm nesneleri listesini kabul eder.
  • Amaç: Geniş Albumentations dönüşümleri kütüphanesinden yararlanarak veri artırma stratejileri üzerinde hassas 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 uzmanlaşmış 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.) 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 gerçekleştirir, ancak bazı karmaşık dönüşümler ek yapılandırma gerektirebilir.
  • Geniş 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: X-ışını 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: Havadan bakış açıları için optimize edilmiş dönüşümler kullan
  • Düşük Işıklı Koşullar: Zorlu aydınlatmayı simüle etmek için gürültü ve parlaklık ayarlamaları uygula
  • Endüstriyel İnceleme: 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.

Link to this sectionSSS#

Link to this sectionSeçilebilecek çok fazla artırma var. Hangilerini kullanacağımı nasıl bilirim?#

Doğru artırmaları seçmek, özel kullanım senaryona 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 değişiklikler 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 tıkanmış nesnelere sahip olmak veya görüntü başına birden fazla nesne olması kabul edilebiliyorsa ve bu durum etiket değerini değiştirmiyorsa kullan. Alternatif olarak, mosaic'i aktif tutabilir ancak eğitim sürecinin daha erken aşamasında devre dışı bırakmak için close_mosaic değerini artırabilirsin.

Özetle: basit tut. Küçük bir artırma setiyle başla ve gerektiğinde yavaş yavaş 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 gerçek hayatta karşılaşacağı veri dağılımını yansıttığından emin ol.

Link to this sectionBir eğitime başlarken, 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 kuruluysa, Ultralytics otomatik olarak bir dizi ekstra 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 bilinçli 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.

Link to this sectionBir eğitime başlarken, albumentations 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. Kurulduktan sonra paket, Ultralytics tarafından otomatik olarak algılanmalı ve kullanılmalıdır.

Link to this sectionArtı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