pytorch转kmodel

  1. 将自己训练的pytorch模型转成k210所支持的kmodel;
  2. 在之前的尝试中我在.pth -> .onnx -> .pb中,出现转出来的.pb文件是一个文件夹的情况;
  3. 虽然可以加载,但是输入图片出来的结果令人匪夷所思,如下图:

    img


    这是原.pth推理的结果:

img


同时我尝试过各种网上的各种解答,最终没能解决问题,以下是我用的环境:
windows,python=3.7, onnx==1.14.0,onnx-tf==1.14.0, tensorflow==2.4.1, tensorflow-addons==0.12.1
希望能得到解答,更希望能得到.pth转.kmodel的完整解答

参考下同学

【以下回答由 GPT 生成】

根据你的描述,你想将PyTorch模型转换为适用于k210芯片的kmodel文件。你尝试了.pth -> .onnx -> .pb的转换过程,但是得到的.pb文件是一个文件夹而不是一个文件,并且模型的输出结果不正确。你的环境是Windows,Python版本为3.7,各组件的版本如下:onnx版本为1.14.0,onnx-tf版本为1.14.0,tensorflow版本为2.4.1,tensorflow-addons版本为0.12.1。下面是我给出的解决方案:

首先,确保你已经克隆了K210芯片官方提供的模型转换工具,并且按照官方文档进行了安装和配置。

然后,按照以下步骤进行转换:

步骤1: 将.pth模型转换为.onnx模型

import torch
import torchvision

# 加载训练好的PyTorch模型
model = torchvision.models.resnet18()
model.load_state_dict(torch.load('model.pth'))

# 将模型设置为评估模式
model.eval()

# 创建一批虚拟输入数据
dummy_input = torch.randn(1, 3, 224, 224)

# 将PyTorch模型转换为ONNX模型
torch.onnx.export(model, dummy_input, 'model.onnx', opset_version=11)

步骤2: 将.onnx模型转换为.pb模型

# 使用onnx-tf工具将ONNX模型转换为TensorFlow模型
onnx-tf convert -i model.onnx -o model.pb

步骤3: 将.pb模型转换为.kmodel模型

# 使用ncc工具将TensorFlow模型转换为kmodel模型
ncc -i model.pb -o model.kmodel -t k210 --dataset images

请注意,转换过程中的文件路径和命令行参数需要根据你的实际情况进行修改。

如果你在转换过程中遇到了问题,首先确保你的环境已经正确安装和配置。如果问题依然存在,可能是由于版本不兼容或其他原因。在这种情况下,我建议你查阅官方文档或在相关的开发者社区寻求帮助。

希望这个解决方案对你有帮助!如果你还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^