Zum Inhalt springen

Erweiterte Anpassung

Sowohl die Kommandozeilenschnittstelle Ultralytics YOLO als auch die Schnittstelle Python sind lediglich eine Abstraktion der Basis-Engine-Executors auf hoher Ebene. Werfen wir einen Blick auf die Trainer-Engine.



Beobachten: Mastering Ultralytics YOLO : Erweiterte Anpassungen

BaseTrainer

BaseTrainer enthält die generische Trainingsroutine. Er kann für jede Aufgabe angepasst werden, indem die erforderlichen Funktionen oder Operationen überschrieben werden, solange die korrekten Formate eingehalten werden. So können Sie beispielsweise Ihr eigenes benutzerdefiniertes Modell und Ihren eigenen Datenlader unterstützen, indem Sie diese Funktionen einfach überschreiben:

  • get_model(cfg, weights) - Die Funktion, die das zu trainierende Modell erstellt
  • get_dataloader() - Die Funktion, die den Dataloader aufbaut Weitere Details und Quellcode finden Sie in BaseTrainer Referenz

DetectionTrainer

Hier erfahren Sie, wie Sie die YOLO11 DetectionTrainer und passen Sie es an.

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # get best model

Anpassen des DetectionTrainers

Wir passen den Trainer an um ein benutzerdefiniertes Erkennungsmodell zu trainieren die nicht direkt unterstützt wird. Sie können dies tun, indem Sie einfach die bestehende Methode get_model Funktionalität:

from ultralytics.models.yolo.detect import DetectionTrainer


class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Loads a custom detection model given configuration and weight files."""
        ...


trainer = CustomTrainer(overrides={...})
trainer.train()

Sie erkennen nun, dass Sie den Trainer weiter anpassen müssen:

  • Anpassen der loss function.
  • hinzufügen callback die nach jeweils 10 Minuten ein Modell auf Ihr Google Laufwerk hochlädt. epochs So können Sie es tun:
from ultralytics.models.yolo.detect import DetectionTrainer
from ultralytics.nn.tasks import DetectionModel


class MyCustomModel(DetectionModel):
    def init_criterion(self):
        """Initializes the loss function and adds a callback for uploading the model to Google Drive every 10 epochs."""
        ...


class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Returns a customized detection model instance configured with specified config and weights."""
        return MyCustomModel(...)


# callback to upload model weights
def log_model(trainer):
    """Logs the path of the last model weight used by the trainer."""
    last_weight_path = trainer.last
    print(last_weight_path)


trainer = CustomTrainer(overrides={...})
trainer.add_callback("on_train_epoch_end", log_model)  # Adds to existing callback
trainer.train()

Wenn Sie mehr über Callback-Ereignisse und den Einstiegspunkt wissen möchten, lesen Sie unseren Callback-Leitfaden

Andere Motorkomponenten

Es gibt weitere Komponenten, die in ähnlicher Weise angepasst werden können, wie Validators und Predictors. Weitere Informationen hierzu finden Sie im Abschnitt Referenz.

FAQ

Wie kann ich den Ultralytics YOLO11 DetectionTrainer für bestimmte Aufgaben anpassen?

Zum Anpassen der Ultralytics YOLO11 DetectionTrainer für eine bestimmte Aufgabe, können Sie seine Methoden überschreiben, um sie an Ihr benutzerdefiniertes Modell und Ihren Datenlader anzupassen. Beginnen Sie mit der Vererbung von DetectionTrainer und definieren Sie dann Methoden wie get_model um Ihre benutzerdefinierten Funktionalitäten zu implementieren. Hier ist ein Beispiel:

from ultralytics.models.yolo.detect import DetectionTrainer


class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Loads a custom detection model given configuration and weight files."""
        ...


trainer = CustomTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # get best model

Für weitere Anpassungen wie das Ändern der loss function oder das Hinzufügen einer callbackkönnen Sie auf unser Rückrufe Leitfaden.

Was sind die wichtigsten Komponenten des BaseTrainers in Ultralytics YOLO11 ?

Die BaseTrainer in Ultralytics YOLO11 dient als Grundlage für Trainingsroutinen und kann für verschiedene Aufgaben angepasst werden, indem seine generischen Methoden überschrieben werden. Zu den wichtigsten Komponenten gehören:

  • get_model(cfg, weights) um das zu trainierende Modell zu erstellen.
  • get_dataloader() um den Datenlader zu erstellen.

Weitere Einzelheiten über die Anpassung und den Quellcode finden Sie in der BaseTrainer Referenz.

Wie kann ich dem Ultralytics YOLO11 DetectionTrainer einen Callback hinzufügen?

Sie können Rückrufe hinzufügen, um den Trainingsprozess zu überwachen und zu ändern in Ultralytics YOLO11 DetectionTrainer. So können Sie zum Beispiel einen Callback hinzufügen, um die Modellgewichte nach jedem Training zu protokollieren Epoche:

from ultralytics.models.yolo.detect import DetectionTrainer


# callback to upload model weights
def log_model(trainer):
    """Logs the path of the last model weight used by the trainer."""
    last_weight_path = trainer.last
    print(last_weight_path)


trainer = DetectionTrainer(overrides={...})
trainer.add_callback("on_train_epoch_end", log_model)  # Adds to existing callbacks
trainer.train()

Weitere Einzelheiten zu Callback-Ereignissen und Einstiegspunkten finden Sie in unserem Callback-Leitfaden.

Warum sollte ich Ultralytics YOLO11 für das Modelltraining verwenden?

Ultralytics YOLO11 bietet eine hochgradige Abstraktion von leistungsstarken Engine Executors und ist damit ideal für eine schnelle Entwicklung und Anpassung. Die wichtigsten Vorteile sind:

  • Benutzerfreundlichkeit: Sowohl die Befehlszeilen- als auch die Python -Schnittstelle vereinfachen komplexe Aufgaben.
  • Leistung: Optimiert für Echtzeit-Objekterkennung und verschiedene KI-Anwendungen.
  • Anpassungen: Leicht erweiterbar für benutzerdefinierte Modelle, Verlustfunktionen und Dataloader.

Weitere Informationen über die Möglichkeiten von YOLO11 finden Sie unter Ultralytics YOLO.

Kann ich den Ultralytics YOLO11 DetectionTrainer auch für nicht standardisierte Modelle verwenden?

Ja, Ultralytics YOLO11 DetectionTrainer ist sehr flexibel und kann für nicht standardisierte Modelle angepasst werden. Durch Vererbung von DetectionTrainerkönnen Sie verschiedene Methoden überladen, um die Bedürfnisse Ihres spezifischen Modells zu unterstützen. Hier ist ein einfaches Beispiel:

from ultralytics.models.yolo.detect import DetectionTrainer


class CustomDetectionTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Loads a custom detection model."""
        ...


trainer = CustomDetectionTrainer(overrides={...})
trainer.train()

Ausführlichere Anweisungen und Beispiele finden Sie in der DetectionTrainer-Dokumentation.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 2 Monaten

Kommentare