首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用在AWS SageMaker上训练的模型,利用内置算法进行语义分割,在本地PC机上进行推理?

如何利用在AWS SageMaker上训练的模型,利用内置算法进行语义分割,在本地PC机上进行推理?
EN

Stack Overflow用户
提问于 2020-02-26 01:40:49
回答 1查看 364关注 0票数 0

类似于经过训练的模型可以部署在另一个平台上,而不依赖于sagemaker或aws服务?的问题。

我用内置算法SageMaker训练了一个AWS 语义分割模型.这个名为model.tar.gz的经过训练的模型存储在S3上。所以我想从S3下载这个文件,然后用它在我的本地PC上进行推理,而不再使用AWS SageMaker。由于内置算法的语义分割是用MXNet胶子框架与胶子CV工具包实现的,所以我尝试参考mxnet胶子-cv的文档,在本地PC上进行推理。

从S3下载这个文件很容易,然后我解压缩这个文件以获得三个文件:

  1. hyperparams.json:包括用于网络体系结构、数据输入和培训的参数。请参阅语义分割超参数
  2. model_algo-1
  3. model_best.params

model_algo-1model_best.params都是经过训练的模型,我认为这是来自net.save_parameters的输出(参见训练神经网络)。我还可以用函数mxnet.ndarray.load加载它们。

请参阅用预先训练的模型进行预测。我发现有两件事是必要的:

  1. 重构网络进行推理。
  2. 加载经过训练的参数。

至于重建网络进行推理,由于我从训练中使用了PSPNet,所以可以用类gluoncv.model_zoo.PSPNet来重构网络。我知道如何使用AWS SageMaker的一些服务,例如批处理转换作业,来进行推理。我想在我的本地电脑上复制它。如果使用类gluoncv.model_zoo.PSPNet重构网络,则无法确定该网络的参数是否与进行推理时在AWS SageMaker上使用的参数相同。因为我看不到图像501404015308.dkr.ecr.ap-northeast-1.amazonaws.com/semantic-segmentation:latest的细节。

至于加载训练过的参数,我可以使用load_parameters。但是对于model_algo-1model_best.params,,我不知道应该使用哪一种。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-02 05:15:37

下面的代码对我来说很好。

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60405600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档