コンテンツへスキップ

コールバック

コールバック

Ultralytics フレームワークは、train、val、export、predictモードの戦略的な段階でのエントリーポイントとしてコールバックをサポートしている。各コールバックは Trainer, Validatorあるいは Predictor オブジェクトのすべてのプロパティは、ド キュメントのReferenceセクションに記載されている。これらのオブジェクトのすべてのプロパティは、docsのReferenceセクションにあります。



見るんだ: MasteringUltralytics YOLOv8 : コールバック

予測で追加情報を返す

この例では、各結果オブジェクトで元のフレームを返したい。その方法は以下の通りだ。

from ultralytics import YOLO


def on_predict_batch_end(predictor):
    """Handle prediction batch end by combining results with corresponding frames; modifies predictor results."""
    _, image, _, _ = predictor.batch

    # Ensure that image is a list
    image = image if isinstance(image, list) else [image]

    # Combine the prediction results with the corresponding frames
    predictor.results = zip(predictor.results, image)


# Create a YOLO model instance
model = YOLO("yolov8n.pt")

# Add the custom callback to the model
model.add_callback("on_predict_batch_end", on_predict_batch_end)

# Iterate through the results and frames
for result, frame in model.predict():  # or model.track()
    pass

すべてのコールバック

以下はサポートされているすべてのコールバックです。詳細はコールバックのソースコードを参照してください。

トレーナー・コールバック

コールバック 説明
on_pretrain_routine_start プレトレーニング・ルーティンの開始時にトリガーされる
on_pretrain_routine_end プレトレーニング・ルーティンの終了時にトリガーされる
on_train_start トレーニング開始時に発動
on_train_epoch_start 各トレーニングエポックの開始時にトリガーされる。
on_train_batch_start 各トレーニングバッチの開始時にトリガーされる。
optimizer_step オプティマイザー・ステップ中にトリガーされる
on_before_zero_grad 勾配がゼロになる前にトリガーされる
on_train_batch_end 各トレーニングバッチの終了時にトリガーされる。
on_train_epoch_end 各トレーニングエポックの終了時にトリガーされる
on_fit_epoch_end 各フィットエポックの終了時にトリガーされる
on_model_save モデルの保存時にトリガーされる
on_train_end トレーニング終了時に発動
on_params_update モデルのパラメータが更新されたときにトリガーされる
teardown トレーニングプロセスのクリーンアップ時にトリガーされる

バリデータのコールバック

コールバック 説明
on_val_start 検証開始時にトリガーされる
on_val_batch_start 各検証バッチの開始時にトリガーされる。
on_val_batch_end 各検証バッチの終了時にトリガーされる。
on_val_end 検証終了時に発動

予測コールバック

コールバック 説明
on_predict_start 予測プロセス開始時にトリガーされる
on_predict_batch_start 各予測バッチの開始時にトリガーされる
on_predict_postprocess_end 予測後処理の終了時にトリガーされる
on_predict_batch_end 各予測バッチの終了時にトリガーされる
on_predict_end 予測プロセス終了時にトリガーされる

エクスポート・コールバック

コールバック 説明
on_export_start 輸出プロセス開始時にトリガーされる
on_export_end 輸出プロセス終了時にトリガーされる

よくあるご質問

Ultralytics コールバックとは何ですか?

Ultralytics コールバック は、トレーニング、検証、エクスポート、予測などのモデル操作の主要な段階でトリガーされる特殊なエントリポイントです。これらのコールバックは、プロセスの特定のポイントでカスタム機能を可能にし、ワークフローの拡張や修正を可能にします。各コールバックは Trainer, Validatorあるいは Predictor オブジェクトの詳細なプロパティについては、これらのオブジェクトのプロパティを参照してください。これらのオブジェクトの詳細なプロパティについては 参照セクション.

コールバックを使うには、関数を定義し、それをモデルに対して add_callback メソッドを使用します。以下は、予測中に追加情報を返す方法の例である:

from ultralytics import YOLO


def on_predict_batch_end(predictor):
    """Handle prediction batch end by combining results with corresponding frames; modifies predictor results."""
    _, image, _, _ = predictor.batch
    image = image if isinstance(image, list) else [image]
    predictor.results = zip(predictor.results, image)


model = YOLO("yolov8n.pt")
model.add_callback("on_predict_batch_end", on_predict_batch_end)
for result, frame in model.predict():
    pass

