alibaba / MNN

MNN is a blazing fast, lightweight deep learning framework, battle-tested by business-critical use cases in Alibaba
http://www.mnn.zone/
8.72k stars 1.67k forks source link

通过--saveStaticModel 转换失败 #2280

Closed zy885137 closed 1 year ago

zy885137 commented 1 year ago

模型通过 --saveStaticModel 转换失败

./MNNConvert -f TF --modelFile bank_number_ocr.pb --MNNModel bknum.mnn --bizCode biz --weightQuantBits 8 --saveStaticModel

失败日志:

The device support dot:0, support fp16:0, support i8mm: 0 Start to Convert Other Model Format To MNN Model... Start to Optimize the MNN Net... inputTensors : [ input, ] outputTensors: [ model/out/Conv2D, ] Compute Shape Error for model/conv2d/Conv2D gen Static Model ... Convert Static Model: Can't find model/out/Conv2D output, skip Converted Success!

细节描述

2.xx版本静态库比1.xx版本的静态库大了一倍,MNN.framework只能通过MNN_BUILD_MINI编译压缩体积。 这样造成的结果就是模型必须静态模型。 目前个别模型 无法转换为 静态模型

请问,我这个应该怎么操作呢?只能用 功能全开的MNN静态库吗?

jxt1234 commented 1 year ago
  1. https://mnn-docs.readthedocs.io/en/latest/tools/convert.html ,加上 --inputConfigFile config.txt , config.txt 按如下格式编写,指定输入大小: input_names = input0,input1 input_dims = 1x3x224x224,1x3x64x64
  2. 如果模型在运行过程中需要变尺寸,无法使用 MNN_BUILD_MINI 去加载
  3. 静态库最终链接时会按需增加包大小的,应该加不了多少
wangzhaode commented 1 year ago

不用在意静态库的大小,看最后产物的大小就可以;没必要因为静态库变大使用MINI模式

zy885137 commented 1 year ago

感谢回复,看文档有写,
iOS平台:功能全开的MNN静态库 armv7+arm64大小12MB左右,链接生成可执行文件增加大小2M左右。可裁剪主体功能后静态库大小6.1M ,链接生成可执行文件增加大小 600 KB。

想问一下,这个链接生成可执行文件大小怎么查看呢?是通过打ipa包 看大小吗?🫡

jxt1234 commented 1 year ago

应该有个分析工具测量各个库的占比的

jxt1234 commented 11 months ago

补充,无初始输入信息的,加上 --inputConfig XXX.txt

txt 文件按如下格式编写:

多个输入用,分开,不要用空格

目前默认输入都是float

文件名为输入tensor的名字后缀为txt

模型默认名字为:temp.bin

input_size = 1 input_names = image_tensor input_dims = 1x720x1280x3