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

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

Как интерфейсы командной строки, так и интерфейсы Python Ultralytics YOLO представляют собой высокоуровневые абстракции, построенные на основе исполнителей базового движка. Это руководство посвящено Trainer engine, объясняя, как настроить его для ваших конкретных потребностей.



Смотреть: Освоение Ultralytics YOLO: Расширенная настройка

BaseTrainer

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

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

Для получения более подробной информации и исходного кода см. BaseTrainer Справочник.

DetectionTrainer

Вот как использовать и настраивать Ultralytics YOLO DetectionTrainer:

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # Get the 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()

Дополнительно настройте тренажер, изменив функцию потерь или добавив callback для загрузки модели на Google Drive каждые 10 эпох. Вот пример:

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 callbacks
trainer.train()

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

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

Настройте другие компоненты, такие как Validators и Predictors аналогично. Для получения дополнительной информации обратитесь к документации для Валидаторы и Предикторы.

Использование YOLO с пользовательскими тренерами

Параметр YOLO класс model предоставляет высокоуровневую обертку для классов Trainer. Вы можете использовать эту архитектуру для большей гибкости в ваших рабочих процессах машинного обучения:

from ultralytics import YOLO
from ultralytics.models.yolo.detect import DetectionTrainer


# Create a custom trainer
class MyCustomTrainer(DetectionTrainer):
    def get_model(self, cfg, weights):
        """Custom code implementation."""
        ...


# Initialize YOLO model
model = YOLO("yolo11n.pt")

# Train with custom trainer
results = model.train(trainer=MyCustomTrainer, data="coco8.yaml", epochs=3)

Этот подход позволяет сохранить простоту интерфейса YOLO, настраивая при этом базовый процесс обучения в соответствии с вашими конкретными требованиями.

Часто задаваемые вопросы

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

Настроить 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 the best model

Для дальнейшей настройки, например, изменения функции потерь или добавления callback-функции, обратитесь к Руководству по Callback-функциям.

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

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

  • get_model(cfg, weights): Создает модель для обучения.
  • get_dataloader(): Создает загрузчик данных.
  • preprocess_batch(): Обрабатывает предварительную обработку пакета перед прямым проходом модели.
  • set_model_attributes(): Устанавливает атрибуты модели на основе информации о наборе данных.
  • get_validator(): Возвращает валидатор для оценки модели.

Для получения более подробной информации о настройке и исходном коде см. BaseTrainer Справочник.

Как добавить callback в Ultralytics YOLO DetectionTrainer?

Добавьте обратные вызовы для мониторинга и изменения процесса обучения в 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 YOLO для обучения модели?

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

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

Узнайте больше о возможностях YOLO, изучив главную страницу Ultralytics YOLO.

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

Да, the 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 год назад ✏️ Обновлено 5 месяцев назад

Комментарии