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ü 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.
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)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.5Ardından eğitimi Python API'siyle başlat:
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_hhiperparametresi kaydırma miktarını belirler; son ayar-hsv_hilehsv_harasından rastgele seçilir. Örneğin,hsv_h=0.3ile kaydırma,-0.3ile0.3arasından rastgele seçilir.0.5üzerindeki değerlerde ton kaydırması renk çemberinde başa 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ı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.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 miktarını belirler; son ayar-hsv_silehsv_sarasından rastgele seçilir. Örneğin,hsv_s=0.7ile yoğunluk-0.7ile0.7arası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.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 miktarını belirler; son ayar-hsv_vilehsv_varasından rastgele seçilir. Örneğin,hsv_v=0.4ile yoğunluk-0.4ile0.4arası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.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ı belirler; son ayar-degreesiledegreesarasından rastgele seçilir. Örneğin,degrees=10.0ile döndürme-10.0ile10.0arası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 | -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 oranı kadar yatay ve dikey kaydırır.
translatehiperparametresi kaydırma miktarını belirler; son ayar her eksen için bir kez olmak üzere-translateiletranslatearalığında rastgele seçilir. Örneğin,translate=0.5ile x eksenindeki öteleme-0.5ile0.5arası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
xhem deyeksenlerinde her seferinde aynıdır. Görüntüyü tamamen karenin dışına taşıyacakları için-1.0ve1.0değerleri gösterilmemiştir.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ölçek (scale)#
- Aralık: Kayan noktalı sayı olarak
0.0-1.0ya 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
scalehiperparametresi ölçekleme çarpanını belirler; son katsayı1-scaleile1+scalearasından rastgele seçilir. Örneğin,scale=0.5ile ölçekleme0.5ile1.5arasından rastgele seçilir. Demet biçimindescalebu aralığı doğrudan belirler; dolayısıylascale=(0.5, 2.0), katsayıyı0.5ile2.0arası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.0değeri gösterilmemiştir;1.0ise yalnızca 2x yakınlaştırma yapar. - Aşağıdaki tabloda gösterilen değerler,
scalehiperparametresine verdiğin değerler değil, gerçekleşen ölçek farklarıdır. - Kayan noktalı sayı biçimi
0.0-1.0aralığıyla doğrulanır; bu aralığın dışındaki bir değerValueErrorhatası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 - scaleile1.0arası) türetir; bu nedenle burada demet geçirmekTypeErrorhatasına yol açar.
- Görüntüyü yok edeceği için
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Kayma (shear)#
- Aralık:
-180ile+180arası - 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.
shearhiperparametresi kayma açısını belirler; son ayar-shearilesheararasından rastgele seçilir. Örneğin,shear=10.0ile x eksenindeki kayma-10ile10arası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:
sheardeğ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 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.
perspectivehiperparametresi perspektif miktarını belirler; son ayar-perspectiveileperspectivearasından rastgele seçilir. Örneğin,perspective=0.001ile x eksenindeki perspektif-0.001ile0.001arası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.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.0değeri tüm görüntülerin çevrilmesini,flipud=0.0değeri ise dönüşümün tamamen devre dışı bırakılmasını sağlar. Örneğin,flipud=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 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 |
|---|---|
![]() | ![]() |
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.
fliplrhiperparametresi dönüşümün uygulanma olasılığını belirler;fliplr=1.0değeri tüm görüntülerin çevrilmesini,fliplr=0.0değeri ise dönüşümün tamamen devre dışı bırakılmasını sağlar. Örneğin,fliplr=0.5ile 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 |
|---|---|
![]() | ![]() |
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.
bgrhiperparametresi dönüşümün uygulanma olasılığını belirler;bgr=1.0tüm görüntülerin kanal değişimine uğramasını,bgr=0.0ise dönüşümün devre dışı bırakılmasını sağlar. Örneğin,bgr=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şı 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 |
|---|---|
![]() | ![]() |
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ı belirler;mosaic=1.0tüm görüntülerin birleştirilmesini,mosaic=0.0ise dönüşümün devre dışı bırakılmasını sağlar. Örneğin,mosaic=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ı 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:
mosaicartırması modeli daha dayanıklı hâle getirse de eğitim sürecini zorlaştırabilir.mosaicartırması, eğitim sona ermeden önce kapatılacağı epoch sayısıclose_mosaicolarak ayarlanarak eğitimin sonuna doğru devre dışı bırakılabilir. Örneğin,epochsdeğeri200veclose_mosaicdeğeri20olarak ayarlanırsamosaicartırması180epoch sonrasında devre dışı kalır.close_mosaicdeğeri0olarak ayarlanırsamosaicartırması tüm eğitim süreci boyunca etkin olur.- Mozaik kapatıldığında aynı epoch'ta
copy_paste,mixupvecutmixde 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ılanflipmodundakicopy_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.
mosaicartırmasının mevcut uygulaması, mevcut görüntüyü yakın zamanda yüklenmiş görüntülerden oluşan bir arabellekten veyacache='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 |
|---|---|
![]() | ![]() |
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.
mixuphiperparametresi dönüşümün uygulanma olasılığını belirler;mixup=1.0tüm görüntülerin karıştırılmasını,mixup=0.0ise dönüşümün devre dışı bırakılmasını sağlar. Örneğin,mixup=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 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:
mixuporanı,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 |
|---|---|---|
![]() | ![]() | ![]() |
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.
cutmixhiperparametresi dönüşümün uygulanma olasılığını belirler;cutmix=1.0tüm görüntülerin bu dönüşümden geçmesini,cutmix=0.0ise dönüşümün tamamen devre dışı bırakılmasını sağlar. Örneğincutmix=0.5değ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,
cutmixkesilen 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 ise0.01(%1) değerindedir.
İlk görüntü, cutmix kapalı | İkinci görüntü, cutmix kapalı | cutmix açık |
|---|---|---|
![]() | ![]() | ![]() |
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_modetarafından kontrol edilir.flipmodundacopy_paste, kopyalanmaya uygun nesnelerin kopyalanan oranıdır: kopyalanmaya uygun altı nesnesi olan bir görüntüyecopy_paste=0.5değerinde üç kopya eklenir.mixupmodunda aynı değer, copy-paste işleminin ç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 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_pasteartırması nesneleri bir görüntüden diğerine kopyalamak için kullanılabilir. - Bir nesne kopyalanmak üzere seçildiğinde,
copy_paste_modedeğ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ğerleri0.3(%30) değerinin altındaysa yapıştırılır; herhangi bir IoA değeri0.3değ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.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ştir |
|---|---|---|
![]() | ![]() |
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_modeseç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.
- 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 Ö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.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. 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.
erasinghiperparametresi dönüşümün uygulanma olasılığını belirler;erasing=1.0her görüntüde bir bölgeyi silerkenerasing=0.0dönüşümü devre dışı bırakır. Örneğinerasing=0.5değ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:
erasingartırması, mevcut uygulamayla değiştirilemeyenscale,ratiovevaluehiperparametrelerini içerir. 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
listdeğ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 veresumebu 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,degreesve diğerleri — etkin kalır ve bağımsız olarak uygulanır. - Görüntü geometrisini değiştiren uzamsal dönüşümler (
A.OneOfveyaA.Composeiç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,poseveobbgörevleri için geçerlidir. Sınıflandırma, ayrı bir artırma işlem hattı kullandığı için kapsam dışıdır.
- Dönüşüm nesnelerini oluşturmak için Python API'si gerekir. Ultralytics, kontrol noktası kaydederken bu nesneleri
Aşağıdaki örnekler Albumentations 1.4.22 veya üzerini, dolayısıyla Python 3.9 veya üzerini gerektirir.
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_svehsv_viç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,shearveyaperspectivegibi 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. mosaicartı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 olarakmosaicseçeneğini etkin bırakıp eğitim sürecinde daha erken devre dışı bırakmak içinclose_mosaicdeğ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.
- Çoğu durumda renk ve parlaklıktaki küçük değişiklikler yararlı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 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,0değ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.
albumentationspaketinin yüklü olup olmadığını kontrol et. Yüklü değilse paketi yükle:pip install albumentationsPaket 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.













































