Продвинутая настройка
И интерфейсы Ultralytics YOLO командной строки, и Python - это просто высокоуровневая абстракция на базовых исполнителях движка. Давай посмотрим на движок Trainer.
Смотри: Mastering Ultralytics YOLO: Advanced Customization
BaseTrainer
BaseTrainer содержит общую шаблонную процедуру обучения. Его можно настроить под любую задачу, переопределив нужные функции или операции, при условии соблюдения правильных форматов. Например, ты можешь поддерживать свою собственную модель и dataloader, просто переопределив эти функции:
get_model(cfg, weights)
- Функция, которая строит обучаемую модельget_dataloader()
- Функция, которая строит dataloader Более подробную информацию и исходный код можно найти вBaseTrainer
Ссылка
DetectionTrainer
Here's how you can use the 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 Drive после каждых 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
. Подробнее о них читай в разделе Reference.
ВОПРОСЫ И ОТВЕТЫ
How do I customize the Ultralytics YOLO11 DetectionTrainer for specific tasks?
To customize the 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
Ты можешь обратиться к нашему Руководство по обратным вызовам.
What are the key components of the BaseTrainer in Ultralytics YOLO11?
The BaseTrainer
in Ultralytics YOLO11 serves as the foundation for training routines and can be customized for various tasks by overriding its generic methods. Key components include:
get_model(cfg, weights)
чтобы построить обучаемую модель.get_dataloader()
чтобы создать загрузчик данных.
Более подробную информацию о настройке и исходном коде см. BaseTrainer
Ссылка.
How can I add a callback to the Ultralytics YOLO11 DetectionTrainer?
You can add callbacks to monitor and modify the training process in Ultralytics YOLO11 DetectionTrainer
. For instance, here's how you can add a callback to log model weights after every training epoch:
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()
Более подробно о событиях обратного вызова и точках входа читай в нашем руководстве по обратным вызовам.
Why should I use Ultralytics YOLO11 for model training?
Ultralytics YOLO11 offers a high-level abstraction on powerful engine executors, making it ideal for rapid development and customization. Key benefits include:
- Простота использования: интерфейсы как командной строки, так и Python упрощают выполнение сложных задач.
- Performance: Optimized for real-time object detection and various vision AI applications.
- Customization: Easily extendable for custom models, loss functions, and dataloaders.
Learn more about YOLO11's capabilities by visiting Ultralytics YOLO.
Can I use the Ultralytics YOLO11 DetectionTrainer for non-standard models?
Yes, 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.