콘텐츠로 건너뛰기

고급 사용자 지정

Ultralytics YOLO 명령줄과 Python 인터페이스는 모두 기본 엔진 실행기를 기반으로 구축된 높은 수준의 추상화입니다. 이 가이드에서는 Trainer 엔진을 사용자 지정하는 방법을 설명합니다.



Watch: 마스터링 Ultralytics YOLO : 고급 사용자 지정

베이스 트레이너

그리고 BaseTrainer 클래스는 다양한 작업에 적용할 수 있는 일반적인 교육 루틴을 제공합니다. 필요한 형식을 준수하면서 특정 함수나 작업을 재정의하여 사용자 지정할 수 있습니다. 예를 들어, 이러한 함수를 재정의하여 사용자 지정 모델과 데이터 로더를 통합할 수 있습니다:

  • get_model(cfg, weights): 학습할 모델을 구축합니다.
  • get_dataloader(): 데이터로더를 빌드합니다.

자세한 내용과 소스 코드는 BaseTrainer 참조.

탐지 트레이너

Ultralytics YOLO 사용하고 사용자 지정하는 방법은 다음과 같습니다. DetectionTrainer:

from ultralytics.models.yolo.detect import DetectionTrainer

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

탐지 트레이너 사용자 지정

직접 지원되지 않는 사용자 지정 탐지 모델을 학습하려면 기존 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()

손실 기능을 수정하거나 콜백을 추가하여 10초마다 모델을 Google 드라이브에 업로드하여 트레이너를 더욱 맞춤 설정할 수 있습니다. 다음은 예시입니다:

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 모델 클래스는 트레이너 클래스를 위한 상위 수준의 래퍼를 제공합니다. 이 아키텍처를 활용하여 머신 러닝 워크플로우의 유연성을 높일 수 있습니다:

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 와 같은 메서드를 재정의하고 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

손실 함수 변경 또는 콜백 추가와 같은 추가 사용자 지정은 콜백 가이드를 참조하세요.

Ultralytics YOLO 베이스 트레이너의 핵심 구성 요소는 무엇인가요?

그리고 BaseTrainer 는 일반적인 방법을 재정의하여 다양한 작업에 맞게 사용자 지정할 수 있는 교육 루틴의 기초 역할을 합니다. 주요 구성 요소는 다음과 같습니다:

  • get_model(cfg, weights): 학습할 모델을 구축합니다.
  • get_dataloader(): 데이터로더를 빌드합니다.
  • preprocess_batch(): 모델 포워드 패스 전에 일괄 전처리를 처리합니다.
  • set_model_attributes(): 데이터 세트 정보를 기반으로 모델 속성을 설정합니다.
  • get_validator(): 모델 평가를 위한 유효성 검사기를 반환합니다.

사용자 지정 및 소스 코드에 대한 자세한 내용은 다음을 참조하세요. BaseTrainer 참조.

Ultralytics YOLO 탐지 트레이너에 콜백을 추가하려면 어떻게 해야 하나요?

콜백을 추가하여 교육 프로세스를 모니터링하고 수정할 수 있습니다. DetectionTrainer. 모든 학습 후 모델 가중치를 기록하는 콜백을 추가하는 방법은 다음과 같습니다. 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()

콜백 이벤트 및 진입 지점에 대한 자세한 내용은 콜백 가이드를 참조하세요.

모델 교육에 Ultralytics YOLO 사용해야 하는 이유는 무엇인가요?

강력한 엔진 실행기를 통해 높은 수준의 추상화를 제공하는 Ultralytics YOLO 신속한 개발 및 커스터마이징에 이상적입니다. 주요 이점은 다음과 같습니다:

  • 사용 편의성: 명령줄과 Python 인터페이스는 모두 복잡한 작업을 간소화합니다.
  • 성능: 실시간 객체 감지 및 다양한 비전 AI 애플리케이션에 최적화되어 있습니다.
  • 사용자 지정: 사용자 지정 모델, 손실 함수 및 데이터 로더에 맞게 쉽게 확장할 수 있습니다.
  • 모듈화: 전체 파이프라인에 영향을 주지 않고 구성 요소를 독립적으로 수정할 수 있습니다.
  • 통합: ML 에코시스템에서 널리 사용되는 프레임워크 및 도구와 원활하게 작동합니다.

주요 기능을 살펴보고 YOLO 기능에 대해 자세히 알아보세요. Ultralytics YOLO 페이지를 참조하세요.

비표준 모델에 Ultralytics YOLO 탐지 트레이너를 사용할 수 있나요?

예, 예 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 일 전

댓글