AWS SageMaker 上训练的模型使用内置算法语义分割,如何在本地 PC 上进行推理?
How to make inference on local PC with the model trained on AWS SageMaker by using the built-in algorithm Semantic Segmentation?
我在 AWS SageMaker 上训练了一个模型,使用内置算法 Semantic Segmentation. This trained model named as model.tar.gz
is stored on S3. So I want to download this file from S3 and then use it to make inference on my local PC without using AWS SageMaker anymore. Since the built-in algorithm Semantic Segmentation is built using the MXNet Gluon framework and the Gluon CV toolkit, so I try to refer the documentation of mxnet and gluon-cv 在本地 PC 上进行推理。
从S3下载这个文件很容易,然后我解压这个文件得到三个文件:
- hyperparams.json:包括网络架构、数据输入和训练的参数。参考Semantic Segmentation Hyperparameters.
- model_algo-1
- model_best.params
model_algo-1和model_best.params都是训练好的模型,我认为是net.save_parameters
(参考Train the neural network)。我还可以使用函数 mxnet.ndarray.load
.
加载它们
参考Predict with a pre-trained model。我发现有两个必要的东西:
- 重建网络进行推理。
- 加载训练好的参数。
至于重构网络进行推理,因为我是用PSPNet训练出来的,所以可以用class gluoncv.model_zoo.PSPNet
重构网络。而且我知道如何使用 AWS SageMaker 的一些服务(例如批量转换作业)进行推理。我想在我的本地 PC 上重现它。如果我使用 class gluoncv.model_zoo.PSPNet
重构网络,我无法确定这个网络的参数是否与 AWS SageMaker 上使用的参数相同,同时进行推理。因为我看不到详细的图像501404015308.dkr.ecr.ap-northeast-1.amazonaws.com/semantic-segmentation:latest
。
至于加载训练好的参数,我可以使用load_parameters
。但是对于model_algo-1和model_best.params,我不知道应该用哪个
下面的代码很适合我。
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()
我在 AWS SageMaker 上训练了一个模型,使用内置算法 Semantic Segmentation. This trained model named as model.tar.gz
is stored on S3. So I want to download this file from S3 and then use it to make inference on my local PC without using AWS SageMaker anymore. Since the built-in algorithm Semantic Segmentation is built using the MXNet Gluon framework and the Gluon CV toolkit, so I try to refer the documentation of mxnet and gluon-cv 在本地 PC 上进行推理。
从S3下载这个文件很容易,然后我解压这个文件得到三个文件:
- hyperparams.json:包括网络架构、数据输入和训练的参数。参考Semantic Segmentation Hyperparameters.
- model_algo-1
- model_best.params
model_algo-1和model_best.params都是训练好的模型,我认为是net.save_parameters
(参考Train the neural network)。我还可以使用函数 mxnet.ndarray.load
.
参考Predict with a pre-trained model。我发现有两个必要的东西:
- 重建网络进行推理。
- 加载训练好的参数。
至于重构网络进行推理,因为我是用PSPNet训练出来的,所以可以用class gluoncv.model_zoo.PSPNet
重构网络。而且我知道如何使用 AWS SageMaker 的一些服务(例如批量转换作业)进行推理。我想在我的本地 PC 上重现它。如果我使用 class gluoncv.model_zoo.PSPNet
重构网络,我无法确定这个网络的参数是否与 AWS SageMaker 上使用的参数相同,同时进行推理。因为我看不到详细的图像501404015308.dkr.ecr.ap-northeast-1.amazonaws.com/semantic-segmentation:latest
。
至于加载训练好的参数,我可以使用load_parameters
。但是对于model_algo-1和model_best.params,我不知道应该用哪个
下面的代码很适合我。
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()