| 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) |
|
|