Meet YOLO26: next-gen vision AI.

Link to this sectionРасширенная настройка#

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



Watch: Mastering Ultralytics YOLO: Advanced Customization
Совет

Практические примеры распространенных настроек тренера — пользовательские метрики, функция потерь с учетом весов классов, сохранение модели, заморозка бэкбона и скорость обучения для отдельных слоев — смотри в руководстве Customizing Trainer.

Link to this sectionBaseTrainer#

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

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

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

Link to this sectionDetectionTrainer#

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

from ultralytics.models.yolo.detect import DetectionTrainer

trainer = DetectionTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # Get the best model

Link to this sectionНастройка DetectionTrainer#

Чтобы обучить пользовательскую модель детектирования, которая не поддерживается напрямую, переопредели существующую функциональность get_model:

from ultralytics.models.yolo.detect import DetectionTrainer

class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg=None, weights=None, verbose=True):
        """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=None, weights=None, verbose=True):
        """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()

Более подробную информацию о событиях запуска callback и точках входа смотри в руководстве по обратным вызовам (Callbacks Guide).

Link to this sectionДругие компоненты движка#

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

Link to this sectionИспользование 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=None, weights=None, verbose=True):
        """Custom code implementation."""
        ...

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

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

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

Link to this sectionЧасто задаваемые вопросы (FAQ)#

Link to this sectionКак настроить Ultralytics YOLO DetectionTrainer для специфических задач?#

Настраивай DetectionTrainer для конкретных задач путем переопределения его методов, чтобы адаптировать их к твоей пользовательской модели и загрузчику данных. Начни с наследования от DetectionTrainer и переопредели такие методы, как get_model, для реализации нужного функционала. Вот пример:

from ultralytics.models.yolo.detect import DetectionTrainer

class CustomTrainer(DetectionTrainer):
    def get_model(self, cfg=None, weights=None, verbose=True):
        """Loads a custom detection model given configuration and weight files."""
        ...

trainer = CustomTrainer(overrides={...})
trainer.train()
trained_model = trainer.best  # Get the best model

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

Link to this sectionКаковы ключевые компоненты BaseTrainer в Ultralytics YOLO?#

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

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

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

Link to this sectionКак добавить callback в Ultralytics YOLO DetectionTrainer?#

Добавляй callback для отслеживания и изменения процесса обучения в DetectionTrainer. Вот как добавить callback для сохранения весов модели после каждой эпохи обучения:

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

Более подробную информацию о событиях callback и точках входа ты найдешь в руководстве по обратным вызовам (Callbacks Guide).

Link to this sectionПочему стоит использовать Ultralytics YOLO для обучения моделей?#

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

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

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

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

Да, DetectionTrainer очень гибкий и настраиваемый для нестандартных моделей. Наследуйся от DetectionTrainer и переопределяй методы для поддержки нужд твоей конкретной модели. Вот простой пример:

from ultralytics.models.yolo.detect import DetectionTrainer

class CustomDetectionTrainer(DetectionTrainer):
    def get_model(self, cfg=None, weights=None, verbose=True):
        """Loads a custom detection model."""
        ...

trainer = CustomDetectionTrainer(overrides={...})
trainer.train()

Для получения подробных инструкций и примеров ознакомься со справочником DetectionTrainer Reference.

Комментарии