Ultralytics YOLO kullanarak 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 çok önemli bir tekniktir. Ultralytics YOLO gibi derin öğrenme modellerini eğitirken, veri artırma modelin dayanıklılığını artırmaya, aşırı öğrenmeyi (overfitting) azaltmaya ve gerçek dünya senaryolarına karşı genelleme yeteneğini güçlendirmeye 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ü modellerini eğitirken birçok 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ümeni etkili bir şekilde büyütebilirsin.
- 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ığı düşer.
- Artırılmış Performans: Uygun şekilde artırılmış verilerle eğitilen modeller, genellikle doğrulama ve test kümelerinde daha iyi doğruluk değerlerine ulaşır.
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, her bir artırma parametresini ayrıntılı olarak inceleyerek projelerinde bunları ne zaman ve nasıl etkili bir şekilde kullanacağını anlamana yardımcı olacak.
Ö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 bulunmaktadır.
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)
# Training without any augmentations (disabled values omitted for clarity)
model.train(
data="coco.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="coco.yaml", epochs=100, augmentations=custom_transforms)Bir yapılandırma dosyası kullanma
You can define all training parameters, including augmentations, in a YAML configuration file (e.g., train_custom.yaml). The mode parameter is only required when using the CLI. This new YAML file will then override the default one located in the ultralytics package.
# 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 ile 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 miktarını tanımlar; nihai ayar-hsv_hilehsv_harasında rastgele seçilir. Örneğin,hsv_h=0.3ile kaydırma-0.3ile0.3arasında rastgele seçilir.0.5üzerindeki değerler için renk tonu kaydırması renk tekerleği üzerinde döngü oluşturur, bu nedenle0.5ve-0.5arasındaki artırmalar aynı görünür. - Amaç: Özellikle aydınlatma koşullarının nesne görünümünü önemli ölçüde etkileyebileceği dış mekan senaryoları için yararlıdır. Örneğin, bir muz parlak güneş ışığında daha sarı, iç mekanda ise daha yeşilimsi görünebilir.
- Ultralytics'in 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ı tanımlar; nihai ayar-hsv_silehsv_sarasında rastgele seçilir. Örneğin,hsv_s=0.7ile yoğunluk-0.7ile0.7arasında 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 işareti güneşli bir günde çok canlı görünebilir ancak sisli koşullarda donuk ve solgun görünebilir.
- Ultralytics'in 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ı tanımlar; nihai ayar-hsv_vilehsv_varasında rastgele seçilir. Örneğin,hsv_v=0.4ile yoğunluk-0.4ile0.4arasında rastgele seçilir. - Amaç: Farklı aydınlatma koşullarında performans göstermesi 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'in uygulaması: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Geometrik Dönüşümler
Döndürme (degrees)
- Aralık:
0.0ile180 - Varsayılan:
0 - Kullanım: Görüntüleri belirtilen aralıkta rastgele döndürür.
degreeshiperparametresi dönme açısını tanımlar; nihai ayar-degreesiledegreesarasında rastgele seçilir. Örneğin,degrees=10.0ile dönüş-10.0ile10.0arasında rastgele seçilir. - Amaç: Nesnelerin farklı yönlerde görünebildiği uygulamalar için çok önemlidir. Örneğin, hava drone görüntülerinde araçlar herhangi bir yöne yönelmiş olabilir, bu da modellerin döndürme ne olursa olsun nesneleri tanımasını gerektirir.
- Ultralytics'in 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 yatay ve dikey olarak görüntü boyutunun rastgele bir kesri kadar kaydırır.
translatehiperparametresi kaydırma miktarını tanımlar; nihai ayar-translateiletranslatearalığında iki kez (her eksen için bir kez) rastgele seçilir. Örneğin,translate=0.5ile, x ekseninde-0.5ile0.5arasında rastgele bir öteleme seçilir ve y ekseninde aynı aralıkta bağımsız başka bir rastgele değer seçilir. - Amaç: Modellerin kısmen görünen nesneleri tespit etmeyi öğrenmesine yardımcı olur ve nesne konumuna karşı dayanıklılığı artırır. Örneğin, araç hasar değerlendirme uygulamalarında, araba parçaları fotoğrafçının konumuna ve mesafesine bağlı olarak kare içinde 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'in uygulaması: RandomPerspective
- Not: Basitlik açısından, aşağıda uygulanan ötelemeler hem
xhem deyeksenleri için her seferinde aynıdır. Görüntüyü çerçevenin tamamen dışına taşıyacaklarından-1.0ve1.0değerleri gösterilmemiştir.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ölçekleme (scale)
- Aralık:
0.0-1.0 - Varsayılan:
0.5 - Kullanım: Görüntüleri belirtilen aralıkta rastgele bir faktörle yeniden boyutlandırır.
scalehiperparametresi ölçekleme faktörünü tanımlar; nihai ayar1-scaleile1+scalearasında rastgele seçilir. Örneğin,scale=0.5ile, ölçekleme0.5ile1.5arasında rastgele seçilir. - Amaç: Modellerin nesneleri farklı mesafelerde ve boyutlarda işlemesini sağlar. Örneğin, otonom sürüş uygulamalarında araçlar kameradan çeşitli mesafelerde görünebilir, bu da modelin onları boyutlarından bağımsız olarak tanımasını gerektirir.
- Ultralytics'in uygulaması: RandomPerspective
- Not:
- Görüntünün kaybolmasına neden olacağı için
-1.0değeri gösterilmemiştir,1.0değeri ise sadece 2x yakınlaştırma sağlar. - Aşağıdaki tabloda görüntülenen değerler, nihai ölçek faktörü değil,
scalehiperparametresi ile uygulanan değerlerdir. - Eğer
scale1.0değerinden büyükse, ölçekleme faktörü1-scaleile1+scalearasında rastgele seçildiği için görüntü çok küçük olabilir veya ters dönebilir. Örneğin,scale=3.0ile, ölçekleme-2.0ile4.0arasında rastgele seçilir. Negatif bir değer seçilirse görüntü ters çevrilir.
- Görüntünün kaybolmasına neden olacağı için
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Kaydırma (Shear) (shear)
- Aralık:
-180ile+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 parçalarını bir yöne kaydıran geometrik bir dönüşüm sunar.
shearhiperparametresi kaydırma açısını tanımlar; nihai ayar-shearilesheararasında rastgele seçilir. Örneğin,shear=10.0ile, x ekseninde-10ile10arasında rastgele bir kaydırma seçilir ve y ekseninde aynı aralıkta bağımsız başka bir rastgele değer seçilir. - Amaç: Modellerin hafif eğimler veya eğik bakış açılarından kaynaklanan görüş açısı varyasyonlarına genelleme yapmasına yardımcı olur. Örneğin, trafik izlemede, araba ve yol işaretleri gibi nesneler dikey olmayan kamera yerleşimleri nedeniyle eğik görünebilir. Kaydırma (shear) artırması uygulamak, modelin nesneleri bu tür çarpık bozulmalara rağmen tanımayı öğrenmesini sağlar.
- Ultralytics'in 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üşümlerinin aksine, kaydırma (shear) derinlik veya kaçış noktaları eklemez, bunun yerine karşıt kenarları paralel tutarak açılarını değiştirip 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ı derinlik veya açılardan bakıldığında nasıl göründüğünü simüle eder.
perspectivehiperparametresi, perspektif büyüklüğünü tanımlar ve nihai ayar-perspectiveileperspectivearasında rastgele seçilir. Örneğin,perspective=0.001ile, perspektif x-ekseninde rastgele-0.001ile0.001arasında, y-ekseninde ise aynı aralıkta bağımsız bir rastgele değer seçilerek belirlenir. - 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 kritiktir. Örneğin, drone tabanlı nesne algılamada binalar, yollar ve araçlar drone'un eğimine ve yüksekliğine bağlı olarak uzamış 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'in uygulaması: RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Dikey Çevirme (flipud)
- Aralık:
0.0-1.0 - Varsayılan:
0 - Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of
flipud=1.0ensuring that all images are flipped and a value offlipud=0.0disabling the transformation entirely. For example, withflipud=0.5, each image has a 50% chance of being flipped upside-down. - Amaç: Nesnelerin baş aşağı görünebildiği senaryolar için kullanışlıdır. Örneğin, robotik görme sistemlerinde, konveyör bantlarındaki veya robotik kollardaki nesneler çeşitli yönlerde alınıp yerleştirilebilir. Dikey çevirme, modelin nesneleri yukarıdan aşağıya konumlarına bakılmaksızın 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-ekseni boyunca yansıtarak yatay bir çevirme gerçekleştirir. Bu dönüşüm, sol ve sağ tarafları değiştirirken uzamsal tutarlılığı korur, bu da modelin aynalanmış yönlerde görünen nesnelere karşı genelleme yapmasına 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 sağlar vefliplr=0.0değeri dönüşümü tamamen devre dışı bırakır. Örneğin,fliplr=0.5ile her görüntünün soldan sağa çevrilme olasılığı %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ıma süreçlerinde yaygın olarak kullanılır. Örneğin, otonom sürüşte araçlar ve yayalar yolun her iki tarafında da görünebilir ve yatay çevirme, modelin her iki yönde de onları aynı şekilde 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 tabi tutulmasını sağlar vebgr=0.0bunu devre dışı bırakır. Ö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 formatlarının tutarsız bir şekilde kullanılabildiği çeşitli kamera sistemleri ve görüntüleme kütüphaneleri arasında çalışması gereken modelleri eğitirken veya modelleri giriş renk formatının eğitim verilerinden farklı olabileceği ortamlara dağıtırken kullanışlıdır.
- Ultralytics uygulaması: Format
bgr kapalı | bgr açık |
|---|---|
![]() | ![]() |
Mosaic (mosaic)
- Aralık:
0.0-1.0 - Varsayılan:
1 - Kullanım: Dört eğitim görüntüsünü bir araya getirir.
mosaichiperparametresi dönüşümün uygulanma olasılığını tanımlar;mosaic=1.0tüm görüntülerin birleştirilmesini sağlar vemosaic=0.0dönüşümü devre dışı bırakır. Ö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 anlayışını iyileştirmek için oldukça etkilidir. Örneğin, hayvanların çeşitli mesafelerde ve ölçeklerde görünebildiği yaban hayatı koruma projelerinde, mosaic artırma, kısıtlı verilerden ç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:
mosaicartırma modeli daha dayanıklı hale getirse de, eğitim sürecini de zorlaştırabilir.mosaicartırma, eğitimin sonuna doğruclose_mosaicdeğeri, kapatılması gereken epoch sayısına ayarlanarak devre dışı bırakılabilir. Örneğin,epochsdeğeri200veclose_mosaicdeğeri20olarak ayarlanırsa,mosaicartırma180epoch'tan sonra devre dışı bırakılır.close_mosaicdeğeri0olarak ayarlanırsa,mosaicartırma tüm eğitim süreci boyunca etkin kalır.- Oluşturulan mozaik merkezi rastgele değerler kullanılarak belirlenir ve görüntünün içinde veya dışında olabilir.
mosaicartırmanın mevcut uygulaması, veri kümesinden rastgele seçilen 4 görüntüyü birleştirir. Veri kümesi küçükse, aynı görüntü aynı mozaik içinde birden fazla kez kullanılabilir.
mosaic kapalı | mosaic açık |
|---|---|
![]() | ![]() |
Mixup (mixup)
- Aralık:
0.0-1.0 - Varsayılan:
0 - Kullanım: Belirli bir olasılıkla iki görüntüyü ve etiketlerini karıştırır.
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ğlar vemixup=0.0dönüşümü devre dışı bırakır. Ö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ç: Modelin 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 sağlam özellikler öğrenmesine yardımcı olur; bu da öğeleri kısmen göründüklerinde veya kalabalık mağaza raflarında diğer ürünler tarafından gizlendiklerinde bile tanımlamayı öğretir.
- Ultralytics uygulaması: Mixup
- Not:
mixuporanı,np.random.beta(32.0, 32.0)beta dağılımından seçilen rastgele bir değerdir, yani her görüntü yaklaşık %50 katkıda bulunur, küçük varyasyonlar içerir.
İ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: Bir görüntüden dikdörtgen bir bölgeyi keser ve belirli bir 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üşüme tabi tutulmasını sağlar vecutmix=0.0bunu tamamen devre dışı bırakır. Örneğin,cutmix=0.5ile her görüntünün bir bölgesinin başka bir görüntüden alınan bir parça ile değiştirilme olasılığı %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ı diğer nesneler tarafından kısmen engellendiklerinde bile tanımayı öğrenmesine yardımcı olur ve üst üste binen 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 küresel olarak harmanlayan mixup'ın aksine,
cutmixyerel özellikleri koruyarak kesilen bölgeler içindeki orijinal piksel yoğunluklarını muhafaza eder. - Bir bölge, yalnızca mevcut herhangi bir sınırlayıcı kutu (bounding box) ile çakışmadığı takdirde hedef görüntüye yapıştırılır. Ayrıca, yapıştırılan bölge içinde orijinal alanlarının en az
0.1(%10) kısmını koruyan sınırlayıcı kutular korunur. - Bu minimum sınırlayıcı kutu alanı eşiği mevcut uygulamada değiştirilemez ve varsayılan olarak
0.1olarak ayarlanmıştır.
İlk görüntü, cutmix kapalı | İkinci görüntü, cutmix kapalı | cutmix açık |
|---|---|---|
![]() | ![]() | ![]() |
Segmentasyona Özel Artırmalar
Kopyala-Yapıştır (copy_paste)
- Aralık:
0.0-1.0 - Varsayılan:
0 - Kullanım: Yalnızca segmentasyon görevleri için çalışır, bu artırma,
copy_paste_modeile kontrol edilen belirtilen bir olasılığa dayalı olarak nesneleri görüntülerin içinde veya arasında kopyalar.copy_pastehiperparametresi dönüşümün uygulanma olasılığını tanımlar;copy_paste=1.0tüm görüntülerin kopyalanmasını sağlar vecopy_paste=0.0dönüşümü devre dışı bırakır. Örneğin,copy_paste=0.5ile her görüntünün başka bir görüntüden kopyalanan nesnelere sahip olma olasılığı %50'dir. - Amaç: Özellikle örnek segmentasyon görevleri ve nadir nesne sınıfları için yararlıdır. Örneğin, belirli kusur türlerinin seyrek göründüğü endüstriyel kusur tespitinde, kopyala-yapıştır artırma, bu nadir kusurları bir görüntüden diğerine kopyalayarak suni olarak artırabilir, bu da modelin ek kusurlu numunelere ihtiyaç duymadan bu az temsil edilen vakaları daha iyi öğrenmesine yardımcı olur.
- Ultralytics uygulaması: CopyPaste
- Not:
- Aşağıdaki gif'te görüldüğü gibi,
copy_pasteartırma, nesneleri bir görüntüden diğerine kopyalamak için kullanılabilir. - Bir nesne kopyalandıktan sonra,
copy_paste_modene olursa olsun, kaynak görüntünün tüm nesneleri ile Alan Üzerinden Kesişim (IoA) hesaplanır. Tüm IoA'lar0.3(%30)'un altındaysa, nesne hedef görüntüye yapıştırılır. Eğer IoA'lardan sadece biri0.3'ün üzerindeyse, nesne hedef görüntüye yapıştırılmaz. - IoA eşiği mevcut uygulamada değiştirilemez ve varsayılan olarak
0.3olarak ayarlanmıştır.
- Aşağıdaki gif'te görüldüğü gibi,
copy_paste kapalı | copy_paste on with copy_paste_mode=flip | copy_paste sürecini görselleştir |
|---|---|---|
![]() | ![]() | ![]() |
Kopyala-Yapıştır Modu (copy_paste_mode)
- Seçenekler:
'flip','mixup' - Varsayılan:
'flip' - Kullanım: Kopyala-yapıştır artırma için kullanılan yöntemi belirler. Eğer
'flip'olarak ayarlanırsa, nesneler aynı görüntüden gelirken,'mixup'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 prensibi her iki
copy_paste_modeiçin de 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 ek açıklamalarının kalitesine bağlı olarak, kopyalanan nesneler orijinallerine kıyasla hafif şekil varyasyonlarına sahip olabilir.
- IoA prensibi her iki
| Referans görüntü | copy_paste için seçilen görüntü | copy_paste on with copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
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'i,'autoaugment'seçeneği AutoAugment'i ve'augmix'seçeneği AugMix'i kullanır.Noneolarak 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. 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ğitemezler. Belirli veri kümeleri için optimal artırma stratejileri keşfetmek istersen, harici kütüphaneler veya özel uygulamalar gerekebilir. AutoAugment makalesine referans.
- RandAugment: Rastgele seçilen dönüşümleri tekdüze bir büyüklükle uygular. Bu yaklaşım, kapsamlı bir arama aşamasına duyulan ihtiyacı azaltır, modeli daha sağlam hale getirirken hesaplama açısından daha verimli olmasını sağlar. RandAugment makalesine referans.
- AugMix: AugMix, basit dönüşümlerin rastgele kombinasyonlarıyla çeşitli görüntü varyasyonları oluşturarak modelin sağlamlığını artıran bir veri artırma yöntemidir. AugMix makalesine referans.
- Ultralytics uygulaması: classify_augmentations()
- Not:
- Özünde, üç yöntem arasındaki temel fark, artırma politikalarının tanımlanma ve uygulanma biçimidir.
- Bu üç yöntemi ayrıntılı olarak karşılaştıran bu makaleye göz atabilirsin.
Rastgele Silme (erasing)
- Aralık:
0.0-0.9 - 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.
erasinghiperparametresi, dönüşümü uygulama olasılığını tanımlar;erasing=0.9neredeyse tüm görüntülerin silinmesini sağlarkenerasing=0.0dönüşümü devre dışı bırakır. Örneğin,erasing=0.5ile her görüntünün bir bölümünün silinme şansı %50'dir. - Amaç: Modellerin sağlam özellikler öğrenmesine yardımcı olur ve belirli görüntü bölgelerine aşırı güvenilmesini ö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 dayanıklı hale gelmesine yardımcı olur. Bu, modelin yalnızca gizlenmiş olabilecek belirgin özelliklere güvenmek yerine birden fazla yüz özelliğini kullanarak bireyleri tanımlamaya zorlayarak gerçek dünya performansını iyileştirir.
- Ultralytics uygulaması: classify_augmentations()
- Not:
- The
erasingaugmentation comes with ascale,ratio, andvaluehyperparameters that cannot be changed with the current implementation. Their default values are(0.02, 0.33),(0.3, 3.3), and0, respectively, as stated in the PyTorch documentation. erasinghiperparametresinin üst sınırı, dönüşümün tüm görüntülere uygulanmasını önlemek için0.9olarak ayarlanmıştır.
- The
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üşümleri
list'i - 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ç: Albumentations dönüşümlerinden oluşan kapsamlı kütüphaneden yararlanarak veri artırma stratejileri üzerinde ince ayar kontrolü sağlar. Bu, gelişmiş renk ayarlamaları, gürültü ekleme veya alana özgü dönüşümler gibi yerleşik YOLO seçeneklerinin ötesinde özel artırmalara ihtiyaç duyduğunda özellikle yararlıdır.
- Ultralytics uygulaması: Albumentations
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(var_limit=(10.0, 50.0), 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,
)Önemli Noktalar:
- Sadece Python API: Özel Albumentations dönüşümleri şu anda yalnızca Python API aracılığıyla desteklenmektedir. CLI veya YAML yapılandırma dosyaları aracılığıyla belirtilemezler.
- Varsayılan Dönüşümleri Değiştirir:
augmentationsparametresi aracılığıyla özel dönüşümler sağladığında, bunlar varsayılan Albumentations dönüşümlerinin yerini tamamen alır. Varsayılan YOLO artırmaları (mosaic,hsv_h,hsv_s,degreesvb. gibi) aktif kalır ve bağımsız olarak uygulanır. - Sınırlayıcı Kutu Uyumluluğu: Uzamsal dönüşümler (görüntünün geometrisini değiştiren dönüşümler) kullanırken dikkatli ol. Ultralytics, sınırlayıcı kutu ayarlamalarını otomatik olarak işler, ancak bazı karmaşık dönüşümler ek yapılandırma gerektirebilir.
- Kapsamlı Kütüphane: Albumentations 70'ten fazla farklı dönüşüm sunar. Mevcut tüm seçenekleri keşfetmek için Albumentations belgelerine göz at.
- Performans Değerlendirmesi: Çok fazla artırma eklemek veya hesaplama açısından pahalı dönüşümler kullanmak eğitimi yavaşlatabilir. Küçük bir setle başla ve eğitim hızını izle.
Yaygın Kullanım Senaryoları:
- Tıbbi Görüntüleme: Röntgen veya MRI görüntü artırma için elastik deformasyonlar veya ızgara bozulmaları gibi özel dönüşümler uygula
- Hava/Uydu Görüntüleri: Üstten görünümler için optimize edilmiş dönüşümler kullan
- Düşük Işık Koşulları: Zorlu aydınlatmayı simüle etmek için gürültü ve parlaklık ayarlamaları uygula
- Endüstriyel Denetim: Kalite kontrol uygulamaları için kusur benzeri desenler veya doku varyasyonları ekle
Uyumluluk Notları:
- Albumentations sürüm 1.0.3 veya üzerini gerektirir
- Tüm YOLO algılama ve segmentasyon görevleriyle uyumludur
- Sınıflandırma görevleri için geçerli değildir (sınıflandırma farklı bir artırma hattı kullanır)
Albumentations ve mevcut dönüşümler hakkında daha fazla bilgi için resmi Albumentations belgelerini ziyaret et.
SSS
Seçilebilecek çok fazla artırma var. Hangilerini kullanacağımı nasıl bilirim?
Doğru artırmaları seçmek, özel kullanım durumuna 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 küçük varyasyonlar faydalıdır.
hsv_h,hsv_svehsv_viç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,shearveyaperspectivegibi geometrik dönüşümleri atlayabilirsin. Ancak kamera açısı değişebilir ve modelin daha sağlam olmasını istiyorsan, bu artırmaları tutmak daha iyidir. mosaicartırmasını yalnızca kısmen gizlenmiş nesnelere veya görüntü başına birden fazla nesneye sahip olmak kabul edilebilirse ve etiket değerini değiştirmiyorsa kullan. Alternatif olarak,mosaic'i aktif tutabilir ancak eğitim sürecinin başlarında devre dışı bırakmak içinclose_mosaicdeğerini artırabilirsin.
Kısacası: basit tut. Küçük bir artırma setiyle başla ve gerektiğinde kademeli olarak daha fazlasını 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 üretim aşamasında karşılaşacağı veri dağılımıyla aynı olduğundan emin ol.
Eğitime başlarken bir albumentations: Blur[...] referansı görüyorum. Bu, Ultralytics YOLO'nun bulanıklaştırma gibi ek artırmalar çalıştırdığı anlamına mı geliyor?
albumentations paketi yüklüyse, Ultralytics bunu kullanarak otomatik olarak bir dizi ek görüntü artırması uygular. Bu artırmalar dahili olarak yönetilir 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'dan büyük olan artırmaların aktif olduğunu unutma. Bunlar, bulanıklık veya gri tonlama efektleri gibi gerçek dünya görsel kusurlarını taklit etmek için düşük frekanslarda kasıtlı olarak uygulanır.
Ayrıca 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.
Eğitime başlarken albumentations ile ilgili herhangi bir referans görmüyorum. Neden?
albumentations paketinin yüklü olup olmadığını kontrol et. Yüklü değilse, pip install albumentations komutunu çalıştırarak yükleyebilirsin. Yüklendikten sonra paket otomatik olarak algılanmalı ve Ultralytics tarafından kullanılmalıdır.
Artırmalarımı nasıl özelleştirebilirim?
Özel bir veri kümesi sınıfı ve eğitmen 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.
















































