Artırmayı Dikkatli Kullan
Her artırma yöntemini dağıtım kamerasında test et, gerekçelendirilmiş bir profil oluştur, bu profille eğitim yap ve eğitim partilerindeki sonucu kontrol et.
Kırmızı kapsülleri turunculardan ayıran bir ayıklama hattını, varsayılan renk tonu titreşimiyle eğittiğini düşün. Her epoch'ta model, turuncuya dönük kırmızı kapsüller görür; böylece öğrenmesi gereken tek şey olan rengin önemli olmadığını öğrenir. Artırma, ancak her dönüşüm dağıtım kamerasının gerçekten üretebileceği bir görüntüyse modeli daha dayanıklı hâle getirir. Bu derste, hangi dönüşümlerin kullanılacağına karar veren testi öğreneceksin.
Uygulamalı
Artırma ne işe yarar?#

Veri artırma, eğitim görsellerini anlık olarak dönüştürür; böylece model her epoch'ta her görselin biraz farklı bir sürümünü görür. Doğru uygulandığında ışıklandırma, ölçek ve yön değişikliklerine karşı dayanıklılığı artırır ve aşırı öğrenmeyi azaltır; çünkü sürekli değişen görselleri model ezberleyemez. Yanlış uygulandığında ise fiziksel olarak olanaksız sahneler öğretir ve gidermen gereken veri kümesi eksiklerini gizler.
Yukarıdaki ton paneline bak: kırmızı ara papağan sarıya dönüyor. "Ara papağan mı, değil mi?" ayrımı için bu zararsızdır; ancak sınıflarından ikisini ayıran özellik renkse zararlıdır.
Önemli varsayılanlar#
Bunlar Ultralytics 8.4'ün varsayılanlarıdır; artırma ayarları başvuru kaynağında tüm argümanlar listelenir:
| Argüman | Varsayılan | Ne işe yarar | Ne zaman değiştirilmeli |
|---|---|---|---|
hsv_h | 0.015 | Ton titreşimi | Renk bir sınıfı tanımlıyorsa 0 olarak ayarla |
hsv_s / hsv_v | 0.7 / 0.4 | Doygunluk ve parlaklık titreşimi | Işıklandırma sabit ve kontrollüyse azalt |
degrees | 0.0 | Rastgele döndürme (±derece) | Nesneler her açıda görünebiliyorsa artır |
translate / scale | 0.1 / 0.5 | Kaydırma ve yakınlaştırma | Kırpmalar sınıfı tanımlayan parçaları kesebiliyorsa azalt |
fliplr | 0.5 | Yatay çevirme olasılığı | Metinde olduğu gibi sağ ve sol önemliyse 0 olarak ayarla |
flipud | 0.0 | Dikey çevirme olasılığı | Üstten çekim, hava fotoğrafı veya mikroskop görüntüleri için artır |
mosaic | 1.0 | Dört görseli tek bir görselde birleştirir | Nadiren; close_mosaic bölümüne bak |
close_mosaic | 10 | Son N epoch boyunca mozaik artırmayı kapatır | Çok kısa eğitimlerde azalt |
mixup / cutmix | 0.0 / 0.0 | İki görseli harmanlar / birinin parçasını diğerine yapıştırır | Temel sonuçtan sonra küçük veri kümelerinde dene |
copy_paste | 0.0 | Nesne örneklerini görseller arasında yapıştırır | Nadir sınıflar içeren segmentasyon, anlamsal segmentasyon ve OBB veri kümeleri |
Derinlik veri kümeleri istisnadır: mosaic, mixup, cutmix ve copy_paste eşleştirilmiş derinlik haritalarını geçersiz kılacağından, derinlik yükleyicisi bunları otomatik olarak 0'a ayarlar.
Dağıtım testi#
Etkinleştirilen her dönüşüm önce bir soruyu, ardından ikinci bir soruyu geçmeli:
| Dönüşüm | Gerçekçi mi? | Karar |
|---|---|---|
| Dış mekân kamerasında ±%30 parlaklık değişimi | Evet: günün farklı saatleri | Kullan |
| Güvenlik kamerasında yatay çevirme | Evet: insanlar her iki yönde de yürür | Kullan |
| Duvara monte kamerada dikey çevirme | Hayır: zemin hep altta kalır | Devre dışı bırak |
| Üstten bakan konveyör kamerasında dikey çevirme | Evet: karede "yukarı" yok | Etkinleştir |
| Sabit yol kamerasında 90° döndürme | Hayır: kamera hiç dönmüyor | Devre dışı bırak |
| Kırmızı ve yeşil parçalar farklı sınıflar olduğunda ton kaydırma | Hayır: sinyali yok eder | Devre dışı bırak |

Baş aşağı duran bir ara papağan, doğrudan aşağıya bakan bir drone için iyi bir eğitim görüntüsüdür; duvara sabitlenmiş bir kamera içinse boşa harcanmış olur. Bu testi geçemeyen dönüşümler olumsuz eğitim sinyali üretir: model, kapasitesini asla görmeyeceği görüntüleri tanımaya harcarken göreceği görüntüler için daha az kapasiteye sahip olur.
Örnek bir profil#
Konveyörün üzerindeki üstten bakan bir kamera, sınıfları yalnızca renkleriyle ayrılan parçaları ayırıyor. Ton jitter'ı kaldırılmalı; dikey çevirmeler ve küçük döndürmeler ise gerçekçi hâle geliyor. Bu, COCO8 demo kümesinde gösterildiği gibi çalışır; kendi veri YAML dosyanı ve gerçek bir epoch sayısını kullan:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.train(
data="coco8.yaml",
epochs=1,
imgsz=320,
hsv_h=0.0, # renk sınıfı belirtir: tonları olduğu gibi koru
flipud=0.5, # tepeden görünüm: karede "yukarı" yok
degrees=10.0, # parçalar her küçük açıda yer alabilir
)Çalıştırma klasöründeki train_batch0.jpg dosyasını aç ve üç şeyi kontrol et: dönüşümden sonra kutular sıkı biçimde nesneleri çevreliyor mu, sınıfı belirleyen ipuçları (renk, şekil, metin) korunuyor mu ve fiziksel olarak imkânsız görünen bir şey var mı. Bunlardan birini bozan her dönüşümün etkisini azalt. İlk Modelini Eğit, eğitim çalıştırmasının kendisini ele alıyor.
Mozaik ve close_mosaic#

Mozaik, dört görüntüyü tek bir görüntüde birleştirir ve varsayılan olarak açıktır. Nesne tespiti için en etkili artırımdır: her eğitim görüntüsü birden fazla sahne, ölçek ve nesne bağlamı içerir. Ancak mozaik görüntüler dağıtım sırasındaki karelere benzemez; bu nedenle close_mosaic=10 mozaik özelliğini son 10 epoch boyunca kapatır ve modelin eğitimini gerçekçi girdilerle tamamlamasını sağlar. Mozaik kapatıldığında mixup, cutmix ve copy_paste da kapanır; çevirmeler, HSV ve geometrik dönüşümler ise çalışmaya devam eder.
Yukarıdaki tek epoch'luk profil de dahil olmak üzere, close_mosaic epoch veya daha kısa koşularda mozaik ilk epoch'tan itibaren kapalıdır. Mozaiği, kısa bir testte değil, tam uzunluktaki koşunun train_batch0.jpg değerinden değerlendir.
Artırımın düzeltemeyeceği şeyler#
Artırım, mevcut olanı çoğaltan bir etkendir. Veri kümesinde gece görüntüleri yoksa hiçbir ayar gece görüntüsü üretemez; yalnızca gündüz görüntülerinin daha aydınlık ve daha karanlık sürümlerini üretir. Bir sınıf yalnızca yoğun artırımla işe yarıyorsa o sınıftan yeterince örneğin yoktur. Yüksek Kaliteli ve Temsili Veri Topla adımına geri dön.
Her veri artırma ayarı en üst düzeyde olan küçük bir veri kümesi, dağıtım koşullarından giderek uzaklaşan görüntülerle eğitilir ve doğrulama mAP'si çoğu zaman düşer. Gerekçesiyle birlikte, her seferinde tek bir argümanı değiştir ve aynı bölmede varsayılan başlangıç değerleriyle karşılaştır.
Bir sınıf oyun kartının köşesindeki simge gibi nesnenin küçük bir bölümüyle tanımlanıyorsa mosaic, translate ve scale bu bölümü kırparak kaldırabilir ve başka bir sınıfla tamamen aynı görünen bir eğitim görüntüsü oluşturabilir. Bu veri kümesi için bu değerleri düşür ve düzeltmeyi train_batch0.jpg içinde doğrula.
Çözümü göster
Bir drone limanı tam tepeden tarıyor ve gemileri yönelimli kutularla tespit ediyor. Bu bakış açısından "yukarı" diye bir yön yoktur, gemiler her yöne bakabilir ve sınıfı renk belirlemez:
| Argüman | Seçim | Gerekçe |
|---|---|---|
flipud | 0.5 | Üstten görünüm dikey çevrildiğinde de aynı görünür |
degrees | 180 | Gemiler her yönde görünebilir |
hsv_h | varsayılan | Gövde rengi değişkendir ve sınıfı belirlemez |
mosaic | varsayılan | Her görüntüde çok sayıda küçük nesne var; mozaik yardımcı olur |
DOTA8 hava görüntüleri demo kümesinde:
yolo obb train data=dota8.yaml model=yolo26n-obb.pt epochs=1 imgsz=320 flipud=0.5 degrees=180Sabit bir sokak kamerasında aynı iki değişiklik dağıtım testini geçemez: duvara monte edilmiş bir görüntü akışında arabalar asla baş aşağı görünmez.