YOLO Vision 2026:

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 setini yapay olarak genişleten, bilgisayarlı görüde çok önemli bir tekniktir. Ultralytics YOLO gibi derin öğrenme modellerini eğitirken veri artırma, modelin gürbüzlüğünü (dayanıklılığını) artırmaya yardımcı olur, aşırı öğrenmeyi (overfitting) azaltır ve gerçek dünya senaryolarına genellemeyi geliştirir.



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

Veri Artırma Neden Önemlidir?#

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

  • Genişletilmiş Veri 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.
  • Gelişmiş Performans: Uygun artırma ile eğitilen modeller genellikle doğrulama ve test setlerinde daha iyi bir 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ı inceleyerek bunları projelerinde ne zaman ve nasıl etkili bir şekilde kullanacağını anlamanı sağlar.

Ö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="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 argümanlarını sıfırlamak Albumentations'ı devre dışı bırakmaz

Bu sayfada listelenen dönüşümler, eğitim argümanları aracılığıyla kontrol ettiğin dönüşümlerdir. albumentations paketi yüklendiğinde ve default.yaml içinde bunu kapatan hiçbir argüman olmadığında, Ultralytics ayrıca küçük bir Albumentations seti (bulanıklaştırma, medyan bulanıklaştırma, gri tonlama ve CLAHE, her biri p=0.01 değerindedir) uygular. Paketi kaldırmak için kaldırabilir veya değiştirmek için augmentations öğesine kendi listenle geçiş yapabilirsin.

Bir yapılandırma dosyası kullanmak#

Artırmalar da dahil olmak üzere 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 dosyayı geçersiz kılar.

# 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")

Renk Uzayı Artırmaları#

Ton Ayarı (hsv_h)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.015
  • Kullanım: İlişkilerini korurken görüntü renklerini 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 ila 0.3 içinde rastgele seçilir. 0.5 üzerindeki değerler için ton kayması renk çarkının etrafında döner, bu yüzden artırmalar 0.5 ve -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 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 ila 0.7 içinde rastgele seçilir.
  • Amaç: Modellerin değişen hava koşulları ve kamera ayarlarıyla başa çıkmasına yardımcı olur. Örneğin kırmızı bir trafik levhası güneşli bir günde çok canlı görünürken, sisli havalarda donuk ve solgun 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 ila 0.4 içinde rastgele seçilir.
  • 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 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 - 180
  • 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 ila 10.0 içinde 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 uygulaması: RandomPerspective
-180-900.090180
Rotation -180 degrees augmentationRotation -90 degrees augmentationOriginal image without augmentationRotation 90 degrees augmentationRotation 180 degrees augmentation

