ONNXグラフによる画像処理実装を検証する実験用リポジトリです。
各処理はONNXエクスポートしたものを同梱しています。
エクスポートされたONNXを用いた推論デモは以下のページから確認できます。
※Pythonの推論デモは後述
また、以下のリポジトリでonnx-cv-graphを用いたノードエディターによる画像処理が可能です。
作成したグラフを単一ONNXとしてエクスポートする機能も試験的に実装しています。
- リポジトリURL:https://github.com/Kazuhito00/onnx-cv-graph-node-editor
- Webデモ:https://kazuhito00.github.io/onnx-cv-graph-node-editor

以下の特徴があります。
- 画像処理をONNXオペレータのみで実現
- 各処理はONNXファイルにエクスポートしてリポジトリに同梱
- 複数処理を直列に結合して一つのONNXファイルとして出力可能
以下の検証を目的としています。
- ONNXオペレータのみで実現可能な画像処理の検証
- ONNX化によるクロスプラットフォーム・クロス言語での再現性確保
- ONNX RuntimeによるGPU/WebGL/TensorRT/DirectML等へのオフロード活用
- 複数画像処理を1つのONNXモデルに統合し、単一モデルとして配布
Python 3.10 or later
numpy 2.4.2 or later
onnx 1.20.1 or later
onnxruntime 1.24.2 or later
opencv-python 4.13.0.92 or later
pyvis 0.3.2 or later
pytest 9.0.2 or later
scipy 1.17.1 or later
# リポジトリクローン
git clone https://github.com/Kazuhito00/onnx-cv-graph
cd onnx-cv-graph
# Python パッケージインストール
pip install -r requirements.txtすべてのONNXファイルをエクスポートする場合は以下のスクリプトを実行してください。
テスト済みのONNXファイルはリポジトリに同梱しているため、推論だけ試す方は以下手順は不要です。
python src/export_all.py
python -m pytest tests/ -vテスト方針はTEST_DESIGN.mdを参照してください。
実装済み・実装候補の画像処理はMODELS.mdに一覧化しています。
グレースケール処理
python example_grayscale.pyChainOpで単一ONNX化したグレースケール処理
python example_grayscale_chainop.pypython -m http.server 8080
# http://localhost:8080/example_app.htmlREADME.md # README(日本語)
README_EN.md # README(英語)
MODELS.md # 実装済み・実装候補 画像処理一覧
TEST_DESIGN.md # テスト方針
requirements.txt # Python依存パッケージ
example_app.html # ONNX Runtime Webデモ
src/
base.py # OnnxGraphOp抽象クラス
chain.py # ChainOp(複数opの直列合成用クラス)
export_all.py # モデル一括エクスポート + models_meta.json生成
onnx_cv_graph/ # 各グラフ実装
models/ # ONNXファイル格納先
tests/ # pytest用テストケース
assets/ # サンプル画像・グラフ可視化HTML
高橋かずひと(https://x.com/KzhtTkhs)
onnx-cv-graph is under Apache-2.0 license.