Расширенная настройка
Интерфейсы командной строки 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 через каждые 10epochs
Вот как вы можете это сделать:
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.