コールバックを使ってUltralytics トレーニング・ルーチンをカスタマイズするには?

コールバックを使用してUltralytics トレーニングルーチンをカスタマイズするには、トレーニングプロセスの特定の段階でロジックを注入します。Ultralytics YOLO には、次のようなさまざまなトレーニングコールバックが用意されています。 on_train_start, on_train_endそして on_train_batch_end.これらによって、カスタムのメトリクス、処理、またはロギングを追加できます。

以下は、各トレーニング・エポックの終了時に追加のメトリクスを記録する方法の例です:

from ultralytics import YOLO


def on_train_epoch_end(trainer):
    """Custom logic for additional metrics logging at the end of each training epoch."""
    additional_metric = compute_additional_metric(trainer)
    trainer.log({"additional_metric": additional_metric})


model = YOLO("yolov8n.pt")
model.add_callback("on_train_epoch_end", on_train_epoch_end)
model.train(data="coco.yaml", epochs=10)

トレーニングコールバックの効果的な使用方法については、トレーニングガイドを参照してください。

Ultralytics YOLO でバリデーション中にコールバックを使用するのはなぜですか?

使用 検証中のコールバック Ultralytics YOLO では、カスタム処理、ロギング、メトリクス計算を可能にすることで、モデル評価を強化することができます。次のようなコールバックがあります。 on_val_start, on_val_batch_endそして on_val_end は、カスタムロジックを注入するためのエントリーポイントを提供し、詳細かつ包括的な検証プロセスを保証します。

たとえば、追加の検証メトリクスを記録したり、中間結果を保存してさらに分析したい場合があります。以下は、検証の最後にカスタム メトリックを記録する方法の例です:

from ultralytics import YOLO


def on_val_end(validator):
    """Log custom metrics at end of validation."""
    custom_metric = compute_custom_metric(validator)
    validator.log({"custom_metric": custom_metric})


model = YOLO("yolov8n.pt")
model.add_callback("on_val_end", on_val_end)
model.val(data="coco.yaml")

コールバックをバリデーションプロセスに組み込む際の詳細については、バリデーションガイドをご覧ください。

Ultralytics YOLO の予測モードにカスタム・コールバックをアタッチするには?

カスタム・コールバックを 予測モード Ultralytics YOLO で、コールバック関数を定義し、それを予測プロセスに登録します。一般的な予測コールバックは以下の通りです。 on_predict_start, on_predict_batch_endそして on_predict_end.これらにより、予測出力の修正や、データロギングや結果変換のような追加機能の統合が可能になる。

以下は、カスタムコールバックを使用して予測ログを記録する例です:

from ultralytics import YOLO


def on_predict_end(predictor):
    """Log predictions at the end of prediction."""
    for result in predictor.results:
        log_prediction(result)


model = YOLO("yolov8n.pt")
model.add_callback("on_predict_end", on_predict_end)
results = model.predict(source="image.jpg")

より包括的な使用方法については、詳細な手順と追加のカスタマイズオプションを含む予測ガイドを参照してください。

Ultralytics YOLO でコールバックを使用する実際的な例は?

Ultralytics YOLO は、トレーニング、検証、予測のような様々なフェーズを強化し、カスタマイズするために、コールバックの様々な実用的な実装をサポートしています。実用的な例をいくつか挙げる:

  1. カスタムメトリクスのログ:トレーニングや検証エポックの終了時など、さまざまな段階で追加のメトリクスをログに記録します。
  2. データ増強:予測やトレーニングのバッチ中にカスタムデータ変換や補強を実装します。
  3. 中間結果:さらなる分析や視覚化のために、予測やフレームなどの中間結果を保存します。

例を使用した予測中に、予測結果とフレームを組み合わせる。 on_predict_batch_end:

from ultralytics import YOLO


def on_predict_batch_end(predictor):
    """Combine prediction results with frames."""
    _, image, _, _ = predictor.batch
    image = image if isinstance(image, list) else [image]
    predictor.results = zip(predictor.results, image)


model = YOLO("yolov8n.pt")
model.add_callback("on_predict_batch_end", on_predict_batch_end)
for result, frame in model.predict():
    pass

より多くのオプションや例を見つけるには、Complete Callback Referenceを参照してください。



作成日:2023-11-12 更新日:2024-07-04
作成者:glenn-jocher(9),RizwanMunawar(1),Laughing-q(1)

コメント