Ultralytics YOLO ile Veri Artırma#
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.
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)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.5Ardından eğitimi Python API'siyle başlat:
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_hhiperparametresi kaydırma büyüklüğünü tanımlar ve son ayar-hsv_hilehsv_harasında rastgele seçilir. Örneğinhsv_h=0.3ile kaydırma,-0.3ile0.3arasında rastgele seçilir.0.5üzerindeki değerlerde ton kaydırması renk çemberinin etrafında döner; bu nedenle artırmalar0.5ile-0.5arası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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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_shiperparametresi kaydırma büyüklüğünü tanımlar ve son ayar-hsv_silehsv_sarasında rastgele seçilir. Örneğinhsv_s=0.7ile yoğunluk,-0.7ile0.7arası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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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_vhiperparametresi kaydırma büyüklüğünü tanımlar ve son ayar-hsv_vilehsv_varasında rastgele seçilir. Örneğinhsv_v=0.4ile yoğunluk,-0.4ile0.4arası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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Geometrik Dönüşümler#
Döndürme (degrees)#
- Aralık:
0.0ile180arası - Varsayılan:
0 - Kullanım: Görüntüleri belirtilen aralıkta rastgele döndürür.
degreeshiperparametresi döndürme açısını tanımlar ve son ayar-degreesiledegreesarasında rastgele seçilir. Örneğindegrees=10.0ile döndürme,-10.0ile10.0arası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 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ö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.
translatehiperparametresi kaydırma büyüklüğünü tanımlar ve son ayar-translateiletranslatearalığında iki kez (her eksen için bir kez) rastgele seçilir. Örneğintranslate=0.5ile x eksenindeki öteleme-0.5ile0.5arası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
xhem deyeksenleri için her seferinde aynıdır.-1.0ve1.0değerleri, görüntüyü tamamen çerçevenin dışına taşıyacakları için gösterilmemiştir.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ölçek (scale)#
- Aralık: Ondalık sayı olarak
0.0-1.0veya 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
scalehiperparametresi ölçekleme kazancını tanımlar ve son katsayı1-scaleile1+scalearasında rastgele seçilir. Örneğinscale=0.5ile ölçekleme0.5ile1.5arasında rastgele seçilir. Tuple biçimindescalebu aralığı doğrudan belirler; böylecescale=(0.5, 2.0), katsayıyı0.5ile2.0arası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.0değeri gösterilmemiştir;1.0ise yalnızca 2x yakınlaştırmayla sonuçlanır. - Aşağıdaki tabloda gösterilen değerler,
scalehiperparametresine aktardığın değerler değil, gerçekleşen ölçek farklarıdır. - Ondalık sayı biçimi
0.0-1.0aralığına göre doğrulanır; bu aralığın dışındaki bir değerValueErrorhatası 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 - scaleile1.0arası) türetir; bu nedenle burada tuple aktarmakTypeErrorhatası oluşturur.
- Görüntüyü yok edeceği için
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Kesme (shear)#
- Aralık:
-180ile+180arası - 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.
shearhiperparametresi kesme açısını tanımlar ve son ayar-shearilesheararasında rastgele seçilir. Örneğinshear=10.0ile x eksenindeki kesme-10ile10arası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:
sheardeğ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 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.
perspectivehiperparametresi perspektif büyüklüğünü tanımlar ve son ayar-perspectiveileperspectivearasında rastgele seçilir. Örneğinperspective=0.001ile x eksenindeki perspektif-0.001ile0.001arası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.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.0değeri tüm görüntülerin çevrilmesini garanti ederkenflipud=0.0değeri dönüşümü tamamen devre dışı bırakır. Örneğinflipud=0.5ile 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 |
|---|---|
![]() | ![]() |
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.
fliplrhiperparametresi dönüşümün uygulanma olasılığını tanımlar;fliplr=1.0değeri tüm görüntülerin çevrilmesini garanti ederkenfliplr=0.0değeri dönüşümü tamamen devre dışı bırakır. Örneğinfliplr=0.5ile 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 |
|---|---|
![]() | ![]() |
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.
bgrhiperparametresi dönüşümün uygulanma olasılığını tanımlar;bgr=1.0tüm görüntülerin kanal değişimine uğramasını sağlarkenbgr=0.0bunu devre dışı bırakır. Örneğinbgr=0.5ile 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 |
|---|---|
![]() | ![]() |
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.
mosaichiperparametresi dönüşümün uygulanma olasılığını tanımlar;mosaic=1.0tüm görüntülerin birleştirilmesini sağlarkenmosaic=0.0dönüşümü devre dışı bırakır. Örneğinmosaic=0.5ile 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:
mosaicartırması modeli daha sağlam hale getirse de eğitim sürecini daha zorlu hale getirebilir.mosaicartırması, kapatılması gereken tamamlanmaya kalan epoch sayısı içinclose_mosaicayarlanarak eğitimin sonlarına doğru devre dışı bırakılabilir. Örneğinepochs,200olarak veclose_mosaic,20olarak ayarlanırsamosaicartırması180epoch sonra devre dışı bırakılır.close_mosaic,0olarak ayarlanırsamosaicartırması tüm eğitim süreci boyunca etkin olur.- Mozaikin kapatılması aynı epoch'ta
copy_paste,mixupvecutmixöğ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ılanflipmodunda 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.
mosaicartırmasının mevcut uygulaması, mevcut görüntüyü yakın zamanda yüklenen görüntülerden oluşan bir arabellekten veyacache='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 |
|---|---|
![]() | ![]() |
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.
mixuphiperparametresi dönüşümün uygulanma olasılığını tanımlar;mixup=1.0tüm görüntülerin karıştırılmasını sağlarkenmixup=0.0dönüşümü devre dışı bırakır. Örneğinmixup=0.5ile 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:
mixuporanı,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 |
|---|---|---|
![]() | ![]() | ![]() |
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.
cutmixhiperparametresi dönüşümün uygulanma olasılığını tanımlar;cutmix=1.0tüm görüntülerin bu dönüşümden geçmesini sağlarkencutmix=0.0dönüşümü tamamen devre dışı bırakır. Örneğincutmix=0.5ile 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 ise0.01(%1) değerindedir.
Birinci görüntü, cutmix kapalı | İkinci görüntü, cutmix kapalı | cutmix açık |
|---|---|---|
![]() | ![]() | ![]() |
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_modetarafından kontrol edilerek görüntüler içindeki veya görüntüler arasındaki nesneleri kopyalar.flipmodundacopy_paste, kopyalanan uygun nesnelerin oranıdır: altı uygun nesne içeren bir görüntü,copy_paste=0.5değerinde üç kopya kazanır.mixupmodunda aynı değer, kopyala-yapıştırın çalıştırılma olasılığını da kontrol eder.copy_paste=0.0dö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_pasteartırması nesneleri bir görüntüden diğerine kopyalamak için kullanılabilir. - Kopyalanmak üzere bir nesne seçildiğinde,
copy_paste_modedeğ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ğerleri0.3(%30) değerinin altındaysa yapıştırılır; herhangi bir IoA değeri0.3veya daha yüksekse yapıştırılmaz. - IoA eşiği mevcut uygulamayla değiştirilemez ve varsayılan olarak
0.3değerine ayarlanmıştır.
- Aşağıdaki videoda gösterildiği gibi,
copy_paste kapalı | copy_paste, copy_paste_mode=flip ile açık | copy_paste sürecini görselleştirme |
|---|---|---|
![]() | ![]() |
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_modeseç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.
- IoA ilkesi her iki
| Referans görüntü | copy_paste için seçilen görüntü | copy_paste, copy_paste_mode=mixup ile açık |
|---|---|---|
![]() | ![]() | ![]() |
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.Noneolarak 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.
erasinghiperparametresi dönüşümün uygulanma olasılığını tanımlar;erasing=1.0her görüntüde bir bölgeyi siler,erasing=0.0ise dönüşümü devre dışı bırakır. Örneğinerasing=0.5ile 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:
erasingartırması, mevcut uygulamayla değiştirilemeyenscale,ratiovevaluehiperparametreleriyle birlikte gelir. PyTorch belgelerinde belirtildiği üzere varsayılan değerleri sırasıyla(0.02, 0.33),(0.3, 3.3)ve0şeklindedir.
erasing kapalı | erasing açık (örnek 1) | erasing açık (örnek 2) | erasing açık (örnek 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Gelişmiş Artırma Özellikleri#
Özel Albumentations Dönüşümleri (augmentations)#
- Tür: Albumentations dönüşümlerinin
listtü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 veresumebu 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,degreesve diğerleri — etkin kalır ve bağımsız olarak uygulanır. A.OneOfveyaA.Composeiç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,poseveobbgörevleri için geçerlidir. Sınıflandırma ayrı bir artırma işlem hattı kullandığından kapsam dışıdır.
- Dönüşüm nesnelerini oluşturmak için Python API gerekir. Ultralytics, bir checkpoint kaydederken bunları
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.
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_svehsv_viç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,shearveyaperspectivegibi 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
mosaicartırmasını kullan. Alternatif olarakmosaicdeğerini etkin tutabilir, ancak eğitim sürecinin daha erken bir aşamasında devre dışı bırakmak içinclose_mosaicdeğ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.
- Çoğu durumda renk ve parlaklıktaki küçük değişiklikler faydalıdır.
albumentationspaketi 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
polasılığı0değ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.
albumentationspaketinin yüklü olup olmadığını kontrol et. Yüklü değilse yükle:pip install albumentationsYü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.













































