Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Callback

コールバックとは、早期停止、チェックポイント、ログ記録などを追加するために、各エポックの終了時など決められたイベントで学習ループが呼び出す関数です。

コールバックとは、別のコードに渡す関数で、特定のイベントが発生したときにそのコードから呼び出されます。ユーザーインターフェースのイベントハンドラー、非同期コードの完了関数、ソート処理に渡す比較関数は、いずれもコールバックです。ディープラーニングフレームワークでは、訓練の開始、各バッチやエポックの終了、検証の完了などがイベントにあたります。イベントに登録されたコールバックは、そのイベントが発生したときにトレーナーの状態へアクセスできるため、ループ自体を編集せずに、オーバーフィッティングを防ぐ早期停止、チェックポイントの保存、学習率スケジュール、ログ記録などを追加できます。

コールバックが訓練に組み込まれる仕組み#

フレームワークは、名前付きイベントごとにコールバックのリストを保持し、ループがそのイベントに達すると、トレーナーまたはモデルのオブジェクトを渡して、登録済みのすべてのコールバックを呼び出します。 Kerasではkeras.callbacksモジュールにまとめられ、PyTorch LightningではCallbackのサブクラスにまとめられます。Hugging Face TransformersではTrainerCallbackにまとめられます。ライブラリによってメソッド名は異なりますが、イベントが発生するのは同じループ内です。

コールバックはループ内で実行されるため、ループに変更を加えることもできます。停止フラグを設定するコールバックは現在のエポックの終了後に訓練を停止し、オプティマイザーを変更するコールバックは、その後のすべてのステップに影響します。同じイベントに対するコールバックは登録順に実行され、バッチ単位のコールバックは1エポックで数千回実行されるため、ファイルのアップロードなど時間のかかる処理はエポック単位のイベントに適しています。分散訓練では各プロセスがループとコールバックの独自のコピーを実行するため、ログ記録やチェックポイント保存のコールバックは通常、同じファイルを複数のGPUから書き込まないよう、メインプロセスであるrank 0だけで動作します。

一般的な訓練コールバック#

  • 早期停止:検証メトリクスがpatienceと呼ばれる所定のエポック数にわたって改善しない場合、訓練を停止します。これにより、オーバーフィッティングを抑え、計算資源を節約できます。KerasのEarlyStoppingは、停止前に確認した最良の重みを復元することもできます。
  • チェックポイント保存:モデルを各エポックで保存するか、監視対象のメトリクスが改善したときに保存するため、最良の重みを保持でき、実行がクラッシュした場合も再開できます。KerasのBackupAndRestoreコールバックは、保存済みの状態を使って中断した実行を自動的に再開します。
  • 学習率スケジューリング:KerasのReduceLROnPlateauのように、メトリクスが頭打ちになったときに学習率を下げるか、コサイン減衰などの固定スケジュールに従います。
  • 実験管理:各エポックの後に、損失、メトリクス、サンプル画像をTensorBoard、MLflow、Weights & Biasesなどのツールに送信します。
  • ハイパーパラメーター調整: 各エポックのスコアをRay Tuneなどのチューナーに報告します。チューナーのスケジューラーは、見込みのない試行を早期に停止します。

カスタムコールバックの作成#

Ultralytics YOLOは、訓練、検証、予測、エクスポートの実行中に、on_train_epoch_endやon_fit_epoch_endなどの名前付きイベントを発生させます。MLflow、Comet、ClearML、TensorBoard、Ultralytics Platformとの独自の連携機能は、これらのイベントに対するコールバックとして登録されています。このコールバックは、各エポック後に検証のmAP50-95を読み取り、目標に到達した時点でYOLO26の実行を停止します。

from ultralytics import YOLO


def stop_at_target(trainer):
    """Stop training once validation mAP50-95 reaches 0.6."""
    score = trainer.metrics["metrics/mAP50-95(B)"]
    print(f"Epoch {trainer.epoch + 1}: mAP50-95 {score:.3f}")
    if score >= 0.6:
        trainer.stop = True  # the trainer ends the run after this epoch


model = YOLO("yolo26n.pt")
model.add_callback("on_fit_epoch_end", stop_at_target)  # runs after each epoch's validation
model.train(data="coco8.yaml", epochs=20)

on_fit_epoch_endイベントは、エポックの訓練と検証が終わった後に発生するため、trainer.metricsにはそのエポックのスコアがすでに格納されています。trainer.stopを設定すると、トレーナーはエポックループを終了し、通常どおり最良の重みで最終検証を実行して結果を保存します。これは、組み込みのpatience上限に達した場合と同じ動作です。

コールバックとフックの違い#

この2つの用語は、同じものを指すことがよくあります。PyTorch Lightningでは、コールバックが実装するメソッドをフックと呼びます。PyTorch自体でregister_forward_hookまたはregister_full_backward_hookを使って登録するモジュールフックは、訓練ループのイベントではなく、1つのレイヤーの順伝播または逆伝播に紐付けられます。特徴マップの可視化のための読み取りや、誤差逆伝播中の勾配の確認・変更に使われます。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう