Ultralytics YOLO27:
Get Started

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ü alanında kritik bir tekniktir. Ultralytics YOLO gibi derin öğrenme modellerini eğitirken veri artırma, model dayanıklılığını iyileştirmeye, aşırı öğrenmeyi azaltmaya ve gerçek dünya senaryolarına genellemeyi güçlendirmeye yardımcı olur.



İzle: Mozaik, MixUp ve daha fazla veri artırma yöntemini kullanarak Ultralytics YOLO modellerinin genelleme yeteneğini nasıl geliştirebilirsin 🚀

Veri Artırma Neden Önemlidir?#

Veri artırma, bilgisayarlı görü modellerinin eğitiminde kritik öneme sahip birçok amaca hizmet eder:

  • Genişletilmiş Veri Kümesi: Mevcut görüntülerin varyasyonlarını oluşturarak yeni veri toplamadan eğitim veri kümenin boyutunu etkili biçimde artırabilirsin.
  • İyileştirilmiş Genelleme: Modeller, nesneleri çeşitli koşullarda tanımayı öğrenerek gerçek dünya uygulamalarında daha dayanıklı hâle gelir.
  • Azaltılmış Aşırı Öğrenme: Eğitim verilerine çeşitlilik katarak modellerin belirli görüntü özelliklerini ezberleme olasılığını düşürürsün.
  • Geliştirilmiş Performans: Uygun artırma teknikleriyle eğitilen modeller, doğrulama ve test kümelerinde genellikle daha yüksek 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 artırma teknikleri paketi sunar. Bu kılavuz, aşağıdaki artırma ayarlarını ele alarak bunları projelerinde ne zaman ve nasıl etkili biçimde kullanabileceğini anlamana yardımcı olur.

Örnek Yapılandırmalar#

Her parametreyi Python API'si, komut satırı arayüzü (CLI) veya bir yapılandırma dosyası kullanarak özelleştirebilirsin. Aşağıda, her yöntemde veri artırmayı nasıl ayarlayabileceğine dair örnekler bulabilirsin.

Yapılandırma Örnekleri
import albumentations as A

from ultralytics import YOLO

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

# Özel artırma parametreleriyle eğitim
model.train(data="coco8.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Yapılandırılabilir tüm artırmaları devre dışı bırakarak eğitim (açıklık için devre dışı değerler gösterilmemiştir)
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,
)

# Özel Albumentations dönüşümleriyle eğitim (yalnızca Python API'si)
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 argümanlarını sıfırlamak Albumentations'ı devre dışı bırakmaz

Bu sayfada listelenen dönüşümler, eğitim argümanlarıyla kontrol ettiklerindir. albumentations paketi yüklüyse Ultralytics ayrıca her biri p=0.01 olasılıkla 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 argüman bunu devre dışı bırakmaz. Kaldırmak için paketi kaldırabilir veya bu kümenin yerine kendi listeni geçirmek için augmentations kullanabilirsin.

Yapılandırma dosyası kullanma#

Artırmalar da dâhil olmak üzere tüm eğitim parametrelerini bir YAML yapılandırma dosyasında tanımlayabilirsin (ör. train_custom.yaml). mode parametresi yalnızca CLI kullanırken gereklidir. Bu yeni YAML dosyası, 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

# COCO üzerinde önceden eğitilmiş bir YOLO26n modelini yükle
model = YOLO("yolo26n.pt")

