高度なカスタマイズ
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のドキュメントを参照してください。