Python版OpenCVでONNX形式の学習済みモデルをロードする方法をソースコード付きでまとめました。
【OpenCV4】ONNX形式の学習済みモデルをロード
ONNX(Open Neural Network eXchange:オニキス)とは、様々な機械学習フレームワークの間で、ディープラーニングの学習モデルを効率的にやり取りするための共通フォーマットです。
例えばKerasで作成した学習済みモデルをONNX形式で保存すれば、OpenCVなど他のフレームワークでもそのまま利用できます。
OpenCVではバージョン4から「cv2.dnn.readNetFromONNX()」でONNXをロードできるようになりました。
サンプルコード
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt import cv2 import sklearn from sklearn import datasets, model_selection, svm, metrics # データセットのロード mnist = datasets.fetch_mldata('MNIST original', data_home='data/src/download/') N = np.arange(len(mnist['data'])) n = np.random.choice(N, 5, replace=False); for i in n: img = mnist['data'].reshape((28, 28)) img = img / 255. img = img.reshape((-1, 1, 28, 28)) # ONNX形式の学習済みモデルをロード onnx = cv2.dnn.readNetFromONNX('model.onnx') # 入力 onnx.setInput(img) # 検証 history = onnx.forward() print('予測: ', np.argmax(history)) print('正解: ', int(mnist['target'])) ''' 予測:4 正解:4 '''
model.onnxは「https://github.com/onnx/models/tree/master/mnist」から入手できます。
NN によって予想された結果と、正解が出力されます。
【Python版OpenCV超入門】使い方とサンプルコードを解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
コメント