Ultralytics YOLO27:

Ultralytics YOLO ile 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üde kritik bir tekniktir. Ultralytics YOLO gibi derin öğrenme modellerini eğitirken veri artırma, model sağlamlığını iyileştirmeye, aşırı öğrenmeyi azaltmaya ve gerçek dünya senaryolarına genellenebilirliği artırmaya 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ü modellerinin eğitiminde birden fazla 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ümenizin boyutunu etkili bir şekilde artırabilirsiniz.
  • İyileştirilmiş Genellenebilirlik: Modeller, nesneleri çeşitli koşullar altında tanımayı öğrenerek gerçek dünya uygulamalarında daha sağlam hale gelir.
  • Azaltılmış Aşırı Öğrenme: Eğitim verilerine değişkenlik eklenmesi, modellerin belirli görüntü özelliklerini ezberleme olasılığını azaltır.
  • Artırılmış Performans: Uygun veri artırmayla eğitilen modeller, doğrulama ve test kümelerinde genellikle daha iyi doğruluk elde eder.

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

Örnek Yapılandırmalar#

Her parametreyi Python API'sini, komut satırı arayüzünü (CLI) veya bir yapılandırma dosyasını kullanarak özelleştirebilirsin. Aşağıda, her yöntemde veri artırmanın nasıl ayarlanacağına ilişkin ö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="coco8.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Training with every configurable augmentation disabled (disabled values omitted for clarity)
model.train(
    data="coco8.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="coco8.yaml", epochs=100, augmentations=custom_transforms)
Artırma bağımsız değişkenlerini sıfırlamak Albumentations'ı devre dışı bırakmaz

Bu sayfada listelenen dönüşümler, eğitim bağımsız değişkenleri aracılığıyla kontrol ettiklerin dönüşümlerdir. Ultralytics ayrıca albumentations paketi yüklü olduğunda, her biri p=0.01 olasılıkla uygulanan bulanıklaştırma, medyan bulanıklaştırma, gri tonlama ve CLAHE'den oluşan küçük bir Albumentations kümesi de uygular; default.yaml içindeki hiçbir bağımsız değişken bunu kapatmaz. Kaldırmak için paketi kaldır veya değiştirmek üzere augmentations öğesine kendi listeni aktar.

Yapılandırma dosyası kullanma#

Artırmalar dahil tüm eğitim parametrelerini bir YAML yapılandırma dosyasında (ör. train_custom.yaml) tanımlayabilirsin. mode parametresi yalnızca CLI kullanılırken gereklidir. Bu yeni YAML dosyası daha sonra ultralytics paketinde bulunan varsayılan dosyanın üzerine yazılır.

# 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'siyle 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 büyüklüğünü tanımlar ve son 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ğerlerde ton kaydırması renk çemberinin etrafında döner; bu nedenle artırmalar 0.5 ile -0.5 arasında aynı görünür.
  • Amaç: Aydınlatma koşullarının nesnelerin görünümünü önemli ölçüde etkileyebildiği dış mekân senaryoları için özellikle kullanışlıdır. Örneğin bir muz, parlak güneş ışığında daha sarı, iç mekânda ise daha yeşilimsi görünebilir.
  • Ultralytics 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 büyüklüğünü tanımlar ve son 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şken 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ünebilirken sisli koşullarda soluk ve donuk görünebilir.
  • Ultralytics 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 büyüklüğünü tanımlar ve son 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 çalışması gereken modellerin eğitimi için gereklidir. Örneğin kırmızı bir elma güneş ışığında parlak, gölgede ise çok daha koyu görünebilir.
  • Ultralytics 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 arası
  • Varsayılan: 0
  • Kullanım: Görüntüleri belirtilen aralıkta rastgele döndürür. degrees hiperparametresi döndürme açısını tanımlar ve son ayar -degrees ile degrees arasında rastgele seçilir. Örneğin degrees=10.0 ile döndürme, -10.0 ile 10.0 arasında rastgele seçilir.
  • Amaç: Nesnelerin farklı yönelimlerde görünebildiği uygulamalar için kritik öneme sahiptir. Örneğin havadan drone görüntülerinde araçlar herhangi bir yöne dönük olabilir; bu nedenle modellerin nesneleri dönüşlerinden bağımsız olarak tanıması gerekir.
  • Ultralytics 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, görüntü boyutunun rastgele bir kesri kadar yatay ve dikey yönde kaydırır. translate hiperparametresi kaydırma büyüklüğünü tanımlar ve son ayar -translate ile translate aralığında iki kez (her eksen için bir kez) rastgele seçilir. Örneğin translate=0.5 ile x eksenindeki öteleme -0.5 ile 0.5 arasında rastgele seçilir; y ekseninde de aynı aralıkta bağımsız başka bir rastgele değer seçilir.
  • Amaç: Modellerin kısmen görünür nesneleri algılamayı öğrenmesine yardımcı olur ve nesne konumuna karşı sağlamlığı artırır. Örneğin araç hasarı değerlendirme uygulamalarında, fotoğrafçının konumuna ve uzaklığına bağlı olarak araç parçaları çerçevenin içinde tamamen veya kısmen görünebilir; öteleme artırması, modelin bu özellikleri bütünlüklerinden veya konumlarından bağımsız olarak tanımasını öğretir.
  • Ultralytics uygulaması: RandomPerspective
  • Not: Basitlik amacıyla aşağıda uygulanan ötelemeler, hem x hem de y eksenleri için her seferinde aynıdır. -1.0 ve 1.0 değerleri, görüntüyü tamamen çerçevenin dışına taşıyacakları için 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çek (scale)#

  • Aralık: Ondalık sayı olarak 0.0 - 1.0 veya açık bir (min, max) tuple'ı
  • Varsayılan: 0.5
  • Kullanım: Görüntüleri belirtilen aralıkta rastgele bir katsayıyla yeniden boyutlandırır. Ondalık sayı biçiminde scale hiperparametresi ölçekleme kazancını tanımlar ve son katsayı 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. Tuple biçiminde scale bu aralığı doğrudan belirler; böylece scale=(0.5, 2.0), katsayıyı 0.5 ile 2.0 arasında örnekler.
  • Amaç: Modellerin farklı uzaklık ve boyutlardaki nesnelerle başa çıkmasını sağlar. Örneğin otonom sürüş uygulamalarında araçlar kameradan çeşitli uzaklıklarda görünebilir; bu nedenle modelin onları boyutlarından bağımsız olarak tanıması gerekir.
  • Ultralytics uygulaması: RandomPerspective
  • Not:
    • Görüntüyü yok edeceği için -1.0 değeri gösterilmemiştir; 1.0 ise yalnızca 2x yakınlaştırmayla sonuçlanır.
    • Aşağıdaki tabloda gösterilen değerler, scale hiperparametresine aktardığın değerler değil, gerçekleşen ölçek farklarıdır.
    • Ondalık sayı biçimi 0.0 - 1.0 aralığına göre doğrulanır; bu aralığın dışındaki bir değer ValueError hatası oluşturur. 2x yakınlaştırmanın ötesinde bir katsayı örneklemek için bunun yerine (min, max) tuple biçimini aktar.
    • Tuple biçimi yalnızca geometrik görevler için geçerlidir. Sınıflandırma eğitimi kendi kırpma aralığını ondalık sayıdan (1.0 - scale ile 1.0 arası) türetir; bu nedenle burada tuple aktarmak TypeError hatası oluşturur.
-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

Kesme (shear)#

  • Aralık: -180 ile +180 arası
  • 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 bölümlerini etkili bir şekilde tek yönde kaydıran geometrik bir dönüşüm uygular. shear hiperparametresi kesme açısını tanımlar ve son ayar -shear ile shear arasında rastgele seçilir. Örneğin shear=10.0 ile x eksenindeki kesme -10 ile 10 arasında rastgele seçilir; y ekseninde de aynı aralıkta bağımsız başka bir rastgele değer seçilir.
  • Amaç: Hafif eğimler veya eğik bakış açıları nedeniyle oluşan görüntüleme açısı değişikliklerine genellenebilirliğe yardımcı olur. Örneğin trafik izleme sırasında, kameraların dik olmayan konumlandırılması nedeniyle otomobiller ve yol işaretleri gibi nesneler eğik görünebilir. Kesme artırmasının uygulanması, modelin bu tür çarpık bozulmalara rağmen nesneleri tanımayı öğrenmesini sağlar.
  • Ultralytics uygulaması: RandomPerspective
  • Not:
    • shear değerleri görüntüyü hızla bozabilir; bu nedenle küçük değerlerle başlaman ve bunları kademeli olarak artırman önerilir.
    • Perspektif dönüşümlerinin aksine kesme, derinlik veya kaçış noktaları oluşturmaz; bunun yerine karşılıklı kenarları paralel tutarken açılarını değiştirerek 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ı derinliklerden veya açılardan görüldüğündeki görünümünü simüle eder. perspective hiperparametresi perspektif büyüklüğünü tanımlar ve son ayar -perspective ile perspective arasında rastgele seçilir. Örneğin perspective=0.001 ile x eksenindeki perspektif -0.001 ile 0.001 arasında rastgele seçilir; y ekseninde de aynı aralıkta bağımsız başka bir rastgele değer seçilir.
  • Amaç: Perspektif artırması, özellikle nesnelerin perspektif değişimleri nedeniyle kısalmış veya bozulmuş göründüğü senaryolarda, aşırı bakış açısı değişikliklerini ele almak için kritik öneme sahiptir. Örneğin drone tabanlı nesne algılamada binalar, yollar ve araçlar, dronenun eğimine ve irtifasına bağlı olarak uzamış veya sıkışmış görünebilir. Perspektif dönüşümleri uygulanarak modeller, perspektiften kaynaklanan bu bozulmalara rağmen nesneleri tanımayı öğrenir ve gerçek dünya dağıtımlarındaki sağlamlıklarını artırır.
  • Ultralytics 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

Yukarı-Aşağı Çevirme (flipud)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Görüntüyü y ekseni boyunca ters çevirerek dikey çevirme gerçekleştirir. Bu dönüşüm, nesneler arasındaki tüm uzamsal ilişkileri korurken görüntünün tamamını baş aşağı yansıtır. flipud hiperparametresi dönüşümün uygulanma olasılığını tanımlar; flipud=1.0 değeri tüm görüntülerin çevrilmesini garanti ederken flipud=0.0 değeri dönüşümü tamamen devre dışı bırakır. Örneğin flipud=0.5 ile her görüntünün baş aşağı çevrilme olasılığı %50'dir.
  • Amaç: Nesnelerin baş aşağı görünebildiği senaryolar için kullanışlıdır. Örneğin robotik görü sistemlerinde konveyör bantlarındaki veya robotik kollardaki nesneler çeşitli yönelimlerde alınıp yerleştirilebilir. Dikey çevirme, modelin nesneleri üstten alta konumları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

Sağa-Sola Çevirme (fliplr)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.5
  • Kullanım: Görüntüyü x ekseni boyunca yansıtarak yatay çevirme gerçekleştirir. Bu dönüşüm, uzamsal tutarlılığı korurken sol ve sağ tarafları değiştirir; bu da modelin yansıtılmış yönelimlerde görünen nesnelere genellenmesine 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 garanti ederken 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ğ farklılıklarına karşı sağlamlığı 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; yatay çevirme, modelin onları her iki yönelimde de 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

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 uğramasını sağlarken 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şı sağlamlığı artırır. Örneğin RGB ve BGR biçimlerinin tutarsız şekilde kullanıldığı çeşitli kamera sistemleri ve görüntüleme kitaplıklarında çalışması gereken modelleri eğitirken veya giriş renk biçiminin eğitim verilerinden farklı olabileceği ortamlara model dağıtırken kullanışlıdır.
  • Ultralytics uygulaması: Format
bgr kapalıbgr açık
Original image without augmentationBGR channel swap augmentation

Mozaik (mosaic)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 1
  • Kullanım: Dört eğitim görüntüsünü tek bir görüntüde birleştirir. mosaic hiperparametresi dönüşümün uygulanma 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 olasılığı %50'dir.
  • Amaç: Küçük nesne algılamayı ve bağlam anlayışını iyileştirmede son derece etkilidir. Örneğin hayvanların çeşitli uzaklık ve ölçeklerde görünebildiği yaban hayatı koruma projelerinde mozaik artırması, sınırlı verilerden çeşitli eğitim örnekleri yapay olarak oluşturarak modelin aynı türü farklı boyutlarda, kısmi örtülmeler altında ve çeşitli çevresel bağlamlarda tanımayı öğrenmesine yardımcı olur.
  • Ultralytics uygulaması: Mosaic
  • Not:
    • mosaic artırması modeli daha sağlam hale getirse de eğitim sürecini daha zorlu hale getirebilir.
    • mosaic artırması, kapatılması gereken tamamlanmaya kalan epoch sayısı için close_mosaic ayarlanarak eğitimin sonlarına doğru devre dışı bırakılabilir. Örneğin epochs, 200 olarak ve close_mosaic, 20 olarak ayarlanırsa mosaic artırması 180 epoch sonra devre dışı bırakılır. close_mosaic, 0 olarak ayarlanırsa mosaic artırması tüm eğitim süreci boyunca etkin olur.
    • Mozaikin kapatılması aynı epoch'ta copy_paste, mixup ve cutmix öğelerini de devre dışı bırakır. Dördü birlikte kapatılır; böylece son epoch'larda eğitim bunlar olmadan sürerken diğer tüm artırmalar — geometrik dönüşümler, HSV, çevirmeler ve Albumentations — çalışmaya devam eder. copy_paste öğesinin varsayılan flip modunda birkaç görüntüyü birleştirmek yerine tek bir görüntü içinde çalıştığını unutma.
    • Oluşturulan mozaikin merkezi rastgele değerler kullanılarak belirlenir ve görüntünün içinde veya dışında olabilir.
    • mosaic artırmasının mevcut uygulaması, mevcut görüntüyü yakın zamanda yüklenen görüntülerden oluşan bir arabellekten veya cache='ram' olduğunda veri kümesinin herhangi bir yerinden seçilen 3 görüntüyle birleştirir. Her iki durumda da görüntüler yerine koymalı olarak örneklenir; bu nedenle aynı görüntü tek bir mozaikte birden fazla kez görünebilir.
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: İki görüntüyü ve bunların etiketlerini verilen olasılıkla harmanlar. 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ğ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 olasılığı %50'dir.
  • Amaç: Model sağlamlığını iyileştirir ve aşırı öğrenmeyi 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; böylece model, kalabalık mağaza raflarında kısmen görünür veya diğer ürünler tarafından örtülmüş olsalar bile ürünleri tanımayı öğrenir.
  • Ultralytics uygulaması: Mixup
  • Not:
    • mixup oranı, np.random.beta(32.0, 32.0) beta dağılımından seçilen rastgele bir değerdir; bu, her görüntünün yaklaşık %50 katkıda bulunması ve küçük farklılıklar olması anlamına gelir.
Birinci 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 verilen 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üşümden geçmesini sağlarken cutmix=0.0 dönüşümü 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 olasılığı %50'dir.
  • Amaç: Yerel özelliklerin bütünlüğünü korurken gerçekçi örtülme senaryoları oluşturarak model performansını artırır. Örneğin otonom sürüş sistemlerinde cutmix, modelin diğer nesneler tarafından kısmen örtülmüş olsalar bile araçları veya yayaları tanımayı öğrenmesine yardımcı olur; böylece üst üste binen nesnelerin bulunduğu karmaşık gerçek dünya ortamlarında algılama doğruluğu artar.
  • Ultralytics uygulaması: CutMix
  • Not:
    • Kesilen bölgenin boyutu ve konumu her uygulama için rastgele belirlenir.
    • Piksel değerlerini genel olarak harmanlayan mixup'ın aksine cutmix, kesilen bölgelerdeki özgün piksel yoğunluklarını koruyarak yerel özellikleri muhafaza eder.
    • Bir bölge, yalnızca mevcut hiçbir BBox ile örtüşmüyorsa hedef görüntüye yapıştırılır. Ayrıca yalnızca özgün alanlarının yeterli kısmını yapıştırılan bölge içinde koruyan BBox'lar muhafaza edilir.
    • Bu minimum BBox alan eşiği mevcut uygulamayla değiştirilemez. Algılama etiketleri için 0.1 (%10), etiketler segmentler taşıdığında ise 0.01 (%1) değerindedir.
Birinci görüntü, cutmix kapalıİkinci görüntü, cutmix kapalıcutmix açık
First image for CutMixSecond image for CutMixCutMix augmentation enabled

Kopyala-Yapıştır Artırmaları#

Kopyala-Yapıştır (copy_paste)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Poligon etiketleri gerektirir; bu nedenle segment ve OBB görevlerine uygulanır. Bu artırma, copy_paste_mode tarafından kontrol edilerek görüntüler içindeki veya görüntüler arasındaki nesneleri kopyalar. flip modunda copy_paste, kopyalanan uygun nesnelerin oranıdır: altı uygun nesne içeren bir görüntü, copy_paste=0.5 değerinde üç kopya kazanır. mixup modunda aynı değer, kopyala-yapıştırın çalıştırılma olasılığını da kontrol eder. copy_paste=0.0 dönüşümü devre dışı bırakır.
  • Amaç: Özellikle örnek segmentasyonu görevleri ve nadir nesne sınıfları için kullanışlıdır. Örneğin belirli kusur türlerinin seyrek görüldüğü endüstriyel kusur algılamada kopyala-yapıştır artırması, bu nadir kusurları bir görüntüden diğerine kopyalayarak görülme sıklıklarını yapay olarak artırabilir; böylece model, ek kusurlu örnekler gerektirmeden az temsil edilen bu durumları daha iyi öğrenir.
  • Ultralytics uygulaması: CopyPaste
  • Not:
    • Aşağıdaki videoda gösterildiği gibi, copy_paste artırması nesneleri bir görüntüden diğerine kopyalamak için kullanılabilir.
    • Kopyalanmak üzere bir nesne seçildiğinde, copy_paste_mode değerinden bağımsız olarak, hedef görüntüde zaten bulunan tüm nesnelere göre IoA değeri hesaplanır. Nesne yalnızca tüm IoA değerleri 0.3 (%30) değerinin altındaysa yapıştırılır; herhangi bir IoA değeri 0.3 veya daha yüksekse yapıştırılmaz.
    • IoA eşiği mevcut uygulamayla değiştirilemez ve varsayılan olarak 0.3 değerine ayarlanmıştır.
copy_paste kapalıcopy_paste, copy_paste_mode=flip ile açıkcopy_paste sürecini görselleştirme
Original image without augmentationCopy-paste augmentation enabled

Copy-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 alınır; 'mixup' ise 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 seçeneği için 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 nesnelerin şekillerinde orijinallerine kıyasla küçük farklılıklar olabilir.
Referans görüntücopy_paste için seçilen görüntücopy_paste, copy_paste_mode=mixup ile açık
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, 'autoaugment' AutoAugment ve 'augmix' AugMix 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. 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ğitemez. Belirli veri kümeleri için en uygun artırma stratejilerini keşfetmek için harici kitaplıklar veya özel uygulamalar gerekir. AutoAugment makalesine bakın.
    • RandAugment: Dönüşümleri eşit büyüklükle rastgele seçerek uygular. Bu yaklaşım, kapsamlı bir arama aşamasına duyulan ihtiyacı azaltır; böylece model sağlamlığını artırırken hesaplama açısından daha verimli olur. RandAugment makalesine bakın.
    • AugMix: AugMix, basit dönüşümlerin rastgele kombinasyonlarıyla çeşitli görüntü varyasyonları oluşturarak model sağlamlığını artıran bir veri artırma yöntemidir. AugMix makalesine bakın.
  • Ultralytics uygulaması: classify_augmentations()
  • Not:
    • Temel olarak, üç yöntem arasındaki ana fark, artırma politikalarının tanımlanma ve uygulanma şeklidir.
    • Üç yöntemi ayrıntılı olarak karşılaştıran bu makaleye başvurabilirsin.

Rastgele Silme (erasing)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.4
  • Kullanım: Sınıflandırma eğitimi sırasında görüntünün bazı bölümlerini rastgele siler. erasing hiperparametresi dönüşümün uygulanma olasılığını tanımlar; erasing=1.0 her görüntüde bir bölgeyi siler, 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 olasılığı %50'dir.
  • Amaç: Modellerin sağlam özellikler öğ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 örtülmelere karşı daha sağlam olmasına yardımcı olur. Modeli yalnızca engellenebilecek ayırt edici özelliklere güvenmek yerine kişileri birden fazla yüz özelliğini kullanarak tanımlamaya zorlayarak gerçek dünya performansını iyileştirir.
  • Ultralytics uygulaması: classify_augmentations()
  • Not:
    • erasing artırması, mevcut uygulamayla değiştirilemeyen scale, ratio ve value hiperparametreleriyle birlikte gelir. PyTorch belgelerinde belirtildiği üzere varsayılan değerleri sırasıyla (0.02, 0.33), (0.3, 3.3) ve 0 şeklindedir.
erasing kapalıerasing açık (örnek 1)erasing açık (örnek 2)erasing açık (örnek 3)
Original image without augmentationRandom erasing example 1Random erasing example 2Random erasing example 3

Gelişmiş Artırma Özellikleri#

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

  • Tür: Albumentations dönüşümlerinin list türü
  • Varsayılan: None
  • Kullanım: Python API 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 Albumentations dönüşüm nesnelerinden oluşan bir liste kabul eder.
  • Amaç: Albumentations dönüşümlerinden oluşan kapsamlı kitaplıktan yararlanarak veri artırma stratejileri üzerinde ayrıntılı denetim sağlar. Bu özellik, yerleşik YOLO seçeneklerinin ötesinde özel artırmalara ihtiyaç duyduğunda özellikle yararlıdır; örneğin tıbbi görüntüleme için elastik deformasyonlar ve ızgara bozulmaları, hava ve uydu görüntülerindeki üstten bakış açılarına göre ayarlanmış dönüşümler, düşük ışık koşullarını taklit eden gürültü ve parlaklık değişimleri veya endüstriyel denetim için kusur benzeri doku varyasyonları.
  • Ultralytics uygulaması: Albumentations
  • Not:
    • Dönüşüm nesnelerini oluşturmak için Python API gerekir. Ultralytics, bir checkpoint kaydederken bunları A.to_dict() ile serileştirir; böylece önceden serileştirilmiş bir liste YAML yapılandırma dosyası veya CLI üzerinden gidip gelebilir ve resume bu listeyi geri yükleyebilir.
    • Özel dönüşümler, varsayılan Albumentations kümesinin tamamen yerini alır. Bu sayfanın başka bir yerinde yapılandırılan her artırma — mosaic, hsv_h, degrees ve diğerleri — etkin kalır ve bağımsız olarak uygulanır.
    • A.OneOf veya A.Compose içine iç içe geçmiş olanlar da dahil olmak üzere görüntü geometrisini değiştiren uzamsal dönüşümler, sınırlayıcı kutuları, çokgenleri, anahtar noktaları ve derinlik veya anlamsal maskeleri görüntüyle birlikte taşır; A.RandomGridShuffle, çokgen veya anahtar nokta topolojisini koruyamaz ve segmentasyon, poz ve OBB örneklerinde hata fırlatır.
    • Albumentations 70'in üzerinde dönüşüm sunar; Albumentations belgelerinde bunların tümü listelenmiştir. Çok sayıda veya hesaplama açısından pahalı dönüşüm eklemek eğitimi yavaşlatır; bu nedenle küçük bir kümeyle başla ve epoch süresini izle.
    • detect, segment, semantic, depth, pose ve obb görevleri için geçerlidir. Sınıflandırma ayrı bir artırma işlem hattı kullandığından kapsam dışıdır.

Aşağıdaki örnekler 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.

Ö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(std_range=(0.0124, 0.0277), 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,
)

SSS#

  • Doğru artırmaları seçmek, özel kullanım alanına ve veri kümesine bağlıdır. Karar vermene yardımcı olacak birkaç genel yönergeyi aşağıda bulabilirsin:

    • Ç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 iyi bir başlangıç noktasıdır.
    • Kameranın bakış açısı sabitse ve model dağıtıldıktan sonra değişmeyecekse rotation, translation, scale, shear veya perspective gibi geometrik dönüşümleri muhtemelen atlayabilirsin. Ancak kamera açısı değişebilecekse ve modelin daha sağlam olmasını istiyorsan bu artırmaları koruman daha iyi olur.
    • Kısmen örtülmüş nesnelerin veya görüntü başına birden fazla nesnenin bulunması kabul edilebilirse ve etiket değerini değiştirmiyorsa mosaic artırmasını kullan. Alternatif olarak mosaic değerini etkin tutabilir, ancak eğitim sürecinin daha erken bir aşamasında devre dışı bırakmak için close_mosaic değerini artırabilirsin.

    Kısacası: basit tut. Küçük bir artırma kümesiyle başla ve gerektiğinde kademeli olarak yenilerini ekle. Amaç eğitim sürecini gereksiz yere karmaşıklaştırmak değil, modelin genelleme yeteneğini ve sağlamlığını geliştirmektir. Ayrıca uyguladığın artırmaların, modelinin üretimde karşılaşacağı veri dağılımını yansıttığından emin ol.

  • albumentations paketi yüklüyse Ultralytics, bu paketi kullanarak bir dizi ek görüntü artırmasını otomatik olarak uygular. Bu artırmalar dahili olarak işlenir 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 değerinden büyük olan artırmaların etkin olduğunu unutma. Bunlar bulanıklık veya gri tonlama efektleri gibi gerçek dünya görsel kusurlarını taklit etmek amacıyla düşük sıklıklarda uygulanır.

    Python API'yi 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.

  • albumentations paketinin yüklü olup olmadığını kontrol et. Yüklü değilse yükle:

    pip install albumentations

    Yüklendikten sonra paket otomatik olarak algılanmalı ve Ultralytics tarafından kullanılmalıdır.

  • Özel bir veri kümesi sınıfı ve eğitici 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