Расширенная настройка
Интерфейсы командной строки 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
Ссылка.