Перейти к содержанию

Расширенная настройка

Интерфейсы командной строки Ultralytics YOLO и Python - это просто высокоуровневая абстракция на базовых исполнителях движка. Давайте рассмотрим движок Trainer.



Смотреть: Mastering Ultralytics YOLO : Advanced Customization

BaseTrainer

BaseTrainer содержит общую шаблонную обучающую процедуру. Ее можно настроить под любую задачу, переопределив необходимые функции или операции, при условии соблюдения правильных форматов. Например, вы можете поддерживать собственную модель и dataloader, просто переопределив эти функции:

  • get_model(cfg, weights) - Функция, которая строит обучаемую модель
  • get_dataloader() - Функция, которая строит dataloader Более подробную информацию и исходный код можно найти в BaseTrainer Ссылка

DetectionTrainer

Вот как вы можете использовать YOLO11 DetectionTrainer и настроить его под себя.

from ultralytics.models.yolo.detect import DetectionTrainer

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

Настройка DetectionTrainer

Давайте настроим тренера для обучения пользовательской модели обнаружения которые не поддерживаются напрямую. Это можно сделать, просто перегрузив существующую функцию get_model функциональность:

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()

Теперь вы понимаете, что вам нужно еще больше настроить тренажер:

  • Настройте loss function.
  • Добавить callback которая загружает модель на ваш диск Google через каждые 10 epochs Вот как вы можете это сделать:
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()

Чтобы узнать больше о событиях, вызывающих обратный вызов, и точке входа, ознакомьтесь с нашим руководством по обратным вызовам

Другие компоненты двигателя

Есть и другие компоненты, которые можно настроить аналогичным образом, например Validators и Predictors. Дополнительные сведения о них см. в разделе "Справочник".

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Как настроить Ultralytics YOLO11 DetectionTrainer для выполнения конкретных задач?

Чтобы настроить Ultralytics YOLO11 DetectionTrainer для конкретной задачи, вы можете переопределить его методы, чтобы адаптировать их к вашей пользовательской модели и загрузчику данных. Начните с наследования от DetectionTrainer а затем переопределите такие методы, как get_model для реализации ваших пользовательских функций. Вот пример:

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

Для дальнейшей настройки, например, изменения loss function или добавить callbackВы можете обратиться к нашему Руководство по обратным вызовам.

Каковы ключевые компоненты BaseTrainer в Ultralytics YOLO11 ?

Сайт BaseTrainer в Ultralytics YOLO11 служит основой для тренировочных процедур и может быть адаптирован к различным задачам путем переопределения его общих методов. Ключевые компоненты включают:

  • get_model(cfg, weights) для построения обучаемой модели.
  • get_dataloader() для создания загрузчика данных.

Подробнее о настройке и исходном коде см. BaseTrainer Ссылка.

Как добавить обратный вызов в Ultralytics YOLO11 DetectionTrainer?

Вы можете добавить обратные вызовы, чтобы отслеживать и изменять процесс обучения в Ultralytics YOLO11 DetectionTrainer. Например, вот как можно добавить обратный вызов для регистрации весов модели после каждого обучения эпоха:

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()

Более подробную информацию о событиях обратного вызова и точках входа см. в нашем руководстве по обратным вызовам.

Почему стоит использовать Ultralytics YOLO11 для обучения модели?

Ultralytics YOLO11 предлагает высокоуровневую абстракцию на мощных исполнительных механизмах, что делает его идеальным для быстрой разработки и настройки. Ключевые преимущества включают:

  • Простота использования: интерфейсы командной строки и Python упрощают выполнение сложных задач.
  • Производительность: Оптимизирована для обнаружения объектов в реальном времени и различных приложений искусственного интеллекта.
  • Персонализация: Легко расширяется для пользовательских моделей, функций потерь и загрузчиков данных.

Узнать больше о возможностях YOLO11 можно на сайте Ultralytics YOLO.

Могу ли я использовать Ultralytics YOLO11 DetectionTrainer для нестандартных моделей?

Да, Ultralytics YOLO11 DetectionTrainer обладает высокой гибкостью и может быть адаптирован к нестандартным моделям. Наследуя от DetectionTrainerВы можете перегрузить различные методы, чтобы поддержать потребности конкретной модели. Вот простой пример:

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()

Для получения более подробных инструкций и примеров ознакомьтесь с документацией DetectionTrainer.

📅 Создано 1 год назад ✏️ Обновлено 1 месяц назад

Комментарии