# Modeli özel yapılandırmayla eğit
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ı belirler; son ayar -hsv_h ile hsv_h arasından rastgele seçilir. Örneğin, hsv_h=0.3 ile kaydırma, -0.3 ile 0.3 arasından rastgele seçilir. 0.5 üzerindeki değerlerde ton kaydırması renk çemberinde başa 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ında özellikle kullanışlıdır. Örneğin, parlak güneş ışığında bir muz 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 miktarını belirler; son ayar -hsv_s ile hsv_s arasından rastgele seçilir. Örneğin, hsv_s=0.7 ile yoğunluk -0.7 ile 0.7 arasından rastgele seçilir.
  • Amaç: Modellerin değişken hava koşullarına ve kamera ayarlarına uyum sağlaması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 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 miktarını belirler; son ayar -hsv_v ile hsv_v arasından rastgele seçilir. Örneğin, hsv_v=0.4 ile yoğunluk -0.4 ile 0.4 arasından rastgele seçilir.
  • Amaç: Farklı aydınlatma 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 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ı belirler; son ayar -degrees ile degrees arasından rastgele seçilir. Örneğin, degrees=10.0 ile döndürme -10.0 ile 10.0 arasından rastgele seçilir.
  • Amaç: Nesnelerin farklı yönlerde görünebildiği uygulamalar için kritik öneme sahiptir. Örneğin, havadan çekilen drone görüntülerinde araçlar her yöne dönük olabilir; modellerin nesneleri dönüş açısından 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 oranı kadar yatay ve dikey kaydırır. translate hiperparametresi kaydırma miktarını belirler; son ayar her eksen için bir kez olmak üzere -translate ile translate aralığında rastgele seçilir. Örneğin, translate=0.5 ile x eksenindeki öteleme -0.5 ile 0.5 arasından rastgele seçilir; y ekseni için de aynı aralıktan 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 nesnelerin konumlarına karşı dayanıklılığı 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ı karede tamamen veya kısmen görünebilir; öteleme artırması modele bu özellikleri bütünlüklerinden veya konumlarından bağımsız olarak tanımayı öğretir.
  • Ultralytics uygulaması: RandomPerspective
  • Not: Basitlik açısından, aşağıda uygulanan ötelemeler hem x hem de y eksenlerinde her seferinde aynıdır. Görüntüyü tamamen karenin dışına taşıyacakları için -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çek (scale)#

  • Aralık: Kayan noktalı sayı olarak 0.0 - 1.0 ya da açıkça belirtilen (min, max) demeti
  • Varsayılan: 0.5
  • Kullanım: Görüntüleri belirtilen aralık içinde rastgele bir katsayıyla yeniden boyutlandırır. Kayan noktalı sayı biçiminde scale hiperparametresi ölçekleme çarpanını belirler; son katsayı 1-scale ile 1+scale arasından rastgele seçilir. Örneğin, scale=0.5 ile ölçekleme 0.5 ile 1.5 arasından rastgele seçilir. Demet biçiminde scale bu aralığı doğrudan belirler; dolayısıyla scale=(0.5, 2.0), katsayıyı 0.5 ile 2.0 arasından seçer.
  • Amaç: Modellerin farklı uzaklık ve boyutlardaki nesneleri işlemesini sağlar. Örneğin, otonom sürüş uygulamalarında araçlar kameradan çeşitli uzaklıklarda görünebilir; 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ırma yapar.
    • Aşağıdaki tabloda gösterilen değerler, scale hiperparametresine verdiğin değerler değil, gerçekleşen ölçek farklarıdır.
    • Kayan noktalı sayı biçimi 0.0 - 1.0 aralığıyla doğrulanır; bu aralığın dışındaki bir değer ValueError hatasına yol açar. 2x yakınlaştırmanın ötesinde bir katsayı seçmek için bunun yerine (min, max) demet biçimini kullan.
    • Demet biçimi yalnızca geometrik görevler için geçerlidir. Sınıflandırma eğitimi kendi kırpma aralığını kayan noktalı sayıdan (1.0 - scale ile 1.0 arası) türetir; bu nedenle burada demet geçirmek TypeError hatasına yol açar.
-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

