Как сделать вывод на локальном P C с моделью, обученной на AWS SageMaker, используя встроенный алгоритм Semanti c Segmentation? - PullRequest
0 голосов
/ 26 февраля 2020

Аналогично вопросу Обученную модель можно развернуть на другой платформе без зависимости от sagemaker или службы aws? .

Я обучил модель на AWS SageMaker с помощью встроенного алгоритма Semanti c Сегментация . Эта обученная модель с именем model.tar.gz хранится на S3. Поэтому я хочу скачать этот файл с S3, а затем использовать его, чтобы сделать вывод на моем локальном P C без использования AWS SageMaker. Поскольку встроенный алгоритм Semanti c Segmentation построен с использованием M XNet Gluon Framework и инструментария Gluon CV , поэтому я стараюсь ссылаться на документацию m xnet и gluon-cv , чтобы сделать вывод о локальном P C.

Этот файл легко загрузить с S3, а затем я разархивирую этот файл, чтобы получить три файла:

  1. гиперпарам. json: включает параметры для архитектуры сети, ввода данных и обучения. См. Semanti c Гиперпараметры сегментации .
  2. model_al go -1
  3. model_best.params

Обе model_al go -1 и model_best.params являются обученными моделями, и я думаю, что это вывод из net.save_parameters (см. Поезд нейронной сети ). Я также могу загрузить их функцией mxnet.ndarray.load.

См. Прогноз с предварительно обученной моделью . Я обнаружил, что есть две необходимые вещи:

  1. Реконструкция сети для создания вывода.
  2. Загрузка обученных параметров.

Что касается реконструкции сети для сделав вывод, так как я использовал PS PNet от обучения, поэтому я могу использовать класс gluoncv.model_zoo.PSPNet для реконструкции сети. И я знаю, как использовать некоторые сервисы AWS SageMaker, например, задания пакетного преобразования, чтобы сделать вывод. Я хочу воспроизвести его на моем местном P C. Если я использую класс gluoncv.model_zoo.PSPNet для восстановления сети, я не могу убедиться, что параметры этой сети совпадают с параметрами, используемыми в AWS SageMaker при выполнении логического вывода. Потому что я не могу видеть изображение 501404015308.dkr.ecr.ap-northeast-1.amazonaws.com/semantic-segmentation:latest в деталях.

Что касается загрузки обученных параметров, я могу использовать load_parameters. Но что касается model_al go -1 и model_best.params , я не знаю, какой из них мне следует использовать.

1 Ответ

0 голосов
/ 02 марта 2020

Следующий код хорошо работает для меня.

import mxnet as mx
from mxnet import image
from gluoncv.data.transforms.presets.segmentation import test_transform
import gluoncv

# use cpu
ctx = mx.cpu(0)

# load test image
img = image.imread('./img/IMG_4015.jpg')
img = test_transform(img, ctx)
img = img.astype('float32')

# reconstruct the PSP network model
model = gluoncv.model_zoo.PSPNet(2)

# load the trained model
model.load_parameters('./model/model_algo-1')

# make inference
output = model.predict(img)
predict = mx.nd.squeeze(mx.nd.argmax(output, 1)).asnumpy()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...