【ONNX / PyTorch】機械学習モデルをグラフィカルに可視化するnetronを使ってみた
はじめに
機械学習モデルの可視化できるライブラリであるnetronを使用してみました.
netronでは,ONNX,Keras, TensorFlow Liteなどのモデルの可視化を行うことができます.
また実験的な段階ですが,PyTorchやTensorFlow,scikit-learnなどのサポートもしています.
今回は,ONNXモデルとPyTorchモデルの可視化をしてみましたので,その使い方についてこちらにメモを残しておきます.
その他の可視化ライブラリについても,過去に記事をまとめていますので,ご参照いただければと思います.
netronとは
netronとは,機械学習モデルをグラフィカルに可視化できるライブラリです.
以下のライブラリのモデルの可視化を行うことができます.
- ONNX
- TensorFlow Lite
- Caffe, Keras
- Darknet
- PaddlePaddle
- ncnn, MNN
- Core ML
- RKNN
- MXNet
- MindSpore Lite
- TNN, Barracuda
- Tengine
- CNTK
- TensorFlow.js
- Caffe2
- UFF
また実験的な段階ですが,PyTorchやTensorFlow,scikit-learnなどのサポートもしています.
今回は,ONNXモデルとPyTorchのモデルの可視化を行ってみました.
インストール方法
netronはブラウザで使用することができるため,基本的にインストール不要です.
インストールして使用したい場合は,pip
などでインストール可能です.
インストール方法の詳細はこちらをご確認ください.
使い方
上記のサイトにアクセスし,Open Model...
をクリックして,対象のモデルの重みファイルを追加するだけです.
ONNXモデルの可視化
まずはONNXモデルを可視化してみます.
重みファイルはnetronのREADME.md
に掲載されているSqueezeNet
を使用しました.(リンク)
モデルを可視化した結果は以下の通りです.
このようにグラフィカルにモデルを可視化することができました!
各レイヤーのパラメータや,計算の処理順などが一眼でわかります.
また各レイヤをクリックすることで,レイヤの属性や入力などを確認することも可能です.
PyTorhモデルの可視化
続いてPyTorchのモデルを可視化してみます.
重みファイルはtorchvisionで提供されているResNet18を使用しました.(リンク)
モデルの可視化結果は以下の通りです.
やはり実験段階なだけあって,PyTorchのモデルはあまり綺麗に可視化できませんでした.
特にskip connectionなど,レイヤを結ぶのパスがないのが非常に見にくいです.
PyTorchのモデルを可視化するには,一度ONNXモデルに変換する必要がありそうです.
PyTorchのモデルをONNXに変換してから可視化
それでは,PyTorchのモデルをONNXモデルに変換して,可視化してみます.
以下は変換のためのコードです.(参考)
import torch from torchvision.models import resnet18 dummy_input = torch.randn(2, 3, 224, 224) model = resnet18(pretrained=True) input_names = [] output_names = [] torch.onnx.export( model, dummy_input, "resnet18.onnx", verbose=True, input_names=input_names, output_names=output_names )
こちらを実行し,作成したresnet18.onnx
ファイルを,netronで可視化してみます.
PyTorchモデルを可視化した時とは違い,ちゃんとレイヤのパスが可視化されていることが確認できました!
やや不便ではありますが,PyTorchのモデルを可視化する際は,ONNXモデルに変換するのが良さそうです.
PyTorchモデルの可視化に関しては,過去に別のライブラリを用いた記事をまとめているので,良ければ以下もご参照ください.
まとめ
機械学習モデルの可視化できるライブラリであるnetronを使用してみました.
PyTorchのモデルを可視化するのはやや不便ではありますが,
ONNXのモデルなどの可視化は非常に見やすく,便利だなと感じました.
参考
- lutzroeder/netron: Visualizer for neural network, deep learning, and machine learning models
- torch.onnx — PyTorch 1.10.1 documentation