Neuropod - это библиотека, которая обеспечивает равномерный интерфейс для запуска моделей глубокого обучения из нескольких структур в C ++ и Python. Neuropod позволяет исследователям создавать модели в рамках своего выбора, а также упрощает производство этих моделей.
В настоящее время он поддерживает Tensorflow, Pytorch, TorchScript, Keras и Ludwig.
Для получения дополнительной информации:
Запуск модели TensorFlow выглядит точно так же, как запуск модели Pytorch.
x = np . array ([ 1 , 2 , 3 , 4 ])
y = np . array ([ 5 , 6 , 7 , 8 ])
for model_path in [ TF_ADDITION_MODEL_PATH , PYTORCH_ADDITION_MODEL_PATH ]:
# Load the model
neuropod = load_neuropod ( model_path )
# Run inference
results = neuropod . infer ({ "x" : x , "y" : y })
# array([6, 8, 10, 12])
print results [ "out" ]См. Учебное пособие, руководство по Python или Guide C ++ для получения дополнительных примеров.
Некоторые преимущества этого включают:
Любая модель Neuropod может быть запущена как из C ++, так и из Python (даже модели Pytorch, которые не были преобразованы в TorchScript).
Это позволяет вам больше сосредоточиться на проблеме, которую вы решаете, а не на основе, которую вы используете для ее решения.
Например, если вы определяете задачу API для обнаружения 2D -объекта, любая модель, которая реализует ее, может повторно использовать весь существующий код вывода и инфраструктуру для этой проблемы.
INPUT_SPEC = [
# BGR image
{ "name" : "image" , "dtype" : "uint8" , "shape" : ( 1200 , 1920 , 3 )},
]
OUTPUT_SPEC = [
# shape: (num_detections, 4): (xmin, ymin, xmax, ymax)
# These values are in units of pixels. The origin is the top left corner
# with positive X to the right and positive Y towards the bottom of the image
{ "name" : "boxes" , "dtype" : "float32" , "shape" : ( "num_detections" , 4 )},
# The list of classes that the network can output
# This must be some subset of ['vehicle', 'person', 'motorcycle', 'bicycle']
{ "name" : "supported_object_classes" , "dtype" : "string" , "shape" : ( "num_classes" ,)},
# The probability of each class for each detection
# These should all be floats between 0 and 1
{ "name" : "object_class_probability" , "dtype" : "float32" , "shape" : ( "num_detections" , "num_classes" )},
]Это позволяет вам
Смотрите учебник для более подробной информации.
Если у вас есть несколько моделей, которые приобретают аналогичный набор входов, вы можете создавать и оптимизировать одну структуру, агрессию, и поделиться им по моделям.
Полностью автономные модели (включая пользовательские OPS)
Эффективные операции с нулевой копией
Протестировано на платформах, включая
Модель изоляции с казнью вне процесса процесса
Переключиться с запуска в процесс к запуску вне процесса с одной строкой кода
См. Основное введение учебник для обзора того, как начать работу с Neuropod.
Руководство по Python и Guide C ++ подробно рассказывают о запуске моделей Neuropod.