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ümenizi yapay olarak genişleten, bilgisayarlı görüde çok önemli bir tekniktir. Ultralytics YOLO gibi derin öğrenme modellerini eğitirken, veri artırma modelin sağlamlığını artırmaya, aşırı öğrenmeyi azaltmaya ve gerçek dünya senaryolarına genellemesini geliştirmeye yardımcı olur.
İzle: Ultralytics YOLO Modellerinin daha iyi genelleştirilmesine yardımcı olmak için Mozaik, MixUp ve daha fazla Veri Artırması nasıl kullanılır 🚀
Veri Artırma Neden Önemlidir?
Veri artırma, bilgisayar 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ümesi boyutunuzu etkili bir şekilde artırabilirsiniz.
- Gelişmiş Genelleme: Modeller, çeşitli koşullar altında nesneleri tanımayı öğrenir ve bu da onları gerçek dünya uygulamalarında daha sağlam hale getirir.
- Azaltılmış Aşırı Uyum (Overfitting): Eğitim verilerindeki değişkenliği artırarak, modellerin belirli görüntü özelliklerini ezberleme olasılığı azalır.
- Gelişmiş Performans: Uygun artırma ile eğitilmiş modeller genellikle doğrulama ve test kümelerinde daha iyi doğruluk elde eder.
Ultralytics YOLO'nun uygulaması, her biri belirli amaçlara hizmet eden ve modelin 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, projelerinizde bunları ne zaman ve nasıl etkili bir şekilde kullanacağınızı anlamanıza yardımcı olacaktır.
Örnek Yapılandırmalar
Python API'sini, komut satırı arayüzünü (CLI) veya bir yapılandırma dosyasını kullanarak her parametreyi özelleştirebilirsiniz. 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("yolo11n.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)
# Training with custom augmentation parameters
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 hsv_h=0.03 hsv_s=0.6 hsv_v=0.5
Bir yapılandırma dosyası kullanılıyor
Artırmalar dahil tüm eğitim parametrelerini bir YAML yapılandırma dosyasında tanımlayabilirsiniz (örneğin, train_custom.yaml). Şunu mode parametresi yalnızca CLI kullanılırken gereklidir. Bu yeni YAML dosyası daha sonra geçersiz kılacaktır varsayılan olanı içinde bulunur ultralytics paketi.
# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo11n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5
Ardından, Python API'si ile eğitime başlayın:
Eğitim Örneği
from ultralytics import YOLO
# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Train the model with custom configuration
model.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolo detect train model="yolo11n.pt" 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 ilişkilerini koruyarak kaydırır.
hsv_hhiperparametresi, kaydırma büyüklüğünü tanımlar ve nihai ayarlama rastgele olarak arasında seçilir-hsv_hvehsv_h. Örneğin,hsv_h=0.3, kaydırma rastgele olarak içinde seçilir-0.3için0.3. Üzerindeki değerler için0.5, renk tonu kayması renk çemberi etrafında döner, bu nedenle artırmalar arasında aynı görünür0.5ve-0.5. - Amaç: Özellikle aydınlatma koşullarının nesne görünümünü önemli ölçüde etkileyebileceği dış mekan senaryoları için kullanışlıdır. Örneğin, bir muz parlak güneş ışığında daha sarı görünebilir, ancak iç mekanlarda 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 büyüklüğünü tanımlar ve nihai ayarlama rastgele olarak arasında seçilir-hsv_svehsv_s. Örneğin,hsv_s=0.7, yoğunluk rastgele olarak içinde seçilir-0.7için0.7. - Amaç: Modellerin değişen hava koşullarını ve kamera ayarlarını işlemesine 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 soluk 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 büyüklüğünü tanımlar ve nihai ayarlama rastgele olarak arasında seçilir-hsv_vvehsv_v. Örneğin,hsv_v=0.4, yoğunluk rastgele olarak içinde seçilir-0.4için0.4. - 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örünebilir, ancak gölgede çok daha koyu 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.0için180 - Varsayılan:
0.0 - Kullanım: Görüntüleri belirtilen aralıkta rastgele döndürür.
degreeshiperparametresi, dönüş açısını tanımlar ve son ayarlama rastgele olarak şu aralıktan seçilir:-degreesvedegrees. Örneğin,degrees=10.0, döndürme rastgele olarak içinde seçilir-10.0için10.0. - Amaç: Nesnelerin farklı yönlerde görünebileceği uygulamalar için çok önemlidir. Örneğin, havadan çekilen drone görüntülerinde, araçlar herhangi bir yönde yönlendirilebilir ve modellerin nesneleri dönüşlerinden bağımsız olarak tanıması gerekir.
- 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 büyüklüğünü tanımlar ve nihai ayarlama, aralık içinde iki kez (her eksen için bir kez) rastgele seçilir-translatevetranslate. Örneğin,translate=0.5, öteleme rastgele olarak içinde seçilir-0.5için0.5ve 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 algılamayı öğrenmesine yardımcı olur ve nesne konumuna karşı sağlamlığı artırır. Örneğin, araç hasar tespiti uygulamalarında, araba parçaları fotoğrafçının konumuna ve mesafesine bağlı olarak tamamen veya kısmen çerçevede görünebilir, öteleme artırması modele bu özellikleri eksiksizliğinden veya konumundan bağımsız olarak tanımayı öğretir.
- Ultralytics'in uygulaması: RandomPerspective
- Not: Basitlik için, aşağıda uygulanan çeviriler her ikisi için de aynıdır
xveyeksenler. Değerler-1.0ve1.0görüntüyü tamamen çerçevenin dışına taşıyacakları için gösterilmez.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Ölçek (scale)
- Aralık: ≥
0.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 ve son ayarlama rastgele olarak şu aralıktan seçilir:1-scaleve1+scale. Örneğin,scale=0.5, ölçekleme rastgele olarak içinde seçilir0.5için1.5. - Amaç: Modellerin farklı mesafelerdeki ve boyutlardaki nesneleri işlemesini sağlar. Örneğin, otonom sürüş uygulamalarında, araçlar kameradan çeşitli mesafelerde görünebilir ve modelin bunları boyutlarından bağımsız olarak tanıması gerekir.
- Ultralytics'in uygulaması: RandomPerspective
- Not:
- Değer
-1.0görüntünün kaybolmasına neden olacağından gösterilmezken,1.0sadece 2 kat yakınlaştırmaya neden olur. - Aşağıdaki tabloda görüntülenen değerler, hiperparametre aracılığıyla uygulananlardır.
scale, nihai ölçek faktörü değil. - Eğer
scalebüyüktür1.0, ölçekleme faktörü rastgele seçildiğinden görüntü çok küçük veya ters çevrilmiş olabilir1-scaleve1+scale. Örneğin,scale=3.0, ölçekleme rastgele olarak içinde seçilir-2.0için4.0. Negatif bir değer seçilirse, görüntü ters çevrilir.
- Değer
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Kırma (shear)
- Aralık:
-180için+180 - Varsayılan:
0.0 - Kullanım: Görüntüyü hem x ekseni hem de y ekseni boyunca eğen, görüntünün bölümlerini bir yönde kaydırırken paralel çizgileri koruyan geometrik bir dönüşüm uygular.
shearhiperparametresi, kayma açısını tanımlar ve son ayarlama rastgele olarak şu aralıktan seçilir:-shearveshear. Örneğin,shear=10.0, kayma rastgele olarak içinde seçilir-10için10ve y ekseninde aynı aralıkta başka bir bağımsız rastgele değer seçilir. - Amaç: Modellerin hafif eğimlerden veya eğik bakış açılarından kaynaklanan görüş açılarındaki değişikliklere genelleme yapmasına yardımcı olur. Örneğin, trafik izlemede, arabalar ve yol işaretleri gibi nesneler, dik olmayan kamera yerleşimleri nedeniyle eğimli görünebilir. Kayma artırması uygulamak, modelin bu tür çarpık bozulmalara rağmen nesneleri tanımasını sağlar.
- Ultralytics'in uygulaması: RandomPerspective
- Not:
sheardeğerleri görüntüyü hızla bozabilir, bu nedenle küçük değerlerle başlamak ve kademeli olarak artırmak önerilir.- Perspektif dönüşümlerinden farklı olarak, eğme derinlik veya kaybolma noktaları oluşturmaz, bunun yerine karşı tarafları 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.0 - Kullanım: Nesnelerin farklı derinliklerden veya açılardan görüntülendiğinde nasıl göründüğünü simüle ederek hem x ekseni hem de y ekseni boyunca tam bir perspektif dönüşümü uygular.
perspectivehiperparametresi, perspektif büyüklüğünü tanımlar ve son ayarlama rastgele olarak şu aralıktan seçilir:-perspectiveveperspective. Örneğin,perspective=0.001, perspektif rastgele olarak içinde seçilir-0.001için0.001ve 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ısaltılmış veya bozulmuş göründüğü senaryolarda, aşırı görüş açısı değişikliklerini ele almak için çok önemlidir. Örneğin, drone tabanlı nesne algılamada, binalar, yollar ve araçlar drone'un eğimine ve yüksekliğine bağlı olarak gerilmiş veya sıkıştırılmış görünebilir. Perspektif dönüşümleri uygulayarak, modeller bu perspektif kaynaklı bozulmalara rağmen nesneleri tanımayı öğrenir ve gerçek dünya uygulamalarındaki sağlamlıklarını artırır.
- Ultralytics'in 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.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 ve değeri
flipud=1.0tüm görüntülerin çevrilmesini sağlayarak ve bir değerinflipud=0.0dönüşümü tamamen devre dışı bırakarak. Örneğin,flipud=0.5, her görüntünün baş aşağı çevrilme olasılığı %50'dir. - Amaç: Nesnelerin baş aşağı görünebileceği senaryolar için kullanışlıdır. Örneğin, robotik görme sistemlerinde, taşıyıcı bantlar veya robot kolları üzerindeki nesneler çeşitli yönlerde alınabilir ve yerleştirilebilir. Dikey çevirme, modelin nesneleri yukarıdan aşağıya konumlarından bağımsız olarak tanımasına yardımcı olur.
- Ultralytics'in uygulaması: RandomFlip
flipud kapalı | flipud açık |
|---|---|
![]() | ![]() |
Sola-Sağa Ç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 genellemesine yardımcı olur.
fliplrhiperparametresi, dönüşümün uygulanma olasılığını tanımlar ve değeri şudur:fliplr=1.0tüm görüntülerin çevrilmesini sağlayarak ve bir değerinfliplr=0.0dönüşümü tamamen devre dışı bırakarak. Örneğin,fliplr=0.5, her görüntünün soldan sağa çevrilme olasılığı %50'dir. - Amaç: Yatay çevirme, sol-sağ varyasyonları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 da görünebilir ve yatay çevirme, modelin bunları her iki yönde de eşit derecede iyi tanımasına yardımcı olur.
- Ultralytics'in uygulaması: RandomFlip
fliplr kapalı | fliplr açık |
|---|---|
![]() | ![]() |
BGR Kanal Değişimi (bgr)
- Aralık:
0.0-1.0 - Varsayılan:
0.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ü uygulama olasılığını tanımlar vebgr=1.0tüm görüntülerin kanal değişimine uğramasını sağlayarak vebgr=0.0devre dışı bırakarak. Örneğin,bgr=0.5, 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 formatlarının tutarsız bir şekilde kullanılabileceği çeşitli kamera sistemlerinde ve görüntüleme kitaplıklarında çalışması gereken modelleri eğitirken veya giriş renk formatının eğitim verilerinden farklı olabileceği ortamlara modelleri dağıtırken.
- Ultralytics'in uygulaması: Format
bgr kapalı | bgr açık |
|---|---|
![]() | ![]() |
Mozaik (mosaic)
- Aralık:
0.0-1.0 - Varsayılan:
1.0 - Kullanım: Dört eğitim görüntüsünü bir araya getirir.
mosaichiperparametresi, dönüşümü uygulama olasılığını tanımlar vemosaic=1.0tüm görüntülerin birleştirilmesini sağlayarak vemosaic=0.0dönüşümü devre dışı bırakarak. Örneğin,mosaic=0.5, her görüntünün diğer üç görüntüyle birleştirilme olasılığı %50'dir. - Amaç: Küçük nesne algılama ve bağlam anlayışını geliştirmek için oldukça etkilidir. Örneğin, hayvanların çeşitli mesafelerde ve ölçeklerde görünebileceği yaban hayatı koruma projelerinde, mozaik artırma, modelin sınırlı veriden çeşitli eğitim örnekleri oluşturarak aynı türü farklı boyutlarda, kısmi tıkanıklıklarda ve çevresel bağlamlarda tanımasını öğrenmesine yardımcı olur.
- Ultralytics'in uygulaması: Mosaic
- Not:
- Hatta eğer
mosaicartırma modeli daha sağlam hale getirirken, eğitim sürecini de daha zorlu hale getirebilir. -
mosaicartırma, ayarlanarak eğitimin sonuna doğru devre dışı bırakılabilirclose_mosaickapanması gerektiğinde tamamlanmadan önceki epoch sayısına. Örneğin, eğerepochsolarak ayarlanmıştır200veclose_mosaicolarak ayarlanmıştır20, 'inmosaicartırma işleminden sonra devre dışı bırakılacaktır180epoklar. Eğerclose_mosaicolarak ayarlanmıştır0, 'inmosaicartırma tüm eğitim süreci boyunca etkinleştirilecektir. - Oluşturulan mozaiğin merkezi rastgele değerler kullanılarak belirlenir ve görüntünün içinde veya dışında olabilir.
- 'nin mevcut uygulaması
mosaicartırma, veri kümesinden rastgele seçilen 4 görüntüyü birleştirir. Veri kümesi küçükse, aynı görüntü aynı mozaikte birden çok kez kullanılabilir.
- Hatta eğer
mosaic kapalı | mosaic açık |
|---|---|
![]() | ![]() |
Mixup (mixup)
- Aralık:
0.0-1.0 - Varsayılan:
0.0 - Kullanım: Belirli bir olasılıkla iki görüntüyü ve etiketlerini karıştırır.
mixuphiperparametresi, dönüşümü uygulama olasılığını tanımlar vemixup=1.0tüm görüntülerin karıştırılmasını sağlayarak vemixup=0.0dönüşümü devre dışı bırakarak. Örneğin,mixup=0.5, her görüntünün başka bir görüntüyle karıştırılma olasılığı %50'dir. - Amaç: Modelin sağlamlığını artırır ve aşırı öğrenmeyi azaltır. Örneğin, perakende ürün tanıma sistemlerinde, mixup, modelin farklı ürünlerin görüntülerini karıştırarak daha sağlam özellikler öğrenmesine yardımcı olarak, kalabalık mağaza raflarında kısmen görünür veya diğer ürünler tarafından gizlenmiş olsa bile öğeleri tanımlamayı öğretir.
- Ultralytics'in uygulaması: Mixup
- Not:
-
mixuporanı, içinden seçilen rastgele bir değerdirnp.random.beta(32.0, 32.0)beta dağılımı, yani her görüntü yaklaşık %50 katkıda bulunur ve küçük farklılıklar gösterir.
-
İlk resim, mixup kapalı | İkinci resim, mixup kapalı | mixup açık |
|---|---|---|
![]() | ![]() | ![]() |
CutMix (cutmix)
- Aralık:
0.0-1.0 - Varsayılan:
0.0 - Kullanım: Bir görüntüden dikdörtgen bir bölge keser ve belirli bir olasılıkla başka bir görüntüye yapıştırır.
cutmixhiperparametresi, dönüşümü uygulama olasılığını tanımlar vecutmix=1.0tüm görüntülerin bu dönüşüme uğramasını sağlayarak vecutmix=0.0tamamen devre dışı bırakarak. Örneğin,cutmix=0.5, her görüntünün bir bölgesinin başka bir görüntüden bir yama 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 kapatıldıklarında bile tanımasına yardımcı olarak, karmaşık gerçek dünya ortamlarında örtüşen nesnelerle algılama doğruluğunu artırır.
- Ultralytics'in uygulaması: CutMix
- Not:
- Kesilen bölgenin boyutu ve konumu her uygulama için rastgele belirlenir.
- Piksel değerlerini global olarak karıştıran mixup'tan farklı olarak,
cutmixkesilmiş bölgelerdeki orijinal piksel yoğunluklarını korur, 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, yalnızca en az koruyan sınırlayıcı kutular
0.1Yapıştırılan bölge içindeki orijinal alanlarının (%10)'u korunur. - Bu minimum sınırlayıcı kutu alanı eşiği, mevcut uygulamayla değiştirilemez ve şu değere ayarlanmıştır:
0.1varsayılan olarak.
İlk resim, cutmix kapalı | İkinci resim, cutmix kapalı | cutmix açık |
|---|---|---|
![]() | ![]() | ![]() |
Segmentasyona Özgü Artırmalar
Kopyala-Yapıştır (copy_paste)
- Aralık:
0.0-1.0 - Varsayılan:
0.0 - Kullanım: Yalnızca segmentasyon görevleri için çalışır, bu artırma, belirtilen bir olasılığa göre ( tarafından kontrol edilir) görüntüler içindeki veya arasındaki nesneleri kopyalar.
copy_paste_mode. Şunucopy_pastehiperparametresi, dönüşümü uygulama olasılığını tanımlar vecopy_paste=1.0tüm görüntülerin kopyalanmasını sağlayarak vecopy_paste=0.0dönüşümü devre dışı bırakarak. Örneğin,copy_paste=0.5, her görüntünün başka bir görüntüden nesnelerin kopyalanma olasılığı %50'dir. - Amaç: Özellikle örnek segmentasyonu görevleri ve nadir nesne sınıfları için kullanışlıdır. Örneğin, belirli kusur türlerinin nadiren göründüğü endüstriyel kusur tespitinde, kopyala-yapıştır artırması, bu nadir kusurların bir görüntüden diğerine kopyalanarak oluşumunu yapay olarak artırabilir ve modelin ek kusurlu örneklere ihtiyaç duymadan bu az temsil edilen durumları daha iyi öğrenmesine yardımcı olur.
- Ultralytics'in uygulaması: CopyPaste
- Not:
- Aşağıdaki gifte resmedildiği gibi,
copy_pasteartırma, nesneleri bir görüntüden diğerine kopyalamak için kullanılabilir. - Bir nesne kopyalandıktan sonra,
copy_paste_mode, Alan Üzerindeki Kesişimi (IoA), kaynak görüntünün tüm nesneleriyle hesaplanır. Tüm IoA değerleri aşağıda ise0.3(%30) ise, nesne hedef görüntüye yapıştırılır. Yalnızca bir IoA değeri yukarıdaysa0.3, nesne hedef görüntüye yapıştırılmaz. - IoA eşiği mevcut uygulamayla değiştirilemez ve şu değere ayarlanmıştır:
0.3varsayılan olarak.
- Aşağıdaki gifte resmedildiği gibi,
copy_paste kapalı | copy_paste ile devam copy_paste_mode=flip | Şunu görselleştir: copy_paste işlem |
|---|---|---|
![]() | ![]() | ![]() |
Kopyala-Yapıştır Modu (copy_paste_mode)
- Seçenekler:
'flip','mixup' - Varsayılan:
'flip' - Kullanım: için kullanılan yöntemi belirler. kopyala-yapıştır artırma. Eğer ayarlanırsa
'flip', 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'in uygulaması: CopyPaste
- Not:
- IoA prensibi her ikisi için de aynıdır
copy_paste_mode, 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 nesneler orijinallere kıyasla hafif şekil farklılıklarına sahip olabilir.
- IoA prensibi her ikisi için de aynıdır
| Referans görsel | Seçilen resim: copy_paste | copy_paste ile devam copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Sınıflandırmaya Özgü 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 ilkeleri uygular.
'randaugment'seçeneği RandAugment'i kullanır,'autoaugment'AutoAugment kullanır ve'augmix'AugMix kullanır. Şuna ayarlanıyor:Noneotomatik 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 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 gerekli olacaktır. AutoAugment makalesine bakın.
- RandAugment: Düzgün büyüklükte rastgele bir dönüşüm seçimi uygular. Bu yaklaşım, kapsamlı bir arama aşamasına olan ihtiyacı azaltır ve modelin sağlamlığını artırırken hesaplama açısından daha verimli olmasını sağlar. RandAugment makalesine bakın.
- AugMix: AugMix, basit dönüşümlerin rastgele kombinasyonları yoluyla çeşitli görüntü varyasyonları oluşturarak modelin sağlamlığını artıran bir veri artırma yöntemidir. AugMix makalesine bakın.
- Ultralytics'in uygulaması: classify_augmentations()
- Not:
- Esasen, üç yöntem arasındaki temel fark, artırma politikalarının tanımlanma ve uygulanma şeklidir.
- Üç yöntemi ayrıntılı olarak karşılaştıran bu makaleye başvurabilirsiniz.
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 veerasing=0.9neredeyse tüm görüntülerin silinmesini sağlayarak veerasing=0.0dönüşümü devre dışı bırakarak. Örneğin,erasing=0.5, her görüntünün bir kısmı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 tıkanıklıklara karşı daha sağlam hale gelmesine yardımcı olur. Bu, modelin bireyleri yalnızca belirgin özelliklere bağlı kalmak yerine birden fazla yüz özelliğini kullanarak tanımlamasını sağlayarak gerçek dünya performansını artırır.
- Ultralytics'in uygulaması: classify_augmentations()
- Not:
-
erasingartırma ile birlikte gelirscale,ratiovevalueile değiştirilemeyen hiperparametreler mevcut uygulama. Varsayılan değerleri şunlardır:(0.02, 0.33),(0.3, 3.3)ve0, sırasıyla, PyTorch'de belirtildiği gibi belgeleme. - Üst sınır
erasinghiperparametresi şu değere ayarlanır:0.9dönüşümün tüm görüntülere uygulanmasını önlemek için.
-
erasing kapalı | erasing (örnek 1) | erasing (örnek 2) | erasing (örnek 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Gelişmiş Büyütme Özellikleri
Özel Albümantasyon Dönüşümleri (augmentations)
- Tür:
listAlbümantasyon dönüşümlerinin - Varsayılan:
None - Kullanım şekli: Python API'sini kullanarak veri artırımı için özel Albumentations dönüşümleri sağlamanıza 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üşümlerinin kapsamlı kütüphanesinden yararlanarak veri artırma stratejileri üzerinde ince taneli kontrol sağlar. Bu, özellikle gelişmiş renk ayarlamaları, gürültü enjeksiyonu veya alana özgü dönüşümler gibi yerleşik YOLO seçeneklerinin ötesinde özel artırmalara ihtiyaç duyduğunuzda kullanışlıdır.
- Ultralytics'in uygulaması: Albumentations
Özel Albümantasyon Örneği
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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,
)
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Define advanced custom Albumentations transforms with specific parameters
advanced_transforms = [
A.OneOf(
[
A.MotionBlur(blur_limit=7, p=1.0),
A.MedianBlur(blur_limit=7, p=1.0),
A.GaussianBlur(blur_limit=7, p=1.0),
],
p=0.3,
),
A.OneOf(
[
A.GaussNoise(var_limit=(10.0, 50.0), p=1.0),
A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
],
p=0.2,
),
A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, brightness_by_max=True, p=0.5),
A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
A.CoarseDropout(
max_holes=8, max_height=32, max_width=32, min_holes=1, min_height=8, min_width=8, fill_value=0, p=0.2
),
]
# Train with advanced custom transforms
model.train(
data="coco8.yaml",
epochs=100,
augmentations=advanced_transforms,
imgsz=640,
)
Önemli Noktalar:
- Yalnızca 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: aracılığıyla özel dönüşümler sağladığınızda
augmentationsparametresi ile değiştirildiğinde, varsayılan Albumentations dönüşümlerinin yerini tamamen alırlar. Varsayılan YOLO güçlendirmeleri (örneğinmosaic,hsv_h,hsv_s,degreesvb.) aktif kalır ve bağımsız olarak uygulanır. - Sınırlayıcı Kutu Uyumluluğu: Uzamsal dönüşümleri (görüntünün geometrisini değiştiren dönüşümler) kullanırken dikkatli olun. 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 belgelerini keşfedin.
- Performans Değerlendirmesi: Çok fazla büyütme eklemek veya hesaplama açısından pahalı dönüşümler kullanmak eğitimi yavaşlatabilir. Küçük bir setle başlayın ve eğitim hızını izleyin.
Yaygın Kullanım Durumları:
- Tıbbi Görüntüleme: X-ray veya MRI görüntü büyütme için elastik deformasyonlar veya ızgara bozulmaları gibi özel dönüşümler uygulayın
- Hava/Uydu Görüntüleri: Baş üstü perspektifler için optimize edilmiş dönüşümleri kullanın
- Düşük Işık Koşulları: Zorlu aydınlatmayı simüle etmek için gürültü ve parlaklık ayarlamaları uygulayın
- Endüstriyel Denetim: Kalite kontrol uygulamaları için kusur benzeri desenler veya doku varyasyonları ekleyin
Uyumluluk Notları:
- Albumentations sürüm 1.0.3 veya üstünü gerektirir
- Tüm YOLO algılama ve segmentasyon görevleriyle uyumlu
- Sınıflandırma görevleri için geçerli değildir (sınıflandırma farklı bir artırma işlem hattı kullanır)
Albumentations ve mevcut dönüşümler hakkında daha fazla bilgi için resmi Albumentations belgelerini ziyaret edin.
SSS
Seçilebilecek çok fazla artırma var. Hangilerini kullanacağımı nasıl bileceğim?
Doğru artırmaları seçmek, özel kullanım durumunuza ve veri kümenize bağlıdır. Karar vermenize yardımcı olacak birkaç genel kılavuz aşağıda verilmiştir:
- Çoğu durumda, renkteki ve parlaklıktaki hafif farklılıklar faydalıdır. için varsayılan değerler
hsv_h,hsv_svehsv_vsağlam bir başlangıç noktasıdır. - Kameranın bakış açısı tutarlıysa ve model dağıtıldıktan sonra değişmeyecekse, geometrik dönüşümleri atlayabilirsiniz, örneğin
rotation,translation,scale,shear, veyaperspective. Ancak, kamera açısı değişebiliyorsa ve modelin daha sağlam olmasını istiyorsanız, bu artırmaları tutmak daha iyidir. - Şunu kullanın:
mosaicKısmen örtüşen nesneler veya görüntü başına birden fazla nesne kabul edilebilir durumdaysa ve etiket değerini değiştirmiyorsa, artırma uygulayın. Alternatif olarak, şunu koruyabilirsiniz:mosaicaktif ancak şunu artırclose_mosaiceğitim sürecinde daha erken devre dışı bırakmak için değer.
Kısacası: basit tutun. Küçük bir artırma kümesiyle başlayın ve gerektiğinde kademeli olarak daha fazlasını ekleyin. Amaç, modelin genellemesini ve sağlamlığını iyileştirmek, eğitim sürecini aşırı karmaşık hale getirmek değildir. Ayrıca, uyguladığınız artırmaların, modelinizin üretimde karşılaşacağı veri dağılımını yansıttığından emin olun.
Bir eğitime başlarken, şunu görüyorum: albumentations: Blur[...] referans. Bu, Ultralytics YOLO'nun bulanıklaştırma gibi ek artırma uyguladığı anlamına mı geliyor?
Eğer albumentations paketi yüklendiğinde, Ultralytics otomatik olarak onu kullanarak bir dizi ekstra görüntü artırması uygular. Bu artırmalar dahili olarak işlenir ve ek bir yapılandırma gerektirmez.
Uygulanan dönüşümlerin tam listesini şurada bulabilirsiniz: teknik dokümantasyon, ayrıca şurada da Albumentations entegrasyon kılavuzu. Yalnızca olasılığı olan artırmaların olduğunu unutmayın p büyüktür 0 etkindir. Bunlar, bulanıklık veya gri tonlama efektleri gibi gerçek dünya görsel yapıtlarını taklit etmek için kasıtlı olarak düşük frekanslarda uygulanır.
Python API'sini kullanarak kendi özel Albumentations dönüşümlerinizi de sağlayabilirsiniz. Daha fazla ayrıntı için Gelişmiş Artırma Özellikleri bölümüne bakın.
Bir eğitime başlarken, albumentations'a herhangi bir referans göremiyorum. Neden?
Şunu kontrol edin: albumentations paketi yüklüdür. Değilse, şunu çalıştırarak yükleyebilirsiniz: pip install albumentations. Kurulduktan 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ğitici oluşturarak artırmaları özelleştirebilirsiniz. Ö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ştirebilirsiniz. Uygulama ayrıntıları için sınıflandırma belgelerindeki özel eğitim örneğine bakın.
















































