当我使用ncnn提供的mxnet转ncnn的转换工具转mxnet模型的时候,能够转换成功,但是得到的param文件里面开头的层数和param后面罗列出来的层的数目对不上。罗列的层数少于param文件开头统计的层数
0wi1tuuw1#
可以先检查一下模型里是否同名的层
fdx2calv2#
@Howave 查看了一下,并没有重复的层,而且我试着转了几个尺度的mxnet的模型,param文件里面罗列的层数都比param开头统计的层数少3层
v6ylcynt3#
用netron工具分别查看对比一下json和param文件
7gcisfzg4#
@Howave 我用这个工具查看了一下,发现ncnn转换的param形成的网络图是两个没有数据交互的图,从mxnet的第一个elemwise_add开始,ncnn将mxnet的网络图断开成了两部分,上部分以binaryop结尾,下部分以split开始,两部分没有任何数据交互。而mxnet后面的elemwise也被分为了binaryop和split,但是两者之间有数据交互。就是binaryop的输出是split的输入。我看了ncnn,里面有elemwise层,为何ncnn转换时会将它分为两层,而且第一次分的时候还将mxnet的图层给断开了
dz6r00yl5#
@Howave 非常感谢,通过直接修改param文件,我得到了正确的转换模型。但是我发现转换后的ncnn模型,在wildeface的测试上,和我转换前在hard测试部分差异较大,差了差不多百分之8,在easy和medium测试上差了百分之2左右
cidc1ykv6#
这个还是得检查一下原来的模型和ncnn对应处的代码吧
izkcnapc7#
就两个层名字变了,但是我看了这两个层ncnn的实现源码,和原来mxnet对应层的实现功能是一样的
7条答案
按热度按时间0wi1tuuw1#
可以先检查一下模型里是否同名的层
fdx2calv2#
@Howave 查看了一下,并没有重复的层,而且我试着转了几个尺度的mxnet的模型,param文件里面罗列的层数都比param开头统计的层数少3层
v6ylcynt3#
用netron工具分别查看对比一下json和param文件
7gcisfzg4#
@Howave 我用这个工具查看了一下,发现ncnn转换的param形成的网络图是两个没有数据交互的图,从mxnet的第一个elemwise_add开始,ncnn将mxnet的网络图断开成了两部分,上部分以binaryop结尾,下部分以split开始,两部分没有任何数据交互。而mxnet后面的elemwise也被分为了binaryop和split,但是两者之间有数据交互。就是binaryop的输出是split的输入。我看了ncnn,里面有elemwise层,为何ncnn转换时会将它分为两层,而且第一次分的时候还将mxnet的图层给断开了
dz6r00yl5#
@Howave 非常感谢,通过直接修改param文件,我得到了正确的转换模型。但是我发现转换后的ncnn模型,在wildeface的测试上,和我转换前在hard测试部分差异较大,差了差不多百分之8,在easy和medium测试上差了百分之2左右
cidc1ykv6#
这个还是得检查一下原来的模型和ncnn对应处的代码吧
izkcnapc7#
就两个层名字变了,但是我看了这两个层ncnn的实现源码,和原来mxnet对应层的实现功能是一样的