Kayma (shear)#

  • Aralık: -180 ile +180 arası
  • Varsayılan: 0
  • Kullanım: Görüntüyü hem x hem de y ekseninde eğerek, paralel çizgileri korurken görüntünün bazı kısımlarını bir yönde etkili biçimde kaydıran geometrik bir dönüşüm uygular. shear hiperparametresi kayma açısını belirler; son ayar -shear ile shear arasından rastgele seçilir. Örneğin, shear=10.0 ile x eksenindeki kayma -10 ile 10 arasından rastgele seçilir; y ekseni için de aynı aralıktan bağımsız başka bir rastgele değer seçilir.
  • Amaç: Hafif eğilmelerden veya eğik bakış açılarından kaynaklanan görüş açısı farklılıklarına karşı modellerin genelleme yapmasına yardımcı olur. Örneğin, trafik izlemede kameraların dik olmayan konumları nedeniyle otomobiller ve trafik levhaları gibi nesneler eğik görünebilir. Kayma artırması uygulamak, modelin bu tür eğrilik bozulmalarına 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şlayıp bunları kademeli olarak artırman önerilir.
    • Perspektif dönüşümlerinden farklı olarak kayma, 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: Nesnelerin farklı derinliklerden veya açılardan bakıldığında nasıl göründüğünü taklit ederek hem x hem de y ekseninde tam perspektif dönüşümü uygular. perspective hiperparametresi perspektif miktarını belirler; son ayar -perspective ile perspective arasından rastgele seçilir. Örneğin, perspective=0.001 ile x eksenindeki perspektif -0.001 ile 0.001 arasından rastgele seçilir; y ekseni için de aynı aralıktan bağımsız başka bir rastgele değer seçilir.
  • Amaç: Perspektif artırması, özellikle perspektif değişimleri nedeniyle nesnelerin kısaldığı veya bozulduğu senaryolarda, aşırı görüş açısı değişikliklerini ele almak için kritik öneme sahiptir. Örneğin, drone tabanlı nesne algılamada binalar, yollar ve araçlar drone'un eğimine ve irtifasına bağlı olarak uzamış veya sıkışmış görünebilir. Perspektif dönüşümleri uygulayarak modeller, perspektif kaynaklı bu bozulmalara rağmen nesneleri tanımayı öğrenir ve gerçek dünya uygulamalarındaki dayanıklılı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

Dikey Çevirme (flipud)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Görüntüyü y ekseninde ters çevirerek dikey olarak çevirir. 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ı belirler; flipud=1.0 değeri tüm görüntülerin çevrilmesini, flipud=0.0 değeri ise dönüşümün tamamen devre dışı bırakılmasını sağlar. Ö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 senaryolarda kullanışlıdır. Örneğin, robotik görü sistemlerinde konveyör bantlarındaki veya robotik kollardaki nesneler alınarak çeşitli yönlerde yerleştirilebilir. Dikey çevirme, modelin nesneleri üst-alt 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

