出离的小牧 2024-03-07 12:17 采纳率: 0%
浏览 3

求大家帮助,onnx怎么转mxnet,老是出现key=547的错误

现在的问题是我的项目使用了compreface,compreface调用了insightface的旧版本,现在insightface有了新版本,如果我的项目要升级的话,就要将compreface调用新版本的insightface,即将.onnx转换为compreface习惯的mxnet,或者直接对compreface做大改动,让compreface基于onnx推理。但是我的水平太低了,好难呀

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-07 12:17
    关注

    引自免费微信小程序:皆我百晓生

    在将ONNX模型转换为MXNet格式时,你遇到了键值错误(key=547),这通常意味着在转换过程中存在某些层或操作不兼容的问题。为了解决这个问题,你可以尝试使用官方提供的工具——mxnet-onnx,它是用于ONNX和MXNet模型之间互转的库。

    以下是一个基本的步骤来尝试转换:

    import mxnet as mx
    from mxnet.contrib import onnx as onnx_mxnet
    
    # 加载ONNX模型
    onnx_model = onnx.load('your_model.onnx')
    
    # 将ONNX模型转换为MXNet symbolic graph
    sym, arg_params, aux_params = onnx_mxnet.import_model(onnx_model)
    
    # 创建一个MXNet模块
    mod = mx.mod.Module(symbol=sym, context=mx.cpu(), data_names=['data'], label_names=None)
    
    # 尝试绑定参数以检查是否有任何不兼容的层
    mod.bind(for_training=False, data_shapes=[('data', (1, input_shape))])
    
    # 如果上述步骤没有报错,则可以继续保存MXNet模型
    save_dict = {('arg:%s' % k): v for k, v in arg_params.items()}
    save_dict.update({('aux:%s' % k): v for k, v in aux_params.items()})
    mx.model.save_checkpoint('your_model_mxnet', 0, sym, save_dict)
    

    请注意替换 'your_model.onnx' 为你的ONNX模型路径,并根据实际情况设置 input_shape。如果在转换或绑定参数阶段遇到特定错误,例如“key=547”的问题,可能需要检查该键所对应的层是否在MXNet中得到支持。对于不支持的层,你可能需要手动实现对应的MXNet层或者联系InsightFace社区寻求帮助,看看是否有针对新版本模型转换的解决方案或补丁。

    此外,请确保安装了最新版本的MXNet以及mxnet-onnx库:

    pip install --upgrade mxnet onnx-mxnet
    

    如果出现具体错误代码或详细信息,请提供以便进一步分析并针对性地解决问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月7日

悬赏问题

  • ¥15 c51单片机控制步进电机
  • ¥20 Visual studio无法检测到设备
  • ¥15 为什么我通过html绘制的SVG折线图插入到word中坐标轴不显示出来
  • ¥30 vue 页面窗口放大或者缩小元素会变化
  • ¥15 questasim仿真报错
  • ¥15 寻找电脑攻防的导师,有问题请教一下。
  • ¥20 微信同是win11,我的电脑安装不了pageoffice,一直无法打开
  • ¥15 这个界面我通过postman请求不到,但是通过浏览器可以正常访问
  • ¥15 多目标优化算法在与其他算法数据对比结果判断
  • ¥15 CPTN和EAST,主干网络是VGG16,请问在ICDAR2015数据集上训练之后,CPTN和EAST模型的大小为多少