/
rnekrasov
/
python_backend
Обзор
Документация
Войти
/
rnekrasov
/
python_backend
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
examples/preprocessing/client.py
106 строк
4 KB
Iman Tabrizian
Randomize Python backend shared memory region naming (#351)
08 апр 2024, 20:22
Не верифицирован
08 апр 2024, 20:22
4d42111
Код
Авторство
О чём код?
# Copyright 2021-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of NVIDIA CORPORATION nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import argparse import json import sys import numpy as np import tritonclient.grpc as tritongrpcclient def load_image(img_path: str): """ Loads an encoded image as an array of bytes. """ return np.fromfile(img_path, dtype="uint8") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( "--model_name", type=str, required=False, default="ensemble_python_resnet50", help="Model name", ) parser.add_argument("--image", type=str, required=True, help="Path to the image") parser.add_argument( "--url", type=str, required=False, default="localhost:8001", help="Inference server URL. Default is localhost:8001.", ) parser.add_argument( "-v", "--verbose", action="store_true", required=False, default=False, help="Enable verbose output", ) parser.add_argument( "--label_file", type=str, default="./model_repository/resnet50_trt/labels.txt", help="Path to the file with text representation of available labels", ) args = parser.parse_args() try: triton_client = tritongrpcclient.InferenceServerClient( url=args.url, verbose=args.verbose ) except Exception as e: print("channel creation failed: " + str(e)) sys.exit(1) with open(args.label_file) as f: labels_dict = {idx: line.strip() for idx, line in enumerate(f)} inputs = [] outputs = [] input_name = "INPUT" output_name = "OUTPUT" image_data = load_image(args.image) image_data = np.expand_dims(image_data, axis=0) inputs.append(tritongrpcclient.InferInput(input_name, image_data.shape, "UINT8")) outputs.append(tritongrpcclient.InferRequestedOutput(output_name)) inputs[0].set_data_from_numpy(image_data) results = triton_client.infer( model_name=args.model_name, inputs=inputs, outputs=outputs ) output0_data = results.as_numpy(output_name) print(output0_data) maxs = np.argmax(output0_data, axis=1) print(maxs) print("Result is class: {}".format(labels_dict[maxs[0]]))