コンテンツへスキップ

高度なカスタマイズ

Ultralytics YOLO コマンドライン・インターフェイスもPython インターフェイスも、ベースとなるエンジン・エクゼキュータに対するハイレベルな抽象化に過ぎない。トレーナー・エンジンを見てみよう。



見るんだ: MasteringUltralytics YOLO : 高度なカスタマイズ

ベーストレーナー

BaseTrainer には、一般的な定型トレーニングルーチンが含まれています。正しい書式に従う限り、必要な関数や操作をオーバーライドすることで、どのようなタスクにもカスタマイズすることができます。例えば、これらの関数をオーバーライドするだけで、独自のカスタムモデルやデータローダをサポートすることができます:

  • get_model(cfg, weights) - 学習するモデルを構築する関数
  • get_dataloader() - データ・ローダーをビルドする関数 詳細とソース・コードは以下を参照。 BaseTrainer 参考

検出トレーナー

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 10回ごとにモデルをGoogle ドライブにアップロードします。 epochs その方法はこうだ:
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をご参照ください。 コールバック・ガイド.

Ultralytics YOLO11のBaseTrainerの主なコンポーネントは何ですか?

について 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 の両方のインターフェイスは、複雑なタスクを簡素化します。
  • パフォーマンスリアルタイムの物体検出や様々な視覚AIアプリケーションに最適化されています。
  • カスタマイズ:カスタムモデル、損失関数、データローダを簡単に拡張可能。

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のドキュメントを参照してください。

📅作成 1年前 ✏️更新:1ヶ月前

コメント