pytorch는 공홈에 친절하게 추론에 대하여 나와 있길래 keras에서 찾아보려니 잘 안보여 가볍게 포스팅해보고자 한다.
(선택) PyTorch 모델을 ONNX으로 변환하고 ONNX 런타임에서 실행하기
이 튜토리얼에서는 어떻게 PyTorch에서 정의된 모델을 ONNX 형식으로 변환하고 또 어떻게 그 변환된 모델을 ONNX 런타임에서 실행할 수 있는지에 대해 알아보도록 하겠습니다. ONNX 런타임은 ONNX 모델을 위한 엔진으로서 성능에 초점을 맞추고 있고 여러 다양한 플랫폼과 하드웨어(윈도우, 리눅스, 맥을 비롯한 플랫폼 뿐만 아니라 CPU, GPU 등의 하드웨어)에서 효율적인 추론을 가능하게 합니다. ONNX 런타임은 여기 에서 설명된 것과 같이 여러 모델들의 성능을 상당히 높일 수 있다는 점이 증명되었습니다. 이 튜토리얼...

import onnx
import onnxruntime as ort
import cv2
import numpy as np
import tensorflow as tf
# input img preprocessing
img=cv2.imread(path) # path 는 본인 이미지 파일 경로
inp_img=np.expand_dims(
img,axis=0).astype(np.float32)
output_name = sess.get_outputs()[0].name
model_path="onnxfile.onnx" # model path
onnx_model = onnx.load(model_path)
onnx.checker.check_model(onnx_model)
sess=ort.InferenceSession(
model_path,
providers=ort.get_available_providers())
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name
res = sess.run(
None, {input_name: inp_img})
res = sess.run(
[output_name], {input_name: inp_img})
# segmentation_models 패키지활용으로 인해 추가로 필요한 코드
import os
os.environ["SM_FRAMEWORK"]="tf.keras"
import segmentation_models as sm
model=tf.keras.models.load_model(
"keras_model.h5",compile=False)
pred = model(inp_img)
np.testing.assert_allclose(
pred, res[0], rtol = 1e-03, atol=1e-05)