MegEngine / mgeconvert

MegEngine到其他框架的转换器
https://megengine.org.cn/
Apache License 2.0
67 stars 15 forks source link

希望有大佬能贡献一个转换到 NCNN 模型的例子 #35

Closed Milkve closed 2 years ago

Milkve commented 3 years ago

这样我就可以在手机上折腾这些东西了

dingshaohua960303 commented 3 years ago

目前mgeconvert不支持直接转到ncnn,您可以尝试一下 megengine->onnx->ncnn 能否正常转换

CeryZhai commented 3 years ago

求给出一些环境:

  1. 支持验证的后端的网址,如NCNN在线验证等
  2. 各类后端转NCNN的验证途径,以及你希望转换的支持方式
dingshaohua960303 commented 3 years ago

一个resnet18 mge->onnx->ncnn的例子

mge->onnx

import megengine
from mgeconvert.converters.tm_to_onnx import tracedmodule_to_onnx
import numpy as np
import onnx
from megengine.traced_module import trace_module
net = megengine.hub.load(
    "megengine/models", "resnet18", use_cache=True, commit=None, pretrained=True
)
net.eval()
inp = megengine.tensor(np.random.random((1,3,224,224)))
tm = trace_module(net,inp)
tracedmodule_to_onnx(tm, "resnet18.onnx")

model = onnx.load_model("resnet18.onnx")
model = onnx.optimizer.optimize(model, passes = ['eliminate_identity'])
onnx.save(model, "resnet18.onnx")

onnx->ncnn 使用ncnn提供的转换器把导出的onnx模型转到ncnn

./ncnn/build/tools/onnx/onnx2ncnn resnet18.onnx
dingshaohua960303 commented 2 years ago

如果没有其他问题,这个issue就先关了,后续有问题欢迎提新的issue