ファイルを知る、使いこなす。
.onnx

ONNX AIモデル

AI・機械学習

ONNXは機械学習モデルの交換形式です。推論には入力名・形状・データ型、演算の版、実行環境の対応が必要です。重みが別ファイルの場合もあるため、ONNX本体だけで完結するとは限りません。

主な用途
機械学習モデルの計算グラフ・重みの交換
中身の種類
バイナリデータ
目次・よくある質問・根拠資料を見る

内容の最終確認: · 編集:Kai

開き方・操作手順

使っている環境や目的の項目を開いて、手順を確認してください。

まず用途と配布セットを確認

グラフと外部重み、入力仕様を確認します。

  1. 配布元の説明と利用条件を読み、作成ソフト・版・用途を記録します。
  2. ONNX本体のほかにdata等の外部重みが同梱されているか、配布フォルダーを確認します。
  3. 原本を保管し、必要な設定・関連ファイルをコピーの作業フォルダーに揃えます。
対応環境で構造を確認

読み込み成功と推論成功は分けて確認します。

  1. 対応するONNXツールでモデルのIR版・opset・入力出力を調べます。
  2. 外部重みの相対パスを維持し、検証ツールが必要ファイルを読めるか確認します。
  3. ONNX Runtimeのセッションで入力名・型・形状と利用可能なプロバイダーを確認します。
既知の入力で動作を確認

入力仕様を合わせ、元の結果と照合します。

  1. 画像のRGB順、正規化、軸順、バッチ次元を作成元の仕様に合わせます。
  2. 同じテスト入力を元モデルとONNXへ渡し、出力名と値を比較します。
  3. CPUで確認した後、必要なら指定したGPUプロバイダーでも結果とログを調べます。

操作名・対応状況はアプリ・OS・版によって異なります。変更する前に原本を残してください。

開けないとき:症状から確認

  • 入力の形が違う:名前、型、バッチ・画像の並び、前処理をモデルの説明と照合します。
  • 演算が未対応:opsetや独自演算とランタイムの対応を確認します。
  • 重みが見つからない:外部データのファイル名と本体からの相対位置を確認します。
  • 入力shapeが違う:NCHW/NHWCやバッチ次元を確認し、数字だけを合わせて内容を並べ替えないまま渡さないようにします。
  • GPU指定でも遅い:実際のプロバイダー選択や未対応演算のCPU処理をログで確認します。
  • モデルを移動して失敗:外部重みも相対構造を保ってコピーします。

学習モデル → ONNX

  1. 元フレームワークの対応するエクスポート機能を使い、入力例と対象opsetを確認します。
  2. 元モデルとONNXの出力を同じ入力で比較し、精度・動的形状・必要な外部データを確認します。
  3. 書き出し前後で同じ入力を使い、出力の形状・値・処理時間を比較します。モデル定義と変換条件も保存します。

ONNXへ改名しても変換できません。全モデル・演算のエクスポートを保証する形式ではありません。

正しい入力を作るための確認

入力名、数値型、次元、軸の順番を一組の仕様として扱います。画像ならサイズだけでなく画素範囲や色順も確認します。

出力が数値で返るだけでは正しいとは限りません。ラベルの並びと後処理も合わせ、既知のケースで照合します。

この手順の根拠:ONNX Project · ONNX Concepts / ONNX Project · External Data / ONNX Runtime Project · Python API overview

単一ファイルと外部データの違い

ONNXは大きなテンソルを別ファイルへ置く場合があります。本体だけ渡すとグラフ情報はあっても重みが不足します。

受け渡し時にファイル一覧、実行環境、参照出力を付けます。変換先のopsetや追加演算が受け手のランタイムに対応するか確認します。

この手順の根拠:ONNX Project · ONNX Concepts / ONNX Project · External Data / ONNX Runtime Project · Python API overview

関連形式との違い

関連形式との違い
形式主な役割確認する点
ONNXグラフ・推論の交換外部重みとopsetを確認
PTPyTorch保存物モデル定義や保存方式を確認
ENGINETensorRTの最適化成果物GPU・版・ビルド条件に依存

取り扱いと安全性

モデルの提供元・ライセンス・必要メモリーを確認します。不明な独自演算ライブラリを読み込まず、更新済みの環境で扱います。

よくある質問

ONNXだけ送れば動く?

外部重みや前処理、対応環境が必要な場合があります。

opsetとは?

モデルが使う演算仕様の版です。実行環境の対応を確認します。

SAFETENSORSを改名すればONNX?

計算グラフ等の構造が違うため変換になりません。

動的な入力なら何サイズでも使える?

未指定の次元でも演算やエクスポート条件の制約があります。想定サイズを変えて確認します。

検証が通れば元モデルと同じ精度?

構造検証と推論精度は別です。前処理を揃えたテストで結果を比較します。

形式の基本情報:正式名称・MIME type・管理団体
名称
Open Neural Network Exchange
管理・仕様
ONNX project
MIME type
作成元・配信元の指定による。拡張子だけでMIME typeは確定できません。

公式・一次情報

  • プロジェクト公式ONNX Concepts

    モデルのグラフ・演算・入力出力を説明しています。

    ONNX Project · リンク確認:
  • プロジェクト公式External Data

    ONNXが外部の重みファイルを参照する場合の扱いです。

    ONNX Project · リンク確認:
  • 公式資料Python API overview

    セッションの入力情報と実行プロバイダーを確認できます。

    ONNX Runtime Project · リンク確認: