İçeriğe geç

Ultralytics YOLO Kullanarak Veri Artırma

Görüntü Zenginleştirmeleri Örneği

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.

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

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 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_h hiperparametresi, kaydırma büyüklüğünü tanımlar ve nihai ayarlama rastgele olarak arasında seçilir -hsv_h ve hsv_h. Örneğin, hsv_h=0.3, kaydırma rastgele olarak içinde seçilir-0.3 için 0.3. Üzerindeki değerler için 0.5, renk tonu kayması renk çemberi etrafında döner, bu nedenle artırmalar arasında aynı görünür 0.5 ve -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
hsv_h_-0.5_artırma hsv_h_-0.25_artırma augmentation_identity hsv_h_0.25_artırma hsv_h_-0.5_artırma

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_h hiperparametresi, kaydırma büyüklüğünü tanımlar ve nihai ayarlama rastgele olarak arasında seçilir -hsv_s ve hsv_s. Örneğin, hsv_s=0.7, yoğunluk rastgele olarak içinde seçilir-0.7 için 0.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
hsv_s_-1_artırma hsv_s_-0.5_artırma augmentation_identity hsv_s_0.5_artırma hsv_s_1_artırma

Parlaklık Ayarı (hsv_v)

  • Aralık: 0.0 - 1.0
  • Varsayılan: 0.4
  • Kullanım: Görüntünün parlaklığını değiştirir. hsv_v hiperparametresi, kaydırma büyüklüğünü tanımlar ve nihai ayarlama rastgele olarak arasında seçilir -hsv_v ve hsv_v. Örneğin, hsv_v=0.4, yoğunluk rastgele olarak içinde seçilir-0.4 için 0.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
hsv_v_-1_artırma hsv_v_-0.5_artırma augmentation_identity hsv_v_0.5_artırma hsv_v_1_artırma

Geometrik Dönüşümler

Döndürme (degrees)

  • Aralık: 0.0 için 180
  • Varsayılan: 0.0
  • Kullanım: Görüntüleri belirtilen aralıkta rastgele döndürür. degrees hiperparametresi, dönüş açısını tanımlar ve son ayarlama rastgele olarak şu aralıktan seçilir: -degrees ve degrees. Örneğin, degrees=10.0, döndürme rastgele olarak içinde seçilir-10.0 için 10.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
derece_-180_artırma derece_-90_artırma augmentation_identity derece_90_artırma derece_180_artırma

Ö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. translate hiperparametresi, 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 -translate ve translate. Örneğin, translate=0.5, öteleme rastgele olarak içinde seçilir-0.5 için 0.5 x ekseninde ve aynı aralıkta y ekseninde 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 x ve y eksenler. Değerler -1.0 ve 1.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
translate_-0.5_augmentation translate_-0.25_augmentation augmentation_identity translate_0.25_augmentation translate_0.5_augmentation

Ö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. scale hiperparametresi, ölçekleme faktörünü tanımlar ve son ayarlama rastgele olarak şu aralıktan seçilir: 1-scale ve 1+scale. Örneğin, scale=0.5, ölçekleme rastgele olarak içinde seçilir0.5 için 1.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.0 görüntünün kaybolmasına neden olacağından gösterilmezken, 1.0 sadece 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 scale büyüktür 1.0, ölçekleme faktörü rastgele seçildiğinden görüntü çok küçük veya ters çevrilmiş olabilir 1-scale ve 1+scale. Örneğin, scale=3.0, ölçekleme rastgele olarak içinde seçilir-2.0 için 4.0. Negatif bir değer seçilirse, görüntü ters çevrilir.
-0.5 -0.25 0.0 0.25 0.5
scale_-0.5_artırma scale_-0.25_artırma augmentation_identity scale_0.25_artırma scale_0.5_artırma

Kırma (shear)

  • Aralık: -180 iç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. shear hiperparametresi, kayma açısını tanımlar ve son ayarlama rastgele olarak şu aralıktan seçilir: -shear ve shear. Örneğin, shear=10.0, kayma rastgele olarak içinde seçilir-10 için 10 x ekseninde ve aynı aralıkta y ekseninde 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:
    • shear değ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