Yatay Çevirme (fliplr)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.5
  • Kullanım: Görüntüyü x ekseninde yansıtarak yatay olarak çevirir. Bu dönüşüm, uzamsal tutarlılığı koruyarak sağ ve sol tarafları yer değiştirir; böylece modelin yansıtılmış yönlerde görünen nesnelere genelleme yapmasına yardımcı olur. fliplr hiperparametresi dönüşümün uygulanma olasılığını belirler; fliplr=1.0 değeri tüm görüntülerin çevrilmesini, fliplr=0.0 değeri ise dönüşümün tamamen devre dışı bırakılmasını sağlar. Örneğin, fliplr=0.5 ile her görüntünün soldan sağa çevrilme olasılığı %50'dir.
  • Amaç: Yatay çevirme, sağ-sol farklılıklarına karşı dayanıklılığı artırmak için nesne algılama, poz tahmini ve yüz tanımada yaygın biçimde kullanılır. Örneğin, otonom sürüşte araçlar ve yayalar yolun her iki tarafında da görünebilir; yatay çevirme, modelin onları her iki yönde de aynı başarıyla 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: Görüntünün renk kanallarını RGB'den BGR'ye değiştirerek renklerin temsil edilme sırasını farklılaştırır. bgr hiperparametresi dönüşümün uygulanma olasılığını belirler; bgr=1.0 tüm görüntülerin kanal değişimine uğramasını, bgr=0.0 ise dönüşümün devre dışı bırakılmasını sağlar. Ö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 biçimlerinin tutarsız kullanıldığı çeşitli kamera sistemleri ve görüntüleme kütüphanelerinde çalışması gereken modelleri eğitirken veya model farklı giriş renk biçimlerine sahip bir ortama dağıtılı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ı belirler; mosaic=1.0 tüm görüntülerin birleştirilmesini, mosaic=0.0 ise dönüşümün devre dışı bırakılmasını sağlar. Ö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ı anlamayı iyileştirmede son derece etkilidir. Örneğin, hayvanların çeşitli uzaklıklarda ve ölçeklerde görünebildiği yaban hayatını koruma projelerinde mozaik artırması, sınırlı veriden çeşitli eğitim örnekleri oluşturarak modelin aynı türü farklı boyutlarda, kısmi örtülmelerde ve çevresel bağlamlarda tanımayı öğrenmesine yardımcı olur.
  • Ultralytics uygulaması: Mosaic
  • Not:
    • mosaic artırması modeli daha dayanıklı hâle getirse de eğitim sürecini zorlaştırabilir.
    • mosaic artırması, eğitim sona ermeden önce kapatılacağı epoch sayısı close_mosaic olarak ayarlanarak eğitimin sonuna doğru devre dışı bırakılabilir. Örneğin, epochs değeri 200 ve close_mosaic değeri 20 olarak ayarlanırsa mosaic artırması 180 epoch sonrasında devre dışı kalır. close_mosaic değeri 0 olarak ayarlanırsa mosaic artırması tüm eğitim süreci boyunca etkin olur.
    • Mozaik kapatıldığında aynı epoch'ta copy_paste, mixup ve cutmix de devre dışı kalır. Bu dört artırma birlikte kapatılır; böylece son epoch'larda bunlar olmadan eğitim yapılırken diğer tüm artırmalar (geometrik dönüşümler, HSV, çevirmeler ve Albumentations) çalışmaya devam eder. Varsayılan flip modundaki copy_paste öğesinin birkaç görüntüyü birleştirmek yerine tek bir görüntü üzerinde çalıştığını unutma.
    • Oluşturulan mozaiğin merkezi rastgele değerlerle belirlenir ve görüntünün içinde de dışında da olabilir.
    • mosaic artırmasının mevcut uygulaması, mevcut görüntüyü yakın zamanda yüklenmiş görüntülerden oluşan bir arabellekten veya cache='ram' olduğunda veri kümesinin herhangi bir yerinden alınan 3 başka görüntüyle birleştirir. Her iki durumda da görüntüler yerine koyarak örneklendiğinden aynı görüntü tek bir mozaikte birden fazla kez yer alabilir.
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 belirtilen olasılıkla harmanlar. mixup hiperparametresi dönüşümün uygulanma olasılığını belirler; mixup=1.0 tüm görüntülerin karıştırılmasını, mixup=0.0 ise dönüşümün devre dışı bırakılmasını sağlar. Ö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 dayanıklılığını artırır 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 dayanıklı özellikler öğrenmesine yardımcı olur; böylece model, kalabalık mağaza raflarında ürünler kısmen görünür veya başka ürünlerce örtülmüş olsa bile onları 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 nedenle her görüntü yaklaşık %50 katkıda bulunur ve küçük farklılıklar oluşur.
İ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: Belirtilen olasılıkla bir görüntüden dikdörtgen bir bölge kesip başka bir görüntünün üzerine yapıştırır. cutmix hiperparametresi dönüşümün uygulanma olasılığını belirler; cutmix=1.0 tüm görüntülerin bu dönüşümden geçmesini, cutmix=0.0 ise dönüşümün tamamen devre dışı bırakılmasını sağlar. Örneğin cutmix=0.5 değerinde 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 özellik 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, araçlar veya yayalar başka nesneler tarafından kısmen örtülse bile modelin bunları tanımayı öğrenmesine yardımcı olur ve üst üste binen nesnelerin bulunduğ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 uygulamada 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 sınırlayıcı kutuyla örtüşmüyorsa hedef görüntüye yapıştırılır. Ayrıca yalnızca yapıştırılan bölgenin içinde özgün alanının yeterli bir kısmını koruyan sınırlayıcı kutular tutulur.
    • Bu asgari sınırlayıcı kutu alanı eşiği mevcut uygulamayla değiştirilemez. Algılama etiketleri için 0.1 (%10), etiketlerde segmentler bulunduğunda ise 0.01 (%1) değerindedir.
İlk görüntü, cutmix kapalıİkinci görüntü, cutmix kapalıcutmix açık
First image for CutMixSecond image for CutMixCutMix augmentation enabled

Copy-Paste Artırmaları#

Copy-Paste (copy_paste)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Çokgen etiketleri gerektirdiği için segment ve OBB görevlerinde uygulanır; bu artırma, nesneleri görüntü içinde veya görüntüler arasında kopyalar ve copy_paste_mode tarafından kontrol edilir. flip modunda copy_paste, kopyalanmaya uygun nesnelerin kopyalanan oranıdır: kopyalanmaya uygun altı nesnesi olan bir görüntüye copy_paste=0.5 değerinde üç kopya eklenir. mixup modunda aynı değer, copy-paste işleminin ç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 tespitinde copy-paste 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 ek kusurlu örneklere gerek kalmadan modelin yeterince temsil edilmeyen bu örnekleri daha iyi öğrenmesine yardımcı olur.
  • 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.
    • Bir nesne kopyalanmak üzere seçildiğinde, copy_paste_mode değerinden bağımsız olarak IoA değeri hedef görüntüde zaten bulunan tüm nesnelere göre 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 değerine eşit 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ştir
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ında kullanılacak 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 ekleneceği konusunda esneklik sağlar.
  • Ultralytics uygulaması: CopyPaste
  • Not:
    • IoA ilkesi her iki copy_paste_mode seçeneğinde de aynıdır, ancak nesnelerin kopyalanma şekli farklıdır.
    • Görüntü boyutuna bağlı olarak nesneler bazen kısmen ya da tamamen kare dışında kalacak şekilde kopyalanabilir.
    • Çokgen açıklamalarının kalitesine bağlı olarak kopyalanan nesnelerin şekilleri özgünlerinden biraz farklı 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 Özgü Artırmalar#

Auto 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' AutoAugment'ı ve 'augmix' 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. 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ğitemez. Belirli veri kümeleri için en uygun artırma stratejilerini bulmak amacıyla harici kitaplıklar veya özel uygulamalar gerekir. AutoAugment makalesine bakabilirsin.
    • RandAugment: Dönüşümlerden rastgele seçim yapar ve bunları sabit bir şiddette uygular. Bu yaklaşım, kapsamlı bir arama aşamasına duyulan ihtiyacı azaltarak hesaplama verimliliğini artırırken model dayanıklılığını da geliştirir. RandAugment makalesine bakabilirsin.
    • AugMix: AugMix, basit dönüşümlerin rastgele kombinasyonlarıyla çeşitli görüntü varyasyonları oluşturarak model dayanıklılığını artıran bir veri artırma yöntemidir. AugMix makalesine bakabilirsin.
  • Ultralytics uygulaması: classify_augmentations()
  • Not:
    • Temel olarak bu üç yöntem arasındaki başlıca fark, artırma politikalarının tanımlanma ve uygulanma şeklidir.
    • Üç yöntemi ayrıntılı olarak karşılaştıran bu makaleye göz atabilirsin.

