参考:https://www.twblogs.net/a/5ca4cadbbd9eee5b1a0713af
写这篇笔记的初衷是因为需要将Insightface的MXNET模型转成Tensorflow,而mmdnn上提供的mmconvert命令却没有成功(估计是哪里用错了),故而找其他的文章来实现相同的功能。
准备mmdnn环境
因为需要将mxnet转成tensorflow,所以,需要在python的虚拟环境中安装这两个框架,另外,建议使用最新的mmdnn,修复了一下bug。
pip install -U git+https://github.com/Microsoft/MMdnn.git@master
pip install mmdnn
pip install tensorflow==1.13.1
将mxnet模型转成IR模型
下面的参数中–inputShape很重要,insightface的输入图像的shape就是[3,112,112]
python -m mmdnn.conversion._script.convertToIR -f mxnet -n model-symbol.json -w model-0000.params -d r100 --inputShape 3,112,112
下面就是生成的IR模型
由IR模型生成code
python -m mmdnn.conversion._script.IRToCode -f tensorflow --IRModelPath r100.pb --IRWeightPath r100.npy --dstModelPath tf_r100.py
使用上面的命令,可以生成一个tf_r100.py
,其中,KitModel函数加载npy权重参数重新生成原网络框架。
生成PB文件
基于r100.npy和tf_r100.py文件,固化参数,生成PB文件。
import argparse
import tensorflow as tf
import tf_r100 as tf_fun # modify by yourself
def Network(ir_model_file):
model = tf_fun.KitModel(ir_model_file)
return model
def