モデル作って学習して推論するだけなら、Keras がいいでしょう!とツイートしてきましたが。。。
Keras2ONNXを使えば、もっと楽になりそうです。
コードを引用しますが、こんな感じです。
import numpy as np from keras.preprocessing import image from keras.applications.resnet50 import preprocess_input import keras2onnx import onnxruntime # image preprocessing img_path = 'elephant.jpg' # make sure the image is in img_path img_size = 224 img = image.load_img(img_path, target_size=(img_size, img_size)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) # load keras model from keras.applications.resnet50 import ResNet50 model = ResNet50(include_top=True, weights='imagenet') # convert to onnx model onnx_model = keras2onnx.convert_keras(model, model.name) # runtime prediction content = onnx_model.SerializeToString() sess = onnxruntime.InferenceSession(content) x = x if isinstance(x, list) else [x] feed = dict([(input.name, x[n]) for n, input in enumerate(sess.get_inputs())]) pred_onnx = sess.run(None, feed)
・イメージの前処理 ・モデル(Keras)のロード ・ONNXモデルに変換 ・ONNX Runtimeを使って、ONNXモデルにて推論
Kerasには下記のようなモデルがあるので、上記の ResNet50 の部分を変えるだけで、OKですね。
・Xception ・VGG16 ・VGG19 ・ResNet50 ・InceptionV3 ・InceptionResNetV2 ・MobileNet ・MobileNetV2 ・DenseNet121 ・DenseNet169 ・DenseNet201 ・NASNetMobile ・NASNetLarge.
RuntimeにMicrosoftの ONNX Runtime を使っていますが、
ONNX Runtime Provider には、
ONNX Runtime Provider には、
・CPU ・MKLDNN ・CUDA ・TensorRT (NVIDIAのCUDA対応) ・MKLDNNをサポートしているので、x86系のプラットフォームなら大丈夫ですね。
ということで、普通の人は、Keras を使いましょう!キャンペーンでした。
・
}}}
}}}