File size: 1,099 Bytes
7548bcf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""Classify an image with the INT8 ONNX model in this repo.

Usage: python run_classify.py <image.jpg>
Deps:  pip install onnxruntime numpy pillow
"""

import glob
import os
import sys

import numpy as np
from PIL import Image
import onnxruntime as ort

HERE = os.path.dirname(os.path.abspath(__file__))
MODEL = sorted(glob.glob(os.path.join(HERE, "*.onnx")))[0]
MEAN = np.array([0.485, 0.456, 0.406], dtype=np.float32)
STD = np.array([0.229, 0.224, 0.225], dtype=np.float32)

sess = ort.InferenceSession(MODEL, providers=["CPUExecutionProvider"])
size = sess.get_inputs()[0].shape[-1]  # static square input baked into the model

img = Image.open(sys.argv[1]).convert("RGB").resize((size, size), Image.BICUBIC)
x = ((np.asarray(img, np.float32) / 255.0 - MEAN) / STD).transpose(2, 0, 1)[None]
logits = sess.run(None, {"input": x.astype(np.float32)})[0][0]
top5 = np.argsort(logits)[-5:][::-1]
print(f"model: {os.path.basename(MODEL)} (input {size}x{size})")
for i in top5:
    print(f"  class {i}: logit {logits[i]:.3f}")
print("Class indices follow the standard ImageNet-1K sorted-synset order.")