|
import os |
|
import sys |
|
import pathlib |
|
CURRENT_DIR = pathlib.Path(__file__).parent |
|
sys.path.append(str(CURRENT_DIR)) |
|
|
|
import numpy as np |
|
from tqdm import tqdm |
|
import torch |
|
import torch.nn as nn |
|
from torch.utils import data |
|
import torchvision.transforms as transform |
|
import torch.nn.functional as F |
|
import onnxruntime |
|
from PIL import Image |
|
import argparse |
|
from datasets.utils import colorize_mask, build_img |
|
|
|
|
|
if __name__ == "__main__": |
|
parser = argparse.ArgumentParser(description='SemanticFPN model') |
|
parser.add_argument('--onnx_path', type=str, default='FPN_int_NHWC.onnx') |
|
parser.add_argument('--save_path', type=str, default='./data/demo_results/senmatic_results.png') |
|
parser.add_argument('--input_path', type=str, default='data/cityscapes/leftImg8bit/test/bonn/bonn_000000_000019_leftImg8bit.png') |
|
parser.add_argument('--ipu', action='store_true', help='use ipu') |
|
parser.add_argument('--provider_config', type=str, default=None, |
|
help='provider config path') |
|
args = parser.parse_args() |
|
|
|
if args.ipu: |
|
providers = ["VitisAIExecutionProvider"] |
|
provider_options = [{"config_file": args.provider_config}] |
|
else: |
|
providers = ['CPUExecutionProvider'] |
|
provider_options = None |
|
|
|
onnx_path = args.onnx_path |
|
input_img = build_img(args) |
|
session = onnxruntime.InferenceSession(onnx_path, providers=providers, provider_options=provider_options) |
|
ort_input = {session.get_inputs()[0].name: input_img.cpu().numpy().transpose(0,2,3,1)} |
|
ort_output = session.run(None, ort_input)[0].transpose(0,3,1,2) |
|
if isinstance(ort_output, (tuple, list)): |
|
ort_output = ort_output[0] |
|
|
|
output = ort_output[0].transpose(1, 2, 0) |
|
seg_pred = np.asarray(np.argmax(output, axis=2), dtype=np.uint8) |
|
color_mask = colorize_mask(seg_pred) |
|
os.makedirs(os.path.dirname(args.save_path), exist_ok=True) |
|
color_mask.save(args.save_path) |
|
|