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

Model Weights

モデルの重みは、ネットワークの入力を予測に変換する学習済みの数値です。学習による重みの決定方法、重みファイル、圧縮について解説します。

モデルの重みとは、ニューラルネットワーク内にある学習可能な数値で、入力を予測値に変換します。各重みは、2つのユニット間を流れる信号をスケーリングするか、畳み込みフィルターの1つの値を形成します。重み全体が連携して、モデルがトレーニングデータから学習した内容をすべて表現します。この用語は、「事前学習済み重み」や「オープンウェイトモデル」のように、バイアスや正規化値を含むモデルの学習済みパラメーター全体を指す意味で、広く使われることがあります。重みの数には桁違いの幅があります。ResNet-50のパラメーター数は約2,560万個ですが、大規模言語モデルでは数十億個に達します。

トレーニングによる重みの設定#

新しいネットワークは、He初期化などの手法で生成した小さなランダム重みから始まります。これらの手法では、各レイヤーのサイズに合わせてランダム値をスケーリングし、多数のレイヤーを通過しても信号が消失したり爆発したりしないようにします。この時点で、モデルの予測はノイズにすぎません。トレーニングでは、データの各バッチについて、次のサイクルを繰り返します。フォワードパスで予測を生成し、損失関数で予測誤差を評価し、誤差逆伝播で各重みが誤差にどれだけ寄与したかを計算し、最適化アルゴリズムが各重みを調整して誤差を減らします。最適化アルゴリズムには、確率的勾配降下法(SGD)やAdamオプティマイザーなどがあります。こうした小さな更新を何百万回も繰り返すと、正確な予測を生み出す値に重みが落ち着き、推論中は固定されます。

  • バイアス: y = Wx + bを計算するレイヤーでは、重みWが入力に乗算され、バイアスbがオフセットとして加算されます。これにより、ユニットの活性化関数のしきい値を移動でき、すべての入力がゼロの場合でもゼロ以外の出力を生成できます。どちらもトレーニング中に学習されます。
  • ハイパーパラメーター: 学習率やバッチサイズなど、トレーニング前に設定し、重みの学習方法を制御する値です。勾配降下法では更新されません。
  • 活性化: 特定の入力に対してネットワークが計算する中間出力です。重みはすべての入力で同じですが、活性化は入力ごとに再計算されます。
  • Weights & Biases: 2種類のパラメーターにちなんで名付けられた、実験追跡プラットフォームです。

重みの保存と読み込み#

学習済みの重みはファイルに保存され、再読み込みして推論に使用したり、共有したり、転移学習の開始点として使用したりできます。PyTorchでは、モデルの重みはstate_dictに格納され、通常は .ptファイルに保存されます。これらのファイルはPythonのpickle形式を使用します。読み込み時にコードが実行される可能性があるため、PyTorch 2.6以降ではtorch.loadの既定値がweights_only=Trueになっています。safetensors形式は生のテンソルのみを格納するため、コード実行のリスクがなく、メモリーマップによる高速な読み込みも可能です。また、Hugging Faceの標準形式です。ONNXファイルは、重みと計算グラフをまとめて格納し、他のランタイムでモデルを実行できるようにします。

Ultralytics YOLO26の.ptチェックポイントには、ステップごとのノイズを平滑化する重みの指数移動平均(EMA)に加えて、トレーニング引数とエポックごとの結果が保存されます。また、各トレーニング実行では、weightsフォルダーにbest.ptとlast.ptが書き込まれます。学習済み重みの有無で同じアーキテクチャを読み込むと、モデルの知識がどこにあるかがわかります。

from ultralytics import YOLO

# Same YOLO26n architecture with two different sets of weights
trained = YOLO("yolo26n.pt")  # weights learned on COCO
untrained = YOLO("yolo26n.yaml")  # randomly initialized weights

for name, model in [("trained", trained), ("untrained", untrained)]:
    results = model("https://ultralytics.com/images/bus.jpg")
    print(f"{name}: {len(results[0].boxes)} objects detected")

学習済み重みを使うと画像内のバスと人々を検出できますが、同一のネットワークをランダムに初期化したものでは何も検出されません。

デプロイに向けた重みの圧縮#

重みの精度は、モデルのファイルサイズとメモリーフットプリントを決めるため、エッジAIデバイスでは特に重要です。モデル量子化では、重みをより低い精度で格納します。32ビット浮動小数点数から8ビット整数に移行すると、重みのサイズは4分の1になり、整数演算に対応するハードウェアでは推論も高速化します。プルーニングでは出力への寄与が小さい重みを取り除き、知識蒸留では大きなモデルの動作を模倣するよう小さなモデルをトレーニングします。規模の目安として、70億パラメーターの言語モデルでは、32ビットの重みに約28 GB、16ビットでは14 GB、4ビットでは3.5 GBが必要です。

ソリューションを見る

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

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

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の未来を一緒に築きましょう!

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