Öteleme / Kaydırma (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 kesiri kadar kaydırır. translate hiperparametresi kaydırma büyüklüğünü tanımlar ve son ayar -translate ve translate aralığında iki kez (her eksen için bir kez) rastgele seçilir. Örneğin, translate=0.5 ile öteleme x ekseninde -0.5 ila 0.5 arasında rastgele seçilir ve y ekseninde aynı aralıkta başka bir bağımsız rastgele değer seçilir.
  • 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 uygulaması: RandomPerspective
  • Not: Basitlik olması açısından, aşağıda uygulanan çeviriler 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 karenin 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çekleme (scale)#

  • Aralık: Ondalık sayı olarak 0.0 - 1.0 veya açık bir (min, max) demeti
  • Varsayılan: 0.5
  • Kullanım: Görüntüleri belirtilen aralıkta rastgele bir faktörle yeniden boyutlandırır. Ondalık sayı olarak scale hiperparametresi ölçeklendirme kazancını tanımlar; nihai faktör 1-scale ile 1+scale arasında rastgele seçilir. Örneğin, scale=0.5 ile ölçeklendirme 0.5 ile 1.5 arasında rastgele seçilir. Demet olarak scale bu aralığı doğrudan ayarlar, böylece scale=(0.5, 2.0), faktörü 0.5 ve 2.0 arasından örnekler.
  • 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 uygulaması: RandomPerspective
  • Not:
    • -1.0 değeri, görüntüyü kaybolmaya izazacağı için gösterilmezken, 1.0 basitçe 2x yakınlaştırma ile sonuçlanır.
    • Aşağıdaki tabloda gösterilen değerler, scale hiperparametresine geçtiğin değerler değil, gerçekleştirilen ölçek farklarıdır.
    • Ondalık biçim, 0.0 - 1.0 aralığına göre doğrulanır ve bu aralığın dışındaki bir değer bir ValueError hatasına neden olur. 2x yakınlaştırmanın ötesinde bir faktör örneklemek 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ı ondalık sayıdan (1.0 - scale - 1.0) türetir, bu nedenle buraya bir demet geçmek bir TypeError hatasına neden olur.
-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

Eğme / Makaslama (shear)#

  • Aralık: -180 - +180
  • Varsayılan: 0
  • Kullanım: Görüntüyü hem x ekseni hem de y ekseni boyunca eğen, paralel çizgileri korurken görüntünün bazı kısımlarını tek bir yönde kaydıran geometrik bir dönüşüm sunar. shear hiperparametresi eğme açısını tanımlar ve son ayar -shear ile shear arasında rastgele seçilir. Örneğin, shear=10.0 ile eğme, x ekseninde -10 ila 10 arasında rastgele seçilir ve y ekseninde aynı aralıkta başka bir bağımsız rastgele değer seçilir.
  • 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 uygulaması: RandomPerspective
  • Not:
    • shear değerleri görüntüyü hızla bozabilir, bu nedenle 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

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ü 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 son ayar -perspective ile perspective arasında rastgele seçilir. Örneğin, perspective=0.001 ile perspektif x ekseninde -0.001 ila 0.001 arasında rastgele seçilir ve y ekseninde aynı aralıkta başka bir bağımsız 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 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 / Aşağı-Yukarı Çevir (flipud)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Görüntüyü y ekseni boyunca ters çevirerek dikey bir çevirme gerçekleştirir. Bu dönüşüm tüm görüntüyü baş aşağı aynalar ancak nesneler arasındaki tüm uzamsal ilişkileri korur. Flipud hiperparametresi dönüşümün uygulanma olasılığını tanımlar; flipud=1.0 değeri tüm görüntülülerin çevrilmesini sağlarken, 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 şansı %50'dir.
  • 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

Yatay Çevirme / Sol-Sağ Çevir (fliplr)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.5
  • Kullanım: Görüntüyü x ekseni boyunca aynalayarak yatay bir çevirme gerçekleştirir. Bu dönüşüm, uzamsal tutarlılığı korurken sol ve sağ yanları takas eder; bu da modelin aynalanmış yönlerde beliren nesnelere genelleme yapmasına yardımcı olur. fliplr hiperparametresi dönüşümün uygulanma olasılığını tanımlar; fliplr=1.0 değeri tüm görüntülerin çevrilmesini sağlarken, fliplr=0.0 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 şansı %50'dir.
  • Amaç: Yatay çevirme, sol-sağ varyasyonlarına karşı dayanıklılığı artırmak için nesne algılama, poz tahmini ve yüz tanı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

BGR 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 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 takasından geçmesini 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 şansı %50'dir.
  • Amaç: Farklı renk kanalı sıralamalarına karşı dayanıklılığı artırır. Örneğin, RGB ve BGR formatlarının tutarsız 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

Mozaik (mosaic)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 1
  • Kullanım: Dört eğitim görüntüsünü birleştirerek tek bir görüntü yapar. 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 ş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ırması modeli daha gürbüz hale getirse bile, eğitim sürecini de daha zorlu hale getirebilir.
    • mosaic artırması, kapatılması gerektiğinde tamamlanmadan önceki epoch sayısını close_mosaic değerine ayarlayarak eğitimin sonuna doğru devre dışı bırakılabilir. Örneğin, epochs, 200 olarak ve close_mosaic, 20 olarak ayarlanırsa, mosaic artırması 180 epoch'tan sonra devre dışı bırakılacaktır. Eğer close_mosaic, 0 olarak ayarlanırsa, mosaic artırması tüm eğitim süreci boyunca etkin olacaktır.
    • Mozaiği kapatmak aynı zamanda copy_paste, mixup ve cutmix öğelerini de aynı epoch'ta devre dışı bırakır. Dördü birlikte kapatılır, böylece son epoch'lar, geometrik dönüşümler, HSV, döndürmeler ve Albumentations gibi diğer tüm artırmalar çalışmaya devam ederken bunlar olmadan eğitilir. Varsayılan flip modundaki copy_paste öğesinin birkaç görüntüyü birleştirmek yerine tek bir görüntü içinde çalıştığını unutma.
    • Oluşturulan mozaiğin 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ü son yüklenen görüntülerin arabelleğinden veya cache='ram' olduğunda veri setinin herhangi bir yerinden alınan diğer 3 görüntüyle birleştirir. Her iki durumda da değiştirilerek örneklenirler, böylece 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 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 ş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ı, bir 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 küçük varyasyonlarla yaklaşık %50 katkıda bulunduğu anlamına gelir.
İlk görüntü, mixup kapalıİkinci görüntü, mixup kapalımixup açık
First image for MixUp blendingSecond image for MixUp blendingMixUp blending augmentation enabled

CutMix (cutmix)#

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0
  • Kullanım: Bir görüntüden dikdörtgen bir bölgeyi keser ve verilen olasılıkla başka bir görüntüye 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 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 yama ile 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 global 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ı kutuyla çakışmıyorsa hedef görüntüye yapıştırılır. Ek olarak, yapıştırılan bölge içinde orijinal alanlarının yeterli bir kısmını koruyan sınırlayıcı kutular korunur.
    • Bu minimum sınırlayıcı kutu alanı eşiği mevcut uygulamayla değiştirilemez. Algılama etiketleri için 0.1 (%10) ve etiketler segment taşıdığında 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

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

Copy-Paste (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örevleri için geçerlidir; bu artırma, copy_paste_mode tarafından kontrol edilen görüntüler içinde veya arasında nesneleri kopyalar. flip modunda, copy_paste, kopyalanan uygun nesnelerin oranını belirtir: altı uygun nesneye sahip bir görüntü, copy_paste=0.5 değerinde üç kopya kazanır. mixup modunda, aynı değer ayrıca kopyala-yapıştır işleminin çalıştırılma olasılığını kontrol eder. copy_paste=0.0, dönüşümü devre dışı bırakır.
  • 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 videoda gösterildiği gibi, copy_paste artırması nesneleri bir görselden diğerine kopyalamak için kullanılabilir.
    • Kopyalamak için bir nesne seçildiğinde, IoA'sı copy_paste_mode dikkate alınmaksızın hedef görüntüsünde halihazırda bulunan tüm nesnelere karşı hesaplanır. Nesne yalnızca tüm IoA değerleri 0.3 değerinin (%30) 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 uygulama ile değiştirilemez ve varsayılan olarak 0.3 olarak ayarlanmıştır.
copy_paste kapalıcopy_paste ile copy_paste_mode=flip 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ı için kullanılan yöntemi belirler. 'flip' olarak ayarlanırsa, nesneler aynı görüntüden gelir; 'mixup' ise nesnelerin farklı görüntülerden kopyalanmasına izin verir.
  • Amaç: Kopyalanan nesnelerin hedef görüntülere nasıl entegre edileceği konusunda esneklik sağlar.
  • Ultralytics uygulaması: CopyPaste
  • Not:
    • IoA prensibi her iki copy_paste_mode seçeneği için de aynıdır, ancak nesnelerin kopyalanma biçimi 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 ile copy_paste_mode=mixup açık
Second image for MixUp blendingOriginal image without augmentationCopy-paste with MixUp mode

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

Auto Augment (auto_augment)#

  • Seçenekler: 'randaugment', 'autoaugment', 'augmix', None
  • Varsayılan: 'randaugment'
  • Kullanım: Sınıflandırma için otomatikleştirilmiş artırma politikaları uygular. 'randaugment' seçeneği RandAugment kullanır, 'autoaugment' AutoAugment kullanır ve 'augmix' AugMix kullanır. None olarak ayarlamak otomatik artırmayı devre dışı bırakır.
  • Amaç: Sınıflandırma görevleri için artırma stratejilerini otomatik olarak optimize eder. Farklılıklar şunlardır:
    • AutoAugment: Bu mod, ImageNet, CIFAR10 ve SVHN gibi veri setlerinden öğrenilen önceden tanımlanmış artırma politikalarını uygular. Kullanıcılar bu mevcut politikaları seçebilir ancak Torchvision içinde yeni politikalar eğitemez. Belirli veri setleri için en uygun artırma stratejilerini keşfetmek adına harici kütüphaneler veya özel uygulamalar gerekecektir. AutoAugment makalesine atıfta bulunun.
    • RandAugment: Tekdüze büyüklüğe sahip rastgele bir dönüşüm seçimi uygular. Bu yaklaşım kapsamlı bir arama aşaması ihtiyacını azaltır, model gürbüzlüğünü artırırken onu hesaplama açısından daha verimli hale getirir. RandAugment makalesine atıfta bulunun.
    • AugMix: AugMix, basit dönüşümlerin rastgele kombinasyonları yoluyla çeşitli görüntü varyasyonları oluşturarak model gürbüzlüğünü artıran bir veri artırma yöntemidir. AugMix makalesine atıfta bulunun.
  • 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 ayrıntılı olarak karşılaştıran bu makaleye göz atabilirsin.

Rastgele Silme / 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 bölümlerini rastgele siler. erasing hiperparametresi dönüştürmeyi uygulama olasılığını tanımlar; erasing=1.0 her görüntüde bir bölgeyi siler ve erasing=0.0 dönüştürmeyi devre dışı bırakır. Örneğin, erasing=0.5 ile her görüntünün bir kısmı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:
    • erasing artırması, mevcut uygulama ile değiştirilemeyen bir scale, ratio ve value hiperparametresiyle gelir. PyTorch belgelerinde belirtildiği gibi, varsayılan değerleri sırasıyla (0.02, 0.33), (0.3, 3.3) ve 0'dir.
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 nesnelerinin bir listesini kabul eder.
  • Amaç: Kapsamlı Albumentations dönüşüm kitaplığından yararlanarak veri artırma stratejileri üzerinde hassas kontrol sağlar. Bu, tıbbi görüntüleme için elastik deformasyonlar ve ızgara bozulmaları, havadan ve uydu perspektifleri için ayarlanmış dönüşümler, düşük ışık koşullarını simüle eden gürültü ve parlaklık kaymaları veya endüstriyel denetim için kusur benzeri doku varyasyonları gibi yerleşik YOLO seçeneklerinin ötesinde özel artırmalara ihtiyacın olduğunda özellikle yararlıdır.
  • Ultralytics uygulaması: Albumentations
  • Not:
    • Dönüşüm nesnelerini oluşturmak Python API'sini gerektirir. Ultralytics, bir kontrol noktasını kaydederken bunları A.to_dict() ile serileştirir; böylece önceden serileştirilmiş bir liste, bir YAML yapılandırma dosyası veya CLI aracılığıyla gidiş-dönüş yapabilir; bu da resume öğesinin bunları geri yüklemesini sağlar.
    • Özel dönüşümler varsayılan Albumentations setini tamamen değiştirir. Bu sayfada başka bir yerde yapılandırılan her artırma (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üşümlerde dikkatli ol. Ultralytics sınırlayıcı kutuları otomatik olarak ayarlar, ancak bazı karmaşık dönüşümler ek yapılandırma gerektirebilir.
    • Albumentations 70'ten fazla dönüşüm sunar; Albumentations belgeleri bunların tümünü listeler. Birçok dönüşüm veya hesaplama açısından pahalı olanlar eklemek eğitimi yavaşlatır, bu yüzden küçük bir setle başla ve epoch süresini izle.
    • detect, segment, semantic, depth, pose ve obb görevleri için geçerlidir. Ayrı bir artırma boru hattı kullandığı için sınıflandırma hariç tutulmuştur.

Aşağıdaki örnekler Albumentations 1.4.22 veya daha yeni bir sürümünü ve dolayısıyla Python 3.9 veya daha yeni bir sürümünü 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 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 hafif varyasyonlar faydalıdır. hsv_h, hsv_s ve hsv_v için varsayılan değerler sağlam bir başlangıç noktasıdır.
    • Kameranın bakış açısı tutarlıysa ve model dağıtıldıktan sonra değişmeyecekse, rotation, translation, scale, shear veya perspective gibi geometrik dönüşümleri büyük olasılıkla atlayabilirsin. Ancak kamera açısı değişebilirse ve modelin daha gürbüz olmasını istiyorsan, bu artırmaları tutmak daha iyidir.
    • mosaic artırmasını yalnızca kısmen örtülmüş nesnelere veya görüntü başına birden fazla nesneye sahip olmak kabul edilebilirsa ve etiket değerini değiştirmiyorsa kullan. Alternatif olarak, mosaic değerini aktif tutabilir ancak eğitim sürecinde daha erken 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.

  • albumentations paketi kuruluysa, Ultralytics otomatik olarak bunu kullanarak bir dizi ekstra görüntü artırması 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 aktif olduğunu unutma. Bunlar, bulanıklık veya gri tonlama efektleri gibi gerçek dünyadaki görsel yapaylıkları taklit etmek amacıyla kasıtlı olarak düşük frekanslarda uygulanır.

    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ın.

  • albumentations paketinin yüklü olup olmadığını kontrol et. 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ğitsici oluşturarak veri artırımlarını özelleştirebilirsin. Örneğin, varsayılan Ultralytics sınıflandırma artırımlarını PyTorch'un torchvision.transforms.Resize veya diğer dönüşümleriyle değiştirebilirsin. Uygulama detayları için sınıflandırma belgesindeki custom training example sayfasına göz at.

Yorumlar