Random Erasing (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ı belirler; erasing=1.0 her görüntüde bir bölgeyi silerken erasing=0.0 dönüşümü devre dışı bırakır. Örneğin erasing=0.5 değerinde her görüntünün bir bölümünün silinme olasılığı %50'dir.
  • Amaç: Modellerin dayanıklı özellikler öğrenmesine yardımcı olur ve belirli görüntü bölgelerine aşırı güvenmelerini önler. Örneğin yüz tanıma sistemlerinde random erasing, modellerin güneş gözlüğü, yüz maskesi veya yüz özelliklerini kısmen kapatabilecek başka nesneler gibi kısmi örtülmelere karşı daha dayanıklı olmasına yardımcı olur. Modeli yalnızca belirgin özelliklere bağlı kalmak yerine birden fazla yüz özelliğini kullanarak kişileri tanımaya zorlayarak gerçek dünya performansını artırır.
  • Ultralytics uygulaması: classify_augmentations()
  • Not:
    • erasing artırması, mevcut uygulamayla değiştirilemeyen scale, ratio ve value hiperparametrelerini içerir. 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 değeri
  • 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 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, tıbbi görüntüleme için elastik deformasyonlar ve ızgara bozulmaları, havadan ve uydudan çekilen görüntülere 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 inceleme için kusur benzeri doku değişimleri gibi yerleşik YOLO seçeneklerinin ötesinde özel artırmalara ihtiyaç duyduğunda özellikle kullanışlıdır.
  • Ultralytics uygulaması: Albumentations
  • Not:
    • Dönüşüm nesnelerini oluşturmak için Python API'si gerekir. Ultralytics, kontrol noktası kaydederken bu nesneleri A.to_dict() ile serileştirir; bu sayede önceden serileştirilmiş bir liste YAML yapılandırma dosyası veya CLI üzerinden gidiş-dönüş yapabilir ve resume bu nesneleri geri yükleyebilir.
    • Özel dönüşümler, varsayılan Albumentations kümesinin tamamının yerini alır. Bu sayfanın başka yerlerinde yapılandırılan tüm artırmalar — mosaic, hsv_h, degrees ve diğerleri — etkin kalır ve bağımsız olarak uygulanır.
    • Görüntü geometrisini değiştiren uzamsal dönüşümler ( A.OneOf veya A.Compose içinde iç içe olanlar dâhil), sınırlayıcı kutuları, çokgenleri, anahtar noktaları ve derinlik ya da anlamsal maskeleri görüntüyle birlikte taşır; A.RandomGridShuffle çokgen veya anahtar nokta topolojisini koruyamaz ve segmentasyon, poz ve OBB örneklerinde hata verir.
    • Albumentations 70'ten fazla dönüşüm sunar; Albumentations belgelerinde hepsi listelenmiştir. Çok sayıda veya hesaplama açısından maliyetli dönüşüm eklemek eğitimi yavaşlatır. Bu nedenle küçük bir kümeyle başla ve epoch süresini takip et.
    • 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ığı için kapsam dışıdır.

Aşağıdaki örnekler Albumentations 1.4.22 veya üzerini, dolayısıyla Python 3.9 veya üzerini gerektirir.

Özel Albumentations Örneği
import albumentations as A

from ultralytics import YOLO

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

# Özel Albumentations dönüşümlerini tanımla
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),
]

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

Sık Sorulan Sorular#

  • Doğru artırmaları seçmek, kullanım durumuna ve veri kümesine bağlıdır. Karar vermene yardımcı olacak birkaç genel yönerge:

    • Çoğu durumda renk ve parlaklıktaki küçük değişiklikler yararlı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ı tutarlıysa ve model dağıtıldıktan sonra değişmeyecekse degrees (döndürme), translate, scale, shear veya perspective gibi geometrik dönüşümleri muhtemelen kullanmana gerek yoktur. Ancak kamera açısı değişebilecekse ve modelin daha dayanıklı olmasını istiyorsan bu artırmaları etkin bırakman daha iyi olur.
    • mosaic artırmasını yalnızca kısmen örtülmüş nesnelerin veya görüntü başına birden fazla nesnenin kabul edilebilir olduğu ve etiket değerini değiştirmediği durumlarda kullan. Alternatif olarak mosaic seçeneğini etkin bırakıp eğitim sürecinde daha erken devre dışı bırakmak için close_mosaic değerini artırabilirsin.

    Kısacası, işleri basit tut. Küçük bir artırma kümesiyle başla ve gerektiğinde yavaş yavaş yenilerini ekle. Amaç, eğitim sürecini gereğinden fazla karmaşıklaştırmak değil, modelin genelleme yeteneğini ve dayanıklılığını artırmaktır. 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 yürütülür ve ek yapılandırma gerektirmez.

    Uygulanan dönüşümlerin tam listesini teknik belgelerimizde ve Albumentations entegrasyon kılavuzumuzda bulabilirsin. Yalnızca olasılığı p, 0 değerinden büyük olan artırmaların etkin olduğunu unutma. Bulanıklık veya gri tonlama efektleri gibi gerçek dünya görsel bozulmalarını taklit etmek için bu artırmalar özellikle düşük sıklıkta uygulanır.

    Python API'sini kullanarak kendi özel Albumentations dönüşümlerini de sağlayabilirsin. Daha fazla bilgi 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 paketi yükle:

    pip install albumentations

    Paket yüklendikten sonra Ultralytics tarafından otomatik olarak algılanıp 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 dönüşümüyle veya başka dönüşümlerle değiştirebilirsin. Uygulama ayrıntıları için sınıflandırma belgelerindeki özel eğitim örneğine bak.

Yorumlar