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

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

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



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

BaseTrainer

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

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

Настройте тренер, изменив функцию потерь или добавив обратный вызов для загрузки модели на 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 Класс модели представляет собой высокоуровневую обертку для классов 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

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

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

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

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

Более подробную информацию о настройке и исходном коде см. в разделе BaseTrainer Ссылка.

Как добавить обратный вызов в 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 для нестандартных моделей?

Да, в 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 дней назад

Комментарии