Model Quantization
モデル量子化(model quantization)がどのようにエッジ AI 用に Ultralytics YOLO26 を最適化するかを学びます。メモリを削減しレイテンシを下げ、高速な推論のために INT8 モデルをエクスポートする方法を発見してください。
モデル量子化は、ディープラーニングモデルの実行における計算コストとメモリコストを削減するために使用される洗練されたモデル最適化手法です。標準的なトレーニングワークフローでは、ニューラルネットワークは通常、32ビット浮動小数点数(FP32)を使用してパラメータ(重みとバイアス)および活性化マップを保存します。この高精度はトレーニング中の正確な計算を保証しますが、推論においては多くの場合不要です。量子化はこれらの値を16ビット浮動小数点数(FP16)や8ビット整数(INT8)などの低精度形式に変換し、精度を大幅に損なうことなくモデルサイズを効果的に縮小し、実行速度を高速化します。
Link to this section量子化が重要な理由#
The primary driver for quantization is the need to deploy powerful AI on resource-constrained hardware. As computer vision models like YOLO26 become more complex, their computational demands increase. Quantization addresses three critical bottlenecks:
- メモリフットプリント: 重みのビット幅を(例えば32ビットから8ビットへ)削減することで、モデルのストレージ要件が最大4倍削減されます。これは、アプリケーションサイズが制限されるモバイルアプリにとって不可欠です。
- 推論レイテンシ: 低精度演算は計算コストが低くなります。最新のプロセッサ、特に専用のニューラルプロセッシングユニット(NPU)を備えたプロセッサは、FP32よりもはるかに高速にINT8演算を実行でき、推論レイテンシを大幅に短縮します。
- 消費電力: メモリを介したデータ転送量が減り、算術演算が単純化されるため、エネルギー消費が抑えられ、携帯型デバイスや自動運転車のバッテリー寿命が延びます。
Link to this section関連概念との比較#
量子化と他の最適化手法を区別することは重要です。これらはそれぞれ異なる方法でモデルを修正するためです。
- 量子化とプルーニングの比較: 量子化はパラメータのビット幅を減らすことでファイルサイズを削減しますが、モデルプルーニングは不要な接続(重み)を完全に削除してスパースなネットワークを作成します。プルーニングがモデルの構造を変化させるのに対し、量子化はデータの表現を変化させます。
- 量子化と知識蒸留の比較: 知識蒸留は、小さな「生徒」モデルが大きな「教師」モデルの挙動を模倣するように学習させるトレーニング手法です。量子化は、蒸留後にエッジAIのパフォーマンスをさらに向上させるために、生徒モデルに対して適用されることがよくあります。
Link to this section実社会での応用#
量子化により、効率性が最優先されるさまざまな業界においてコンピュータビジョンとAIの活用が可能になります。
-
自動運転システム: 自動車業界では、自動運転車はカメラやLiDARからの視覚データをリアルタイムで処理する必要があります。NVIDIA TensorRTエンジン上にデプロイされた量子化モデルにより、車両はミリ秒単位のレイテンシで歩行者や障害物を検知し、乗客の安全を確保できます。
-
スマート農業: マルチスペクトルカメラを搭載したドローンは、量子化された物体検出モデルを使用して、作物の病気の特定や成長段階の監視を行います。これらのモデルをドローンの組み込みシステム上でローカルに実行することで、遠隔地の農場における信頼性の低いセルラー通信の必要性がなくなります。
Link to this sectionUltralyticsを使用した量子化の実装#
Ultralyticsライブラリはエクスポートプロセスを簡素化しており、開発者は最先端のYOLO26のようなモデルを量子化された形式に変換できます。Ultralytics Platformも、これらのデプロイメントをシームレスに管理するためのツールを提供しています。
以下の例は、INT8量子化を有効にしてモデルをTFLiteにエクスポートする方法を示しています。このプロセスには、量子化された値の最適なダイナミックレンジを決定するためにモデルがサンプルデータを観測するキャリブレーションステップが含まれます。
from ultralytics import YOLO
# Load a standard YOLO26 model
model = YOLO("yolo26n.pt")
# Export to TFLite format with INT8 quantization
# The 'int8' argument triggers Post-Training Quantization
# 'data' provides the calibration dataset needed for mapping values
model.export(format="tflite", int8=True, data="coco8.yaml")最適化されたモデルは、多くの場合ONNXのような相互運用可能な標準や、OpenVINOのような高性能な推論エンジンを使用してデプロイされ、多様なハードウェアエコシステム間での幅広い互換性を確保します。






