Als Markdown anzeigen

Augmentationsmatrix

Das Festlegen einer Augmentationseinstellung garantiert nicht, dass sie die Pipeline erreicht. Diese Seite dokumentiert anhand der deklarativen Tabelle der Bibliothek, wie jede trainierbare Familie die Einstellungen in TrainConfig behandelt. Sie ist die einzige maßgebliche Quelle.

Einstellungen

Dies sind Feldnamen von TrainConfig, nicht ihre Schreibweisen in der CLI. Die CLI bildet eigene Aliasse darauf ab. --mosaic setzt daher mosaic_prob.

EinstellungBedeutung
mosaic_probWahrscheinlichkeit für die Erstellung eines Mosaic-Samples aus 4 Bildern
mixup_probWahrscheinlichkeit für die Einmischung eines zweiten Samples
hsv_probWahrscheinlichkeit für HSV-Farb-Jitter
flip_probWahrscheinlichkeit einer horizontalen Spiegelung
degreesBereich zufälliger Drehungen für die affine Transformation in Grad
translateAnteil zufälliger Verschiebung für die affine Transformation
mosaic_scaleBereich zufälliger Skalierung für die affine Transformation
mixup_scaleBereich des Skalierungs-Jitters für das MixUp-Partnerbild
shearBereich zufälliger Scherung für die affine Transformation in Grad
perspectiveStärke der projektiven Transformation für die affine Transformation
flipudWahrscheinlichkeit einer vertikalen Spiegelung
no_aug_epochsAbschließende Epochen mit deaktivierter starker Augmentation
auto_augmentAutoAugment-Richtlinie für Klassifizierung: randaugment, autoaugment oder augmix
erasingRandomErasing-Wahrscheinlichkeit für Klassifizierung
mixupBatch-MixUp-Wahrscheinlichkeit mit weichen Labels für Klassifizierung
cutmixBatch-CutMix-Wahrscheinlichkeit mit weichen Labels für Klassifizierung

Die letzten vier bilden das Klassifizierungspaket. Erkennungsfamilien ignorieren sie. mixup ist ausschließlich über die API verfügbar. Das CLI-Argument --mixup ist der Alias für das bei der Erkennung verwendete mixup_prob.

Spezifikation direkt abfragen
from libreyolo.data.augment.spec import (    AUG_KNOBS,    aug_support,    ignored_aug_params,    uses_mosaic_gating,) print(sorted(AUG_KNOBS)) table = aug_support("yolo9")print(table["mixup_prob"].status, table["mixup_prob"].note) print(sorted(ignored_aug_params("dfine")))print(uses_mosaic_gating("yolo9"), uses_mosaic_gating("yolonas"))

Drei Statuswerte

StatusBedeutung
usedDie Einstellung erreicht die Trainingspipeline der Familie und verändert Samples
gated_by_mosaicDie Einstellung gilt nur für Samples im Mosaic-Zweig und wird bei mosaic_prob == 0 nie ausgelöst
ignoredDie Einstellung erreicht die Pipeline nie und bleibt wirkungslos

Prüfe vor einem Lauf insbesondere ignored, da kein Fehler ausgelöst wird. Die CLI warnt, wenn ein ausdrücklich gesetzter Trainingsparameter von der gewählten Familie ignoriert wird. Der Trainer warnt außerdem, wenn mixup_prob > 0 nicht ausgelöst werden kann, weil die Familie MixUp an Mosaic koppelt und mosaic_prob null ist.

Pipeline-Archetypen

Jede erfasste Familie folgt einer von sechs Pipelines. Einige familienbezogene Abweichungen stehen weiter unten.

EinstellungYOLOX-StilYOLO-NASDETR-StilKlassifizierungSemantikRestauration
mosaic_probverwendetignoriertignoriertignoriertignoriertignoriert
mixup_probgekoppeltverwendetignoriertignoriertignoriertignoriert
hsv_probverwendetverwendetignoriertignoriertignoriertignoriert
flip_probverwendetverwendetverwendetignoriertignoriertignoriert
degreesgekoppeltverwendetignoriertignoriertignoriertignoriert
translategekoppeltverwendetignoriertignoriertignoriertignoriert
mosaic_scalegekoppeltverwendetignoriertignoriertignoriertignoriert
mixup_scalegekoppeltverwendetignoriertignoriertignoriertignoriert
sheargekoppeltverwendetignoriertignoriertignoriertignoriert
perspectivegekoppeltverwendetignoriertignoriertignoriertignoriert
flipudverwendetverwendetignoriertignoriertignoriertignoriert
no_aug_epochsverwendetverwendetverwendetverwendetverwendetverwendet
auto_augmentignoriertignoriertignoriertverwendetignoriertignoriert
erasingignoriertignoriertignoriertverwendetignoriertignoriert
mixupignoriertignoriertignoriertverwendetignoriertignoriert
cutmixignoriertignoriertignoriertverwendetignoriertignoriert

In der Pipeline im YOLOX-Stil wendet die Vorverarbeitung je Sample HSV-Jitter und Spiegelungen an. Die affine Transformation und MixUp laufen nur innerhalb des Mosaic-Zweigs. YOLO-NAS führt dagegen immer eine affine Transformation je Sample aus, ignoriert Mosaic und wendet MixUp unabhängig an. Dabei wird mosaic_scale als Skalierungsbereich der affinen Transformation wiederverwendet.

