mxnet inference 最后输出层结果

mxnet inference 最后输出层结果

import cv2
import numpy as np
import mxnet as mx
from collections import namedtuple

class mxnetPredictor:
    def __init__(self, prefix, epoch, input_shape, ctx=mx.cpu()):
        sym, arg_params, aux_params = mx.model.load_checkpoint(prefix=prefix, epoch=epoch)
        self.input_shape = input_shape
        self.outputs = sym.list_outputs()

        self.mod = mx.mod.Module(symbol=sym, context=ctx, label_names=None)
        self.mod.bind(for_training=False, data_shapes=[('data', self.input_shape)])
        self.mod.set_params(arg_params, aux_params, allow_missing=False, allow_extra=False)

    def forward(self, tensor):
        self.mod.forward(Batch([mx.nd.array(tensor)]))
        out = self.mod.get_outputs()
        out = list(map(lambda x:x.asnumpy(), out))
        return out
        
def img2tensor(mat):
    if mat is None:
        tensor = np.random.randint(0, 256, input_shape, dtype=np.uint8)
    else:
        mat = cv2.resize(mat, (input_shape[3], input_shape[2]))
        if input_shape[1] == 1:
            mat = cv2.cvtColor(mat, cv2.COLOR_BGR2GRAY)
            mat = mat[:,:,np.newaxis]
        tensor = np.expand_dims(np.transpose(mat, (2,0,1)), axis=0)
    tensor = tensor.astype(np.float32)
    return tensor    

if __name__ == "__main__":
    img_path = '01.jpg'
    mxnet_path = 'model-sim'
    input_shape=(1, 3, 320, 320)
    
    # data
    mat = None
    if len(img_path) != 0:
        print("imread:", img_path)
        mat = cv2.imread(img_path)
    tensor = img2tensor(mat)    

    # mxnet inference
    Batch = namedtuple('Batch',['data'])
    netmxnet = mxnetPredictor(mxnet_path, 0, input_shape)
    out_mxnet = netmxnet.forward(tensor)
    for out in out_mxnet:
        print('mxnet max',np.max(out),out.shape)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值