shear_-10_artırma shear_-5_artırma augmentation_identity shear_5_artırma shear_10_artırma

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. perspective hiperparametresi, perspektif büyüklüğünü tanımlar ve son ayarlama rastgele olarak şu aralıktan seçilir: -perspective ve perspective. Örneğin, perspective=0.001, perspektif rastgele olarak içinde seçilir-0.001 için 0.001 x ekseninde ve aynı aralıkta y ekseninde 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
perspektif_-0.001_artırma perspektif_-0.0005_artırma augmentation_identity perspektif_0.0005_artırma perspektif_0.001_artırma

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.0 tüm görüntülerin çevrilmesini sağlayarak ve bir değerin flipud=0.0 dö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
augmentation_identity flipud_on_augmentation

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. fliplr hiperparametresi, dönüşümün uygulanma olasılığını tanımlar ve değeri şudur: fliplr=1.0 tüm görüntülerin çevrilmesini sağlayarak ve bir değerin fliplr=0.0 dö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
augmentation_identity fliplr_on_augmentation

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. bgr hiperparametresi, dönüşümü uygulama olasılığını tanımlar ve bgr=1.0 tüm görüntülerin kanal değişimine uğramasını sağlayarak ve bgr=0.0 devre 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
augmentation_identity bgr_on_augmentation

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. mosaic hiperparametresi, dönüşümü uygulama olasılığını tanımlar ve mosaic=1.0 tüm görüntülerin birleştirilmesini sağlayarak ve mosaic=0.0 dö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 mosaic artırma modeli daha sağlam hale getirirken, eğitim sürecini de daha zorlu hale getirebilir.
    • mosaic artırma, ayarlanarak eğitimin sonuna doğru devre dışı bırakılabilir close_mosaic kapanması gerektiğinde tamamlanmadan önceki epoch sayısına. Örneğin, eğer epochs olarak ayarlanmıştır 200 ve close_mosaic olarak ayarlanmıştır 20, 'in mosaic artırma işleminden sonra devre dışı bırakılacaktır 180 epoklar. Eğer close_mosaic olarak ayarlanmıştır 0, 'in mosaic artı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ı mosaic artı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.
mosaic kapalı mosaic açık
augmentation_identity mosaic_on_augmentation

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. mixup hiperparametresi, dönüşümü uygulama olasılığını tanımlar ve mixup=1.0 tüm görüntülerin karıştırılmasını sağlayarak ve mixup=0.0 dö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:
    • mixup oranı, içinden seçilen rastgele bir değerdir np.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
artırma_mixup_identity_1 artırma_mixup_identity_2 mixup_on_augmentation

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. cutmix hiperparametresi, dönüşümü uygulama olasılığını tanımlar ve cutmix=1.0 tüm görüntülerin bu dönüşüme uğramasını sağlayarak ve cutmix=0.0 tamamen 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, cutmix kesilmiş 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.1 Yapış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.1 varsayılan olarak.
İlk resim, cutmix kapalı İkinci resim, cutmix kapalı cutmix açık
augmentation_cutmix_identity_1 augmentation_cutmix_identity_2 cutmix_on_augmentation

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. Şunu copy_paste hiperparametresi, dönüşümü uygulama olasılığını tanımlar ve copy_paste=1.0 tüm görüntülerin kopyalanmasını sağlayarak ve copy_paste=0.0 dö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_paste artı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 ise 0.3 (%30) ise, nesne hedef görüntüye yapıştırılır. Yalnızca bir IoA değeri yukarıdaysa 0.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.3 varsayılan olarak.
copy_paste kapalı copy_paste ile devam copy_paste_mode=flip Şunu görselleştir: copy_paste işlem
augmentation_identity copy_paste_on_augmentation copy_paste_augmentation_gif_demo

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.
Referans görsel Seçilen resim: copy_paste copy_paste ile devam copy_paste_mode=mixup
artırma_mixup_identity_2 augmentation_identity copy_paste_mode_mixup_augmentation

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: None otomatik artırmayı devre dışı bırakır.
  • Amaç: Sınıflandırma görevleri için artırma stratejilerini otomatik olarak optimize eder. Farklılıklar şunlardır:
    • AutoAugment: Bu mod, ImageNet, CIFAR10 ve SVHN gibi veri 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. erasing hiperparametresi, dönüşümü uygulama olasılığını tanımlar ve erasing=0.9 neredeyse tüm görüntülerin silinmesini sağlayarak ve erasing=0.0 dö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:
    • erasing artırma ile birlikte gelir scale, ratiove value ile değiştirilemeyen hiperparametreler mevcut uygulama. Varsayılan değerleri şunlardır: (0.02, 0.33), (0.3, 3.3)ve 0, sırasıyla, PyTorch'de belirtildiği gibi belgeleme.
    • Üst sınır erasing hiperparametresi şu değere ayarlanır: 0.9 dö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)
augmentation_identity erasing_ex1_augmentation erasing_ex2_augmentation erasing_ex3_augmentation

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_sve hsv_v 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, geometrik dönüşümleri atlayabilirsiniz, örneğin rotation, translation, scale, shear, veya perspective. 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: mosaic Kı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: mosaic aktif ancak şunu artır close_mosaic eğ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.

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.



📅 3 ay önce oluşturuldu ✏️ 23 gün önce güncellendi

Yorumlar