Die Pipeline im DETR-Stil verwendet eine unveränderte Durchleitung ohne Mosaic. Fotometrische Verzerrung, Zoom-out und IoU-Beschnitt sind feste Rezeptwerte und keine konfigurierbaren Einstellungen. Deshalb erreichen hsv_prob und die Geometrieeinstellungen diese Pipeline nie. Die Klassifizierungspipeline verwendet eine ImageFolder-Transformation mit einer festen Wahrscheinlichkeit von 0,5 für horizontales Spiegeln statt flip_prob. Bei der semantischen Segmentierung stammen Skalierungs-Jitter und HSV aus Klassenattributen der Familie statt aus Konfigurationseinstellungen. Restauration koppelt die Spiegelungen von Eingabe und Ziel mit einer festen Wahrscheinlichkeit von 0,5.

no_aug_epochs wird überall berücksichtigt, schaltet aber unterschiedliche Elemente ab. Im YOLOX-Stil betrifft dies Mosaic und MixUp, bei YOLO-NAS die affine Transformation und MixUp, im DETR-Stil die starken fotometrischen und Beschnitt-Augmentationen sowie das Ende des Lernratenverlaufs und bei den übrigen Pipelines das Ende des Schedulers.

Familien nach Archetyp

ArchetypFamilien
YOLOX-Stilyolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo
YOLO-NASyolonas
DETR-Stildfine, domedetr, deim, deimv2, rtdetrv4, rfdetr, ec, dinov2
Klassifizierungresnet, convnext, mobilenetv4, efficientnetv2
Semantiksegformer
Restaurationnafnet

Fünfundzwanzig Familien werden erfasst. Für eine Familie außerhalb dieser Liste wird eine leere Menge ignorierter Einstellungen zurückgegeben, sodass keine Warnung erscheint.

Abweichungen

FamilieUnterschied zum Archetyp
rtmdetflipud wird ignoriert: Seine Transformation besitzt keine vertikale Spiegelung
picodetflipud wird ignoriert
rtdetrflipud wird ignoriert
rtdetrv2flipud wird ignoriert
fomoperspective und flipud werden ignoriert
echsv_prob, degrees und translate werden nur für task="pose" verwendet; detect und segment nutzen feste fotometrische Rezepte
dinov2Das Klassifizierungspaket wird nur für task="classify" verwendet

ec und dinov2 sind Multi-Task-Familien. Eine Einstellung wird deshalb nur dann als ignoriert markiert, wenn jede trainierbare Aufgabe der Familie sie ignoriert. So kann die CLI-Warnung nie für eine Aufgabe falsch und für eine andere richtig sein.

Dome-DETR übernimmt die Transformationen von D-FINE unverändert. Nur Multi-Scale-Training wird nicht unterstützt. Dies wird von seiner Konfiguration statt der Augmentationsspezifikation deaktiviert.

Familienspezifische Einstellungen

Einige Familien definieren Augmentationseinstellungen in ihrer eigenen TrainConfig-Unterklasse statt in der Basisklasse. Die CLI stellt sie nicht bereit. Lege sie über die Python-API fest.

FamilieEinstellungBedeutung
yolo9, yolo9_e2e, yolo9_p2copy_pasteWahrscheinlichkeit der Copy-Paste-Instanzaugmentation, nur für task="segment"
yolo9, yolo9_e2e, yolo9_p2copy_paste_modeCopy-Paste-Quelle: flip spiegelt dasselbe Sample, mixup verwendet ein zweites Sample
yolo9, yolo9_e2e, yolo9_p2rot90Wahrscheinlichkeit einer zufälligen Drehung um 90 Grad
rfdetrcopy_pasteCopy-Paste-Wahrscheinlichkeit für task="segment", nur Modus flip
rfdetrcopy_paste_modeCopy-Paste-Quellmodus für task="segment"
rfdetrcrop_resize_probWahrscheinlichkeit für zufälliges Beschneiden und Skalieren in der nativen Pipeline
dfinecrop_resize_probWahrscheinlichkeit für zufälliges Beschneiden und Skalieren bei task="segment"
eccrop_resize_probWahrscheinlichkeit für zufälliges Beschneiden und Skalieren bei task="segment"
ec, yolonasbrightness_contrast_probWahrscheinlichkeit für Helligkeits- und Kontrast-Jitter bei task="pose"
ec, yolonasaffine_probKeypoint-bewusste Wahrscheinlichkeit einer affinen Transformation bei task="pose"

rot90 gilt bei yolo9 für detect und OBB.

Abfrage der Spezifikation

HilfsfunktionRückgabewert
aug_support(family)Tabelle von Einstellung zu Support oder None bei einer unbekannten Familie
ignored_aug_params(family)Menge der von der Familie ignorierten Einstellungsnamen; leer bei einer unbekannten Familie
uses_mosaic_gating(family)Gibt an, ob MixUp der Familie nur bei Mosaic-Samples ausgelöst wird
display_name(family)In Warnungen verwendeter Anzeigename der Familie
mixup_gating_warning(family, mosaic_prob, mixup_prob)Warntext, wenn MixUp nie ausgelöst werden kann, andernfalls None

Support ist ein benanntes Tupel aus status und note. Die Anmerkung erklärt, warum eine Einstellung bei dieser Familie ignoriert oder gekoppelt wird.

Mosaic-Kopplung

Bei einer Familie im YOLOX-Stil deaktiviert mixup_prob=0.5 zusammen mit mosaic_prob=0 MixUp vollständig, da MixUp nur auf Mosaic-Samples angewendet wird. Diese Kombination entsteht leicht, wenn Mosaic spät im Training deaktiviert wird. Der Trainer protokolliert eine Warnung mit dem Familiennamen. mixup_gating_warning ist die zugrunde liegende reine Funktion.

Liste der Einstellungen, Statuswerte, Archetypen, familienbezogene Abweichungen und Hilfsfunktionen aus libreyolo/data/augment/spec.py in v1.5.0 gelesen. Die Zuordnung dieser Tabelle zu den tatsächlichen Pipelines wird durch tests/unit/test_augment_spec.py abgesichert.