其实就模型转换而言只是个填参数的过程,把模型结构搭好,把参数填进去就即可,但是实践过的朋友大家一定会知道这其中存在不少坑,但是我们更希望有一种自动化的模型转换方案来进行模型转换。

的出现为模型转换带来了不少的福音,MMdnn提供了一种IR(中间表示)来来衔接各个模型之间的转换。他囊括并支持了主流的DNN框架。

下面我就简要讲一下几个的简单模型转换

例如下图是MTCNN Pnet的模型结构图

MMdnn的安装

的安装非常简单

转换中的一些坑

1.并不是所有Layer和所有网络都支持转换
2.Tensorflow与caffe的padding方式并不相同

这个问题会出现在MobileNet在转换的过程中,因为Tensorflow的padding方式和其他框架是不同的。Tensorflow标准的卷积操作通常采用非对称的padding,而caffe等其他框架的卷积操作则是采用对称的padding。

如下图 ,比如当 卷积核的大小为3x3 stride为2的时候。尽管他们的padding方式不同,但卷积之后的尺寸确是一样的。

img

转换步骤

把keras模型转化成MMdnn IR中间表示,在当然目录下会生成一个.npy 的weights文件和一个.pb文件。接着使用