Giter VIP home page Giter VIP logo

alibaba / mnn Goto Github PK

View Code? Open in Web Editor NEW
8.3K 201.0 1.6K 189.33 MB

MNN is a blazing fast, lightweight deep learning framework, battle-tested by business-critical use cases in Alibaba

Home Page: http://www.mnn.zone/

CMake 0.14% Ruby 0.01% Shell 0.11% C++ 93.59% C 2.40% Python 0.93% Objective-C 0.01% Objective-C++ 0.30% Assembly 1.20% Metal 0.12% GLSL 0.04% PowerShell 0.03% Batchfile 0.01% Cuda 1.04% Dockerfile 0.01% Java 0.09%
mnn convolution vulkan embedded-devices winograd-algorithm machine-learning deep-learning ml deep-neural-networks arm

mnn's Introduction

MNN

中文版本

MNN Homepage

Intro

MNN is a highly efficient and lightweight deep learning framework. It supports inference and training of deep learning models and has industry-leading performance for inference and training on-device. At present, MNN has been integrated into more than 30 apps of Alibaba Inc, such as Taobao, Tmall, Youku, DingTalk, Xianyu, etc., covering more than 70 usage scenarios such as live broadcast, short video capture, search recommendation, product searching by image, interactive marketing, equity distribution, security risk control. In addition, MNN is also used on embedded devices, such as IoT.

architecture

Inside Alibaba, MNN works as the basic module of the compute container in the Walle System, the first end-to-end, general-purpose, and large-scale production system for device-cloud collaborative machine learning, which has been published in the top system conference OSDI’22. The key design principles of MNN and the extensive benchmark testing results (vs. TensorFlow, TensorFlow Lite, PyTorch, PyTorch Mobile, TVM) can be found in the OSDI paper. The scripts and instructions for benchmark testing are put in the path “/benchmark”. If MNN or the design of Walle helps your research or production use, please cite our OSDI paper as follows:

@inproceedings {proc:osdi22:walle,
    author = {Chengfei Lv and Chaoyue Niu and Renjie Gu and Xiaotang Jiang and Zhaode Wang and Bin Liu and Ziqi Wu and Qiulin Yao and Congyu Huang and Panos Huang and Tao Huang and Hui Shu and Jinde Song and Bin Zou and Peng Lan and Guohuan Xu and Fei Wu and Shaojie Tang and Fan Wu and Guihai Chen},
    title = {Walle: An {End-to-End}, {General-Purpose}, and {Large-Scale} Production System for {Device-Cloud} Collaborative Machine Learning},
    booktitle = {16th USENIX Symposium on Operating Systems Design and Implementation (OSDI 22)},
    year = {2022},
    isbn = {978-1-939133-28-1},
    address = {Carlsbad, CA},
    pages = {249--265},
    url = {https://www.usenix.org/conference/osdi22/presentation/lv},
    publisher = {USENIX Association},
    month = jul,
}

Documentation and Workbench

MNN's docs are in place in Yuque docs here and Read the docs.

MNN Workbench could be downloaded from MNN's homepage, which provides pretrained models, visualized training tools, and one-click deployment of models to devices.

Key Features

Lightweight

  • Optimized for devices, no dependencies, can be easily deployed to mobile devices and a variety of embedded devices.
  • iOS platform: static library size will full option for armv7+arm64 platforms is about 12MB, size increase of linked executables is about 2M.
  • Android platform: core so size is about 800KB (armv7a - c++_shared).
  • Using MNN_BUILD_MINI can reduce package size by about 25%, with a limit of fixed model input size
  • Support FP16 / Int8 quantize, can reduce model size 50%-70%

Versatility

  • Supports Tensorflow, Caffe, ONNX,Torchscripts and supports common neural networks such as CNN, RNN, GAN, Transformer.
  • Supports AI model with multi-inputs or multi-outputs, every kind of dimension format, dynamic inputs, controlflow.
  • MNN supports approximate full OPs used for the AI Model. The converter supports 178 Tensorflow OPs, 52 Caffe OPs, 163 Torchscripts OPs, 158 ONNX OPs.
  • Supports iOS 8.0+, Android 4.3+, and embedded devices with POSIX interface.
  • Supports hybrid computing on multiple devices. Currently supports CPU and GPU.

High performance

  • Implements core computing with lots of optimized assembly code to make full use of the ARM / x64 CPU.
  • Use Metal / OpenCL / Vulkan to support GPU inference on mobile.
  • Use CUDA and tensorcore to support NVIDIA GPU for better performance
  • Convolution and transposition convolution algorithms are efficient and stable. The Winograd convolution algorithm is widely used to better symmetric convolutions such as 3x3,4x4,5x5,6x6,7x7.
  • Twice speed increase for the new architecture ARM v8.2 with FP16 half-precision calculation support. 2.5 faster to use sdot for ARM v8.2 and VNNI.

Ease of use

  • Support use MNN's OP to do numerical calculating like numpy.
  • Support lightweight image process module like OpenCV, which is only 100k.
  • Support build model and train it on PC / mobile.
  • MNN Python API helps ML engineers to easily use MNN to infer, train, and process images, without dipping their toes in C++ code.

The Architecture / Precision MNN supported is shown below:

  • S :Support and work well, deeply optimized, recommend to use
  • A :Support and work well, can use
  • B :Support but has bug or not optimized, no recommend to use
  • C :Not Support
Architecture / Precision Normal FP16 BF16 Int8
CPU Native B C B B
x86/x64-SSE4.1 A B B A
x86/x64-AVX2 S B B A
x86/x64-AVX512 S B B S
ARMv7a S S (ARMv8.2) S S
ARMv8 S S (ARMv8.2) S(ARMv8.6) S
GPU OpenCL A S C C
Vulkan A A C C
Metal A S C C
CUDA A S C C
NPU CoreML B B C C
HIAI B C C B
NNAPI B B C C

Tools

Base on MNN (Tensor compute engine), we provided a series of tools for inference, train and general computation.

  • MNN-Converter: Convert other models to MNN models for inference, such as Tensorflow(lite), Caffe, ONNX, Torchscripts. And do graph optimization to reduce computation.
  • MNN-Compress: Compress model to reduce size and increase performance / speed
  • MNN-Express: Support model with controlflow, use MNN's OP to do general-purpose computing.
  • MNN-CV: An OpenCV-like library, but based on MNN and then much more lightweight.
  • MNN-Train: Support train MNN model.

How to Discuss and Get Help From the MNN Community

The group discussions are predominantly Chinese. But we welcome and will help English speakers.

Dingtalk discussion groups:

Group #1 (Full): 23329087

Group #2 (Full): 23350225

Group #3: QR code:

MNN-3

Historical Paper

The preliminary version of MNN, as mobile inference engine and with the focus on manual optimization, has also been published in MLSys 2020. Please cite the paper, if MNN previously helped your research:

@inproceedings{alibaba2020mnn,
  author = {Jiang, Xiaotang and Wang, Huan and Chen, Yiliu and Wu, Ziqi and Wang, Lichuan and Zou, Bin and Yang, Yafeng and Cui, Zongyang and Cai, Yu and Yu, Tianhang and Lv, Chengfei and Wu, Zhihua},
  title = {MNN: A Universal and Efficient Inference Engine},
  booktitle = {MLSys},
  year = {2020}
}

License

Apache 2.0

Acknowledgement

MNN participants: Taobao Technology Department, Search Engineering Team, DAMO Team, Youku and other Alibaba Group employees.

MNN refers to the following projects:

mnn's People

Contributors

chrisyooh avatar czy2014hust avatar daquexian avatar daydreamcoding avatar gdh1995 avatar guanmoyu avatar howave avatar hush-alibaba avatar interfish avatar jokerz0624 avatar jxt1234 avatar krayzemli avatar li-qing avatar mambawong avatar mnnteam avatar napoleon-jm avatar naville avatar nihui avatar no5-aaron-wu avatar proydakov avatar rinthel avatar stanleywang8888 avatar wangzhaode avatar wtiandong avatar xiezheng-xd avatar yizhaoyanbo avatar yyfcc17 avatar zihaomu avatar zjd1988 avatar zzz197 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mnn's Issues

Convert onnx model err

I hava compiled the mnn converter successful. When i convert a onnx model to mnn use :

./MNNConvert -f ONNX --modelFile mobilefacenet.onnx --MNNModel mobilefacenet.mnn --bizCode MNN

and i face this error:
MNNConverter Version: 0.0.0.1 - MNN @ 2018

Start to Convert Other Model Format To MNN Model...
[09:36:17] /home/yuanhao/osc/MNN/tools/converter/source/onnx/onnxConverter.cpp:29: ONNX Model ir version: 3
terminate called after throwing an instance of 'Error'
what(): [09:36:17] /home/yuanhao/osc/MNN/tools/converter/source/onnx/onnxConverter.cpp:83: Check failed: opConverter ==> MNN Converter NOT_SUPPORTED_OP: [ PRelu ]
Aborted (core dumped)

How can i solve this problem, thanks!

build demo on linux failed.

Hello, I tried to build the demo on linux by using following instructions,
cd path/to/MNN
mkdir build
cmake -DMNN_FREEIMAGE_VALID=ON ..
make -j8

but failed,
/home/ian/Downloads/face_pro/MNN-master/demo/exec/multiPose.cpp: In function ‘int main(int, char**)’:
/home/ian/Downloads/face_pro/MNN-master/demo/exec/multiPose.cpp:327:19: error: ‘shared_ptr’ is not a member of ‘std’
auto mnnNet = std::shared_ptrMNN::Interpreter(MNN::Interpreter::createFro
^
/home/ian/Downloads/face_pro/MNN-master/demo/exec/multiPose.cpp:327:51: error: expected primary-expression before ‘>’ token
auto mnnNet = std::shared_ptrMNN::Interpreter(MNN::Interpreter::createFro
^
/home/ian/Downloads/face_pro/MNN-master/demo/exec/multiPose.cpp:351:25: error: ‘shared_ptr’ is not a member of ‘std’
auto pretreat = std::shared_ptrCV::ImageProcess(CV::ImageProcess::cre
^
/home/ian/Downloads/face_pro/MNN-master/demo/exec/multiPose.cpp:351:57: error: expected primary-expression before ‘>’ token
auto pretreat = std::shared_ptrCV::ImageProcess(CV::ImageProcess::cre
^
demo/exec/CMakeFiles/multiPose.out.dir/build.make:62: recipe for target 'demo/exec/CMakeFiles/multiPose.out.dir/multiPose.cpp.o' failed
make[2]: *** [demo/exec/CMakeFiles/multiPose.out.dir/multiPose.cpp.o] Error 1
CMakeFiles/Makefile2:237: recipe for target 'demo/exec/CMakeFiles/multiPose.out.dir/all' failed
make[1]: *** [demo/exec/CMakeFiles/multiPose.out.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

./schema/generate.sh failed

Reproduction step:

git clone 
cd path/to/mnn
./schema/generate.sh

Outputs:

$ ./schema/generate.sh
*** building flatc ***
CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in

CMake Error: Error executing cmake::LoadCache(). Aborting.

*** cleaning up ***
*** generating fbs under default ***
xargs: ../../3rd_party/flatbuffers/tmp/flatc: No such file or directory
===> Generating Schema...
*** building flatc ***
CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in

CMake Error: Error executing cmake::LoadCache(). Aborting.

xargs: ../../3rd_party/flatbuffers/tmp/flatc: No such file or directory
./generate_schema.sh: line 39: ../../3rd_party/flatbuffers/tmp/flatc: No such file or directory
===> Done!
*** done ***

Environments

ubuntu 18.04
gcc (Ubuntu 7.4.0-1ubuntu1~18.04) 7.4.0
cmake version 3.10.2
export CMAKE_ROOT=/usr/share/cmake-3.10

undefined reference to'__emutls_get_address'

when i follow build for Android, the last step,i met linking error.

[ 92%] Linking CXX shared library libMNN.so
/usr/local/google/buildbot/src/android/gcc/toolchain/build/../gcc/gcc-4.9/libgomp/libgomp.h:494: error: undefined reference to '__emutls_get_address'
/usr/local/google/buildbot/src/android/gcc/toolchain/build/../gcc/gcc-4.9/libgomp/libgomp.h:494: error: undefined reference to '__emutls_get_address'
/usr/local/google/buildbot/src/android/gcc/toolchain/build/../gcc/gcc-4.9/libgomp/libgomp.h:494: error: undefined reference to '__emutls_get_address'
/usr/local/google/buildbot/src/android/gcc/toolchain/build/../gcc/gcc-4.9/libgomp/parallel.c:178: error: undefined reference to '__emutls_get_address'
collect2: error: ld returned 1 exit status
CMakeFiles/MNN.dir/build.make:3533: recipe for target 'libMNN.so' failed
make[2]: *** [libMNN.so] Error 1
CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/MNN.dir/all' failed
make[1]: *** [CMakeFiles/MNN.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

how can i fix this???

INT8 support.

I can find int8 terms in source code here and there.
Does MNN support INT8 operation?
And if so, how to get it work?
Thanks for great framework.

iOS can't use MNN in framework way (Only pod way valid).

Target:
I want to integrate MNN by using iOS static framework.
But I can't find an elegant way to archive it.

Try:

  1. I open the framework project (MNN-master/project/ios/MNN.xcodeproj) and build it.
  2. Use the output framework and try a single MNN demo.

Visibal Problem:
The app crashed in Interpreter.cpp (MNN_ASSERT(nullptr != session) )
And I found out the message like this:

Cant't Find type=0 backend, use 0 instead
Create Backend Failed because no creator for 0
Invalide Session

Real Problem:
IOS Static Framework may not support using global variable initial function as an app-before-launch initial function.

I debug the problem and found that the real problem is the CPUBackend and MetalBackEnd can't initial themselves automatically. mean the following global variable can't initial automatic.

/* In CPUBackend.cpp */
static bool registerCPUBackendCreator = [] {
    MNNInsertExtraBackendCreator(MNN_ForWARD_CPU, new CPUBackendCreator);
    return true;
}

/* In MetalBackend.mm */
static bool __reg = MNNInsertExtraBackendCreator(MNN_FORWARD_METAL, new MetalBackendCreator);

Then we can't find a valid Creator in gExtraCreator.

Target Again
So, could you please support me a way to use MNN in iOS static framework way?
Thanks a lot.

NOT_SUPPORTED_OP: [ Constant ]

My conversion path: pytorch-->onnx-->mmn, the error log as follow:

MNNConverter Version: 0.0.0.1 - MNN @ 2018

Start to Convert Other Model Format To MNN Model...
[10:34:35] /disk2/shawn/MNN_workspace/MNN/tools/converter/source/onnx/onnxConverter.cpp:29: ONNX Model ir version: 3
terminate called after throwing an instance of 'Error'
what(): [10:34:35] /disk2/shawn/MNN_workspace/MNN/tools/converter/source/onnx/onnxConverter.cpp:83: Check failed: opConverter ==> MNN Converter NOT_SUPPORTED_OP: [ Constant ]
./convert.sh: line 1: 5391 Aborted (core dumped) ../tools/converter/build/MNNConvert -f ONNX --modelFile r18-small_18_0.9500.onnx --MNNModel r18-small_18.mnn --bizCode MNN

bench_android.sh failed for adb with version 1.0.32

please change
adb push benchmark.out timeProfile.out $ANDROID_DIR
to

adb push benchmark.out $ANDROID_DIR
adb push timeProfile.out $ANDROID_DIR

otherwise it reports error:
failed to copy 'benchmark.out' to 'timeProfile.out': couldn't create file: Read-only file system

Mnn model with input size None

I had a tf model which the model input size is 1xNonexNonex4, it's support variable input , so how to setup the mnn input coding ?
3q

model in gpu

how can i know my model whether run in gpu or not.i compiled opencl mnn and passed,but test time as long as cpu MNN

How to use MNN as a submodule/subproject?

There is an MNN_DEPEND cmake variable, however, cmake variable is not visible to parent scope. So the super-project cannot get the correct MNN library path and compile flags.

The ideal solution is that the CMakeLists.txt of MNN adds a library target (named "mnn" or something else), and this target depends on vulkan, opengl and so on. So that users can simply depend on target "mnn" without concern about all the dependencies and compile flags.

What's more, I believe MNN should export a target (on make install or cmake -P cmake_install.cmake) as all modern cmake files do.

"NV-GLX" missing when using vulkan backend

OS: CentOS 7.6
GPU: 1080Ti + 430.14 driver
VULKAN: 1.1.106.0
Any help is appreciated, Thanks !

# ./backendTest.out 
Xlib:  extension "NV-GLX" missing on display ":0".
Invalide device for support vulkan
Invalide device for support vulkan
Test forward type: 0
Tolerance Rate: 0.050000
Open Model (null)
Segmentation fault (core dumped)

运行MNNConvert时出现错误

OS:Centos 7
GCC:4.8,4.9,5.3
各个GCC版本都能成功编译MNNConvert,但是运行的时候出现提示:
terminate called after throwing an instance of 'std::regex_error'
whar(): regex_error

直接运行:./MNNConvert 或 ./MNNConvert -version 都出现上面的错误。

run get_model.sh error

[ 39%] Built target caffe
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
cp: cannot stat '../tools/converter/build/MNNConvert': No such file or directory
downloading model for MobileNet V1

rk3399用clang编译

pi@NanoPi-M4:/MNN/build$ cmake .. -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
-- The C compiler identification is Clang 6.0.0
-- The CXX compiler identification is Clang 6.0.0
-- Check for working C compiler: /usr/bin/clang
-- Check for working C compiler: /usr/bin/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/clang++
-- Check for working CXX compiler: /usr/bin/clang++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The ASM compiler identification is Clang
-- Found assembler: /usr/bin/clang
-- >>>>>>>>>>>>>
-- MNN BUILD INFO:
-- System: Linux
-- Processor: aarch64
-- DEBUG: OFF
-- Metal: OFF
-- OpenCL: OFF
-- OpenGL: OFF
-- Vulkan: OFF
-- OpenMP: ON
-- Hideen: TRUE
-- [*] searching .c
-- [
] searching .cc
-- [
] searching .cpp
-- [
] searching *.s .S
-- [
] Checking OpenMP
-- Found OpenMP_C: -fopenmp=libomp (found version "3.1")
-- Found OpenMP_CXX: -fopenmp=libomp (found version "3.1")
-- Found OpenMP: TRUE (found version "3.1")
-- /home/pi/MNN/build/benchmark
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/MNN/build
pi@NanoPi-M4:
/MNN/build$ make -j4
Scanning dependencies of target MNN
[ 0%] Building C object CMakeFiles/MNN.dir/source/core/MNNMemoryUtils.c.o
[ 0%] Building CXX object CMakeFiles/MNN.dir/source/core/AutoTime.cpp.o
[ 1%] Building CXX object CMakeFiles/MNN.dir/source/core/Backend.cpp.o
[ 1%] Building CXX object CMakeFiles/MNN.dir/source/core/BackendFactory.cpp.o
[ 1%] Building CXX object CMakeFiles/MNN.dir/source/core/BufferAllocator.cpp.o
[ 2%] Building CXX object CMakeFiles/MNN.dir/source/core/Execution.cpp.o
[ 2%] Building CXX object CMakeFiles/MNN.dir/source/core/Interpreter.cpp.o
[ 3%] Building CXX object CMakeFiles/MNN.dir/source/core/Pipeline.cpp.o
[ 3%] Building CXX object CMakeFiles/MNN.dir/source/core/Schedule.cpp.o
[ 3%] Building CXX object CMakeFiles/MNN.dir/source/core/Session.cpp.o
[ 4%] Building CXX object CMakeFiles/MNN.dir/source/core/SizeComputer.cpp.o
[ 4%] Building CXX object CMakeFiles/MNN.dir/source/core/Tensor.cpp.o
[ 5%] Building CXX object CMakeFiles/MNN.dir/source/core/TensorUtils.cpp.o
[ 5%] Building CXX object CMakeFiles/MNN.dir/source/core/WrapExecution.cpp.o
[ 5%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUArgMax.cpp.o
[ 6%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUAsString.cpp.o
[ 6%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUBackend.cpp.o
[ 7%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUBatchMatMul.cpp.o
[ 7%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUBatchToSpaceND.cpp.o
[ 7%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUBinary.cpp.o
[ 8%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUCast.cpp.o
[ 8%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUConcat.cpp.o
[ 9%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUConst.cpp.o
[ 9%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUConvolution.cpp.o
[ 9%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUConvolutionDepthwise.cpp.o
[ 10%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUCrop.cpp.o
[ 10%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUCropAndResize.cpp.o
[ 11%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUDeconvolution.cpp.o
[ 11%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUDeconvolutionDepthwise.cpp.o
[ 11%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUDequantize.cpp.o
[ 12%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUDetectionOutput.cpp.o
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: unknown type name
'__unused'
CONV_SETUP_KERNELSIZE(4);
^
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:36:5: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int dst_depth_quad = UP_DIV(output->channel(), KB)...
^
/home/pi/MNN/include/MNNDefine.h:23:19: note: expanded from macro 'MNNUnused'
#define MNNUnused __unused
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: expected
unqualified-id
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:36:15: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int dst_depth_quad = UP_DIV(output->channel(), KB)...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: unknown type name
'__unused'
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:38:5: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int src_z_step = input->width() * input->height() * KB...
^
/home/pi/MNN/include/MNNDefine.h:23:19: note: expanded from macro 'MNNUnused'
#define MNNUnused __unused
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: expected
unqualified-id
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:38:15: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int src_z_step = input->width() * input->height() * KB...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: unknown type name
'__unused'
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:39:5: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int src_batch_step = input->stride(0)...
^
/home/pi/MNN/include/MNNDefine.h:23:19: note: expanded from macro 'MNNUnused'
#define MNNUnused __unused
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: expected
unqualified-id
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:39:15: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int src_batch_step = input->stride(0)...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: unknown type name
'__unused'
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:42:5: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int dst_batch_step = output->stride(0)...
^
/home/pi/MNN/include/MNNDefine.h:23:19: note: expanded from macro 'MNNUnused'
#define MNNUnused __unused
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: expected
unqualified-id
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:42:15: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int dst_batch_step = output->stride(0)...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: unknown type name
'__unused'
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:56:5: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int strideX_step = strideX * KB...
^
/home/pi/MNN/include/MNNDefine.h:23:19: note: expanded from macro 'MNNUnused'
#define MNNUnused __unused
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: expected
unqualified-id
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:56:15: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int strideX_step = strideX * KB...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: unknown type name
'__unused'
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:57:5: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int weight_sy_step = KB * KB * kernel_width...
^
/home/pi/MNN/include/MNNDefine.h:23:19: note: expanded from macro 'MNNUnused'
#define MNNUnused __unused
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: expected
unqualified-id
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:57:15: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int weight_sy_step = KB * KB * kernel_width...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: unknown type name
'__unused'
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:58:5: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int weight_sz_step = KB * KB * kernel_width * kernel_height...
^
/home/pi/MNN/include/MNNDefine.h:23:19: note: expanded from macro 'MNNUnused'
#define MNNUnused __unused
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: expected
unqualified-id
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:58:15: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int weight_sz_step = KB * KB * kernel_width * kernel_height...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: unknown type name
'__unused'
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:59:5: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int weight_z_step = kernel_height * kernel_width * src_depth_qua...
^
/home/pi/MNN/include/MNNDefine.h:23:19: note: expanded from macro 'MNNUnused'
#define MNNUnused __unused
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: error: expected
unqualified-id
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:59:15: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
MNNUnused int weight_z_step = kernel_height * kernel_width * src_depth_qua...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:155:71: error: use of undeclared
identifier 'dst_depth_quad'; did you mean 'src_depth_quad'?
...= [this, width, height, count, tileCount, threadNumber, dst_depth_quad, kernelCo...
^~~~~~~~~~~~~~
src_depth_quad
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: note: 'src_depth_quad'
declared here
CONV_SETUP_KERNELSIZE(4);
^
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:37:9: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
int src_depth_quad = UP_DIV(input->channel(), KB)...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:156:53: error: use of undeclared
identifier 'src_z_step'
padX, padY, src_height, src_width, src_z_step, dilateX, dilateY...
^
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:168:39: error: use of undeclared
identifier 'dst_depth_quad'; did you mean 'src_depth_quad'?
for (int dz = 0; dz < dst_depth_quad; ++dz) {
^~~~~~~~~~~~~~
src_depth_quad
/home/pi/MNN/source/backend/cpu/CPUDeconvolution.cpp:148:5: note: 'src_depth_quad'
declared here
CONV_SETUP_KERNELSIZE(4);
^
/home/pi/MNN/source/backend/cpu/compute/ConvOpt.h:37:9: note: expanded from macro
'CONV_SETUP_KERNELSIZE'
int src_depth_quad = UP_DIV(input->channel(), KB)...
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
CMakeFiles/MNN.dir/build.make:710: recipe for target 'CMakeFiles/MNN.dir/source/backend/cpu/CPUDeconvolution.cpp.o' failed
make[2]: *** [CMakeFiles/MNN.dir/source/backend/cpu/CPUDeconvolution.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/MNN.dir/all' failed
make[1]: *** [CMakeFiles/MNN.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

install MNN lib failed

swqa@swqa-dgx-1v-01:~/MNN/build$ make -j4
*** done ***
[ 0%] Built target MNN_SCHEMA
Scanning dependencies of target MNN
[ 0%] Building CXX object CMakeFiles/MNN.dir/source/backend/cpu/CPUBackend.cpp.o
[ 1%] Linking CXX shared library libMNN.so
[ 90%] Built target MNN
[ 91%] Linking CXX executable ../../getPerformance.out
[ 92%] Linking CXX executable ../../testModel.out
[ 92%] Linking CXX executable ../../MNNV2Basic.out
[ 92%] Linking CXX executable ../../backendTest.out
../../libMNN.so: undefined reference to _______()' collect2: error: ld returned 1 exit status tools/cpp/CMakeFiles/testModel.out.dir/build.make:95: recipe for target 'testModel.out' failed make[2]: *** [testModel.out] Error 1 CMakeFiles/Makefile2:298: recipe for target 'tools/cpp/CMakeFiles/testModel.out.dir/all' failed make[1]: *** [tools/cpp/CMakeFiles/testModel.out.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... ../../libMNN.so: undefined reference to ()'
collect2: error: ld returned 1 exit status
tools/cpp/CMakeFiles/backendTest.out.dir/build.make:95: recipe for target 'backendTest.out' failed
make[2]: *** [backendTest.out] Error 1
CMakeFiles/Makefile2:187: recipe for target 'tools/cpp/CMakeFiles/backendTest.out.dir/all' failed
make[1]: *** [tools/cpp/CMakeFiles/backendTest.out.dir/all] Error 2
../../libMNN.so: undefined reference to `
()'
collect2: error: ld returned 1 exit status
tools/cpp/CMakeFiles/MNNV2Basic.out.dir/build.make:121: recipe for target 'MNNV2Basic.out' failed
make[2]: *** [MNNV2Basic.out] Error 1
CMakeFiles/Makefile2:261: recipe for target 'tools/cpp/CMakeFiles/MNNV2Basic.out.dir/all' failed
make[1]: *** [tools/cpp/CMakeFiles/MNNV2Basic.out.dir/all] Error 2
[ 92%] Built target getPerformance.out
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

my env:
x86 ubuntu 18.04

model not fount ?

mobilenet_v2.caffe.mnn 、 mobilenet_v2_1.0_224.tflite.mnn 、squeezenet_v1.1.caffe.mnn not fount ?

error when make converter folder

try to compile MNN on my x64 PC with WSL environment. The Ubuntu version is 18.04 from Microsoft store, with libprotobuf 3.0.0.9 installed by apt-get.
this script https://github.com/alibaba/MNN/blob/master/doc/Install_EN.md can be compiled without any error. but when I try to compile converter folder, errors occur like

In file included from /mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/ArgMaxTf.cpp:9:0:
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:55:14: error: ‘function’ in namespace ‘std’ does not name a template type
typedef std::function<bool(const NodeDef& node, const OpTypePattern& pattern, const NodeMatch* match)>
^~~~~~~~
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:60:45: error: ‘match_constraint_fun’ has not been declared
GraphMatcher(const GraphDef& graph_def, match_constraint_fun func);
^~~~~~~~~~~~~~~~~~~~
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:62:37: error: ‘match_constraint_fun’ has not been declared
void SetMatchConstraintFunction(match_constraint_fun func);
^~~~~~~~~~~~~~~~~~~~
[ 10%] Building CXX object source/onnx/CMakeFiles/onnx.dir/BinaryOpOnnx.cpp.o
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:72:5: error: ‘match_constraint_fun’ does not name a type
match_constraint_fun match_constraint_;
^~~~~~~~~~~~~~~~~~~~
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:78:16: error: ‘function’ in namespace ‘std’ does not name a template type
const std::function<int(const NodeMatch&, const std::setstd::string&, const std::setstd::string&,
^~~~~~~~
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:78:24: error: expected ‘,’ or ‘...’ before ‘<’ token
const std::function<int(const NodeMatch&, const std::setstd::string&, const std::setstd::string&,
^
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:144:14: error: ‘function’ in namespace ‘std’ does not name a template type
typedef std::function<int(const GraphDef&, const TransformFuncContext& context, GraphDef*)> TransformFunc;
^~~~~~~~
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:146:31: error: ‘TransformFunc’ was not declared in this scope
typedef std::map<std::string, TransformFunc> TransformRegistry;
^~~~~~~~~~~~~
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:146:31: note: suggested alternative: ‘TransformFuncContext’
typedef std::map<std::string, TransformFunc> TransformRegistry;
^~~~~~~~~~~~~
TransformFuncContext
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:146:44: error: template argument 2 is invalid
typedef std::map<std::string, TransformFunc> TransformRegistry;
^
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:146:44: error: template argument 4 is invalid
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:150:49: error: ‘TransformFunc’ has not been declared
TransformRegistrar(const std::string& name, TransformFunc transform_func) {
^~~~~~~~~~~~~
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp: In constructor ‘TFModelOptimizer::TransformRegistrar::TransformRegistrar(const string&, int)’:
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/TfUtils.hpp:152:30: error: no match for ‘operator[]’ (operand types are ‘int’ and ‘const string {aka const std::__cxx11::basic_string}’)
(*transform_registry)[name] = transform_func;
^
[ 11%] Linking CXX static library libCOMMON_LIB.a
[ 11%] Built target COMMON_LIB
[ 12%] Building CXX object source/tflite/CMakeFiles/tflite.dir/ConvolutionTflite.cpp.o
source/tensorflow/CMakeFiles/tensorflow.dir/build.make:142: recipe for target 'source/tensorflow/CMakeFiles/tensorflow.dir/ArgMaxTf.cpp.o' failed

then I add #include <functional> to tfUtils.hpp to fix this error. but got this

/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/SplitTf.cpp: In member function ‘virtual void SplitVTf::run(MNN::OpT*, TmpNode*, TmpGraph*)’:
/mnt/d/3rdparty/MNN/tools/converter/source/tensorflow/SplitTf.cpp:106:53: error: no match for ‘operator[]’ (operand types are ‘const google::protobuf::RepeatedField’ and ‘int’)
splitvParam->axis = value.tensor().int_val()[0];
^
source/tensorflow/CMakeFiles/tensorflow.dir/build.make:1462: recipe for target 'source/tensorflow/CMakeFiles/tensorflow.dir/SplitTf.cpp.o' failed
make[2]: *** [source/tensorflow/CMakeFiles/tensorflow.dir/SplitTf.cpp.o] Error 1
CMakeFiles/Makefile2:202: recipe for target 'source/tensorflow/CMakeFiles/tensorflow.dir/all' failed
make[1]: *** [source/tensorflow/CMakeFiles/tensorflow.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

can I get any help ? seems its a protobuf problem but I cannot get the reason.

编译convert是出错,tensorflow1.10, anaconda3 3.6

source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::ArenaImpl::AllocateAlignedAndAddCleanup(unsigned long, void (*)(void*))' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Add(float const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<long>::InternalSwap(google::protobuf::RepeatedField<long>*)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::unsafe_data() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::AddDescriptors(google::protobuf::internal::DescriptorTable const*)' source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField::Add(unsigned long const&)'
source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField<unsigned int>::~RepeatedField()' source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField::RepeatedField(google::protobuf::RepeatedField const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<bool>::RepeatedField(google::protobuf::RepeatedField<bool> const&)' source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField::InternalSwap(google::protobuf::RepeatedField)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedInputStream::DecrementRecursionDepthAndPopLimit(int)' source/caffe/libcaffe.so: undefined reference to google::protobuf::internal::WireFormatLite::UInt32Size(google::protobuf::RepeatedField const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<int>::RepeatedField()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::~RepeatedField()'
source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField<unsigned int>::RepeatedField(google::protobuf::RepeatedField<unsigned int> const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >::Get(int) const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<int>::Capacity() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::WireFormatLite::VerifyUtf8String(char const
, int, google::protobuf::internal::WireFormatLite::Operation, char const*)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Add()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::data() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<bool>::RepeatedField(google::protobuf::Arena*)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::WireFormatLite::WriteFloatArray(float const*, int, google::protobuf::io::CodedOutputStream*)'
source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField<unsigned long>::unsafe_data() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::MapFieldBase::SyncRepeatedFieldWithMapNoLock() const'
source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField<unsigned int>::AddAlreadyReserved(unsigned int const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::mutable_data()'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<int>::AddAlreadyReserved(int const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Add(double const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedInputStream::ReadVarint64Fallback()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Capacity() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::WireFormatLite::WriteBoolArray(bool const*, int, google::protobuf::io::CodedOutputStream*)' source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField::data() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::UnknownFieldSet::default_instance()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Clear()'
source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField<unsigned long>::MergeFrom(google::protobuf::RepeatedField<unsigned long> const&)' source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField::Clear()'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::MapFieldBase::SyncMapWithRepeatedField() const' source/caffe/libcaffe.so: undefined reference to google::protobuf::internal::WireFormat::ReadPackedEnumPreserveUnknowns(google::protobuf::io::CodedInputStream*, unsigned int, bool ()(int), google::protobuf::UnknownFieldSet, google::protobuf::RepeatedField)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedInputStream::IncrementRecursionDepthAndPushLimit(int)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Capacity() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::WireFormatLite::Int64Size(google::protobuf::RepeatedField<long> const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::data() const'
source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField<unsigned long>::InternalSwap(google::protobuf::RepeatedField<unsigned long>*)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::AddAlreadyReserved(float const&)'
source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField<unsigned int>::Capacity() const' source/tensorflow/libtensorflow.so: undefined reference to vtable for google::protobuf::internal::MapFieldBase'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::DestroyMessage(void const*)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::RepeatedField(google::protobuf::RepeatedField const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<float>::InternalSwap(google::protobuf::RepeatedField<float>*)' source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField::MergeFrom(google::protobuf::RepeatedField const&)'
source/onnx/libonnx.so: undefined reference to google::protobuf::internal::WireFormatLite::UInt64Size(google::protobuf::RepeatedField<unsigned long> const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::WireFormatLite::Int32Size(google::protobuf::RepeatedField const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<long>::data() const' source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField::AddAlreadyReserved(unsigned long const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<int>::Clear()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::RepeatedField()'
source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField<unsigned long>::~RepeatedField()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >::begin() const'
source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField<unsigned int>::unsafe_data() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::mutable_data()'
source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField<unsigned long>::RepeatedField()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::RepeatedField(google::protobuf::RepeatedField const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<float>::Truncate(int)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Add(int const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedInputStream::ReadVarint32Fallback(unsigned int)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::InitSCCImpl(google::protobuf::internal::SCCInfoBase
)'
source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField<unsigned long>::Capacity() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::RepeatedField(google::protobuf::Arena*)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<int>::size() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedOutputStream::WriteVarint64SlowPath(unsigned long)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<bool>::MergeFrom(google::protobuf::RepeatedField<bool> const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Add(long const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::RepeatedPtrField(google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >::RepeatedPtrField(google::protobuf::Arena*)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::MapFieldBase::SetMapDirty()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::AddAlreadyReserved(bool const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedOutputStream::WriteVarint32SlowPath(unsigned int)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::unsafe_data() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::end() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::RepeatedField(google::protobuf::Arena*)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<float>::~RepeatedField()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::MergeFrom(google::protobuf::RepeatedField const&)'
source/tensorflow/libtensorflow.so: undefined reference to typeinfo for google::protobuf::internal::MapFieldBase' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Clear()'
source/caffe/libcaffe.so: undefined reference to google::protobuf::internal::DestroyString(void const*)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::fixed_address_empty_string[abi:cxx11]'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::Message::SpaceUsedLong() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedInputStream::SkipFallback(int, int)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<double>::InternalSwap(google::protobuf::RepeatedField<double>*)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::RepeatedField(google::protobuf::RepeatedField const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<double>::size() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Add(bool const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<bool>::Clear()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::Arena::OnArenaAllocation(std::type_info const*, unsigned long) const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<double>::Resize(int, double const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::GetOwnedMessageInternal(google::protobuf::Arena*, google::protobuf::MessageLite*, google::protobuf::Arena*)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Clear()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::InternalSwap(google::protobuf::RepeatedField)'
source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField<unsigned long>::size() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::unsafe_data() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::MergeFrom(google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::ArenaImpl::AllocateAligned(unsigned long)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<double>::unsafe_data() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::AssignDescriptors(google::protobuf::internal::DescriptorTable const
)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::WireFormatLite::WriteDoubleArray(double const*, int, google::protobuf::io::CodedOutputStream*)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::ArenaImpl::AddCleanup(void*, void ()(void))'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<long>::AddAlreadyReserved(long const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::MergeFrom(google::protobuf::RepeatedField const&)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<long>::Clear()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::RepeatedField(google::protobuf::Arena*)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<double>::AddAlreadyReserved(double const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::MapFieldBase::~MapFieldBase()'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<float>::MergeFrom(google::protobuf::RepeatedField<float> const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >::RepeatedPtrField()'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<int>::RepeatedField(google::protobuf::Arena*)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::size() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedInputStream::ReadVarintSizeAsIntFallback()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::InternalSwap(google::protobuf::RepeatedField*)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<bool>::size() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::data() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<bool>::~RepeatedField()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::RepeatedField()'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<float>::RepeatedField()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::~RepeatedField()'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedInputStream::ReadTagFallback(unsigned int)' source/onnx/libonnx.so: undefined reference to google::protobuf::RepeatedField::Clear()'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<double>::Capacity() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::data() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::OnShutdownRun(void (*)(void const*), void const*)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Truncate(int)'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::io::CodedInputStream::SetTotalBytesLimit(int)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::~RepeatedField()'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::RepeatedPtrFieldBase::InternalExtend(int)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::RepeatedField()'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<double>::RepeatedField(google::protobuf::RepeatedField<double> const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField::Capacity() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<float>::Resize(int, float const&)' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >::size() const'
source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedField<int>::unsafe_data() const' source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField::Add(unsigned int const&)'
source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField<unsigned int>::RepeatedField()' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >::~RepeatedPtrField()'
source/caffe/libcaffe.so: undefined reference to google::protobuf::RepeatedField<unsigned int>::size() const' source/tensorflow/libtensorflow.so: undefined reference to google::protobuf::internal::MapFieldBase::SpaceUsedExcludingSelfNoLock() const'
source/tensorflow/libtensorflow.so: undefined reference to `google::protobuf::RepeatedField::size() const'
collect2: error: ld returned 1 exit status
CMakeFiles/MNNConvert.dir/build.make:154: recipe for target 'MNNConvert' failed
make[2]: *** [MNNConvert] Error 1
CMakeFiles/Makefile2:147: recipe for target 'CMakeFiles/MNNConvert.dir/all' failed
make[1]: *** [CMakeFiles/MNNConvert.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

how to use caffe model with ReverseLayer?

I have one caffe model with Reverse layer.
official caffe doesn't include Reverse layer.
but there are some caffe branch has this layer.
when converting, crash happens:

text_format.cc:288] Error parsing text-format caffe.NetParameter: 344:17: Message type "caffe.LayerParameter" has no field named "reverse_param".
terminate called after throwing an instance of 'Error'

How to convert ONNX "Upsample" to MNN "interp"?

Hi,
When I tried to convert my ONNX model to MNN model, i got the following error:
Check failed: opConverter ==> MNN Converter NOT_SUPPORTED_OP: [ Upsample ].
But i found there is an "interp" operator in MNN supported Op-list.
image
I think both of them have the same function. Could you give me some suggestions for fixing it?

An android demo error, solved by turn off the instant run, but why can't instant run been applied?

Android Studio报错

2019-05-13 14:38:26.816 21653-21653/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.taobao.android.mnndemo, PID: 21653
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.taobao.android.mnndemo/com.taobao.android.mnndemo.VideoActivity}: java.lang.ClassNotFoundException: Didn't find class "com.taobao.android.mnndemo.VideoActivity" on path: DexPathList[[zip file "/data/app/com.taobao.android.mnndemo-XLHXc1msoLEj8_JRUFdEiQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.taobao.android.mnndemo-XLHXc1msoLEj8_JRUFdEiQ==/lib/arm64, /data/app/com.taobao.android.mnndemo-XLHXc1msoLEj8_JRUFdEiQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2901)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3078)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:187)
        at android.app.ActivityThread.main(ActivityThread.java:7021)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:514)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.taobao.android.mnndemo.VideoActivity" on path: DexPathList[[zip file "/data/app/com.taobao.android.mnndemo-XLHXc1msoLEj8_JRUFdEiQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.taobao.android.mnndemo-XLHXc1msoLEj8_JRUFdEiQ==/lib/arm64, /data/app/com.taobao.android.mnndemo-XLHXc1msoLEj8_JRUFdEiQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1174)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2891)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3078at android.app.ActivityThread.-wrap11(Unknown Source:0at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794at android.os.Handler.dispatchMessage(Handler.java:106at android.os.Looper.loop(Looper.java:187at android.app.ActivityThread.main(ActivityThread.java:7021at java.lang.reflect.Method.invoke(Native Methodat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:514at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888

解决办法

迷之解决

File -> Settings -> Build,Execution, Deployment -> Instant Run -> Uncheck the checkbox for instant run

20190513-150957

MNN/OpRegister.sh has some grammar error

one error:
it should use bash instead of sh if you want to use function because some shell version has some different usage for function

one error:
read_dir should be put behind findword

one error:
result=echo $line| awk -F $3 '{ should be : result=echo $line| awk -F '$3' '{

one error:
when fix these error, and run it during cmake .. in the build folder:

Register Op Begin
Start Register CPU
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Start Register Shape
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Start Register Metal
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Error: no such file "[(,)]"
Register Op End

ubuntu 16.04 converter error

os:ubuntu16.04
gcc:5.4.0

Follow the doc , try convert caffe mobilenet-v1 to MNN, MNNConvert crushed.

(gdb) r -f CAFFE --prototxt mobilenet_v1.caffe.prototxt --modelFile mobilenet_v1.caffe.caffemodel --bizCode MNN --MNNModel mobilenet.mnn
Starting program: /home/jack/MNN/resource/build/MNNConvert -f CAFFE --prototxt mobilenet_v1.caffe.prototxt --modelFile mobilenet_v1.caffe.caffemodel --bizCode MNN --MNNModel mobilenet.mnn
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

MNNConverter Version: 0.0.0.1 - MNN @ 2018

Start to Convert Other Model Format To MNN Model...
Start to Optimize the MNN Net...

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff67b1970 in std::__cxx11::basic_string<char, std::char_traits, std::allocator >::empty() const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) bt
#0 0x00007ffff67b1970 in std::__cxx11::basic_string<char, std::char_traits, std::allocator >::empty() const () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1 0x0000000000530f87 in MNN::CreateNet(flatbuffers::FlatBufferBuilder&, MNN::NetT const*, std::function<unsigned long (void*)> const*) (_fbb=..., _o=0x0, _rehasher=0x0)
at /home/jack/MNN/tools/converter/source/IR/MNN_generated.h:2962
#2 0x0000000000530e11 in MNN::Net::Pack(flatbuffers::FlatBufferBuilder&, MNN::NetT const*, std::function<unsigned long (void*)> const*) (_fbb=..., _o=0x0, _rehasher=0x0)
at /home/jack/MNN/tools/converter/source/IR/MNN_generated.h:2955
#3 0x0000000000520661 in writeFb (netT=std::unique_ptrMNN::NetT containing 0x0,
MNNModelFile="mobilenet.mnn", benchmarkModel=false)
at /home/jack/MNN/tools/converter/source/common/writeFb.cpp:58
#4 0x00000000004d64ba in main (argc=11, argv=0x7fffffffdcb8)
at /home/jack/MNN/tools/converter/source/MNNConverter.cpp:46

How to set input data manuly

The ios demo use a '->convert' function to set input images to inputtensor, buy my input data is not a image, i want to copy my data manuly, can i use memcpy to copy my data to temptensor, and then use copyfromhosttensor?
so what's the requirement of the inputdimenison type? if i wanto to do that above ,do i need to convert my NHWC type to another type?

Convert tensorflow model err

./MNNConvert -f TF --modelFile ./frozen_model.pb --MNNModel testTRmodel.mnn --bizCode MNN

MNNConverter Version: 0.0.0.1 - MNN @ 2018

Start to Convert Other Model Format To MNN Model...
terminate called after throwing an instance of 'Error'
what(): [10:45:39] /data1/image_data/data/online_pushed_data/parse_result/illegalPicCls/MNN/tools/converter/source/tensorflow/FusedBatchNormTf.cpp:46: Check failed: channels > 0 ==> Batchnorm Channels Paramter is Wrong! 0 name: MobileNet/batch_normalization/FusedBatchNorm
Aborted (core dumped)

是我模型有问题吗? 但是tensorflow跑起来没有错误呀,pb文件也测试过

iOS playground assertion failed

Assertion failed: (TensorUtils::compareTensors(infer(net, GPU), infer(net, CPU), 0.01)), function operator(), file /Users/tudou/Downloads/MNN-master/test/op/QuantizedSoftmaxTest.cpp, line 136.

[Build] Cross Compiling for armv7(hisi platform) got "redefined" error.

1. System Info

  • Host : Linux 4.15.0-47-generic #50~16.04.1-Ubuntu SMP x86_64 GNU/Linux
  • Target: Linux 4.9.37 #2 SMP armv7l GNU/Linux
  • Compiler: arm-himix200-linux-XX

2. Operation

cd path/to/MNN
./schema/generate.sh

mkdir build
cmake .. -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_SYSTEM_PROCESSOR=armv7 -DCMAKE_C_COMPILER=path/to/arm-himix200-linux-gcc -DCMAKE_CXX_COMPILER=path/to/arm-himix200-linux-g++

make -j4

Problem

All files were compiled but got some redefination errors for linking:

CMakeFiles/MNN.dir/source/backend/cpu/arm/arm32/MNNAddBias.S.o: In function `MNNAddBias':
(.text+0x0): multiple definition of `MNNAddBias'
CMakeFiles/MNN.dir/source/backend/cpu/compute/CommonOptFunction.cpp.o:CommonOptFunction.cpp:(.text.MNNAddBias+0x0): first defined here
CMakeFiles/MNN.dir/source/backend/cpu/arm/arm32/MNNAddBiasRelu.S.o: In function `MNNAddBiasRelu':
(.text+0x0): multiple definition of `MNNAddBiasRelu'
CMakeFiles/MNN.dir/source/backend/cpu/compute/CommonOptFunction.cpp.o:CommonOptFunction.cpp:(.text.MNNAddBiasRelu+0x0): first defined here

...

collect2: error: ld returned 1 exit status
CMakeFiles/MNN.dir/build.make:3533: recipe for target 'libMNN.so' failed
make[2]: *** [libMNN.so] Error 1
CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/MNN.dir/all' failed
make[1]: *** [CMakeFiles/MNN.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

onnx to mnn error

error message:
./MNNConvert -f ONNX --modelFile ~/GitHub/DFace/mobile_v2_pnet.onnx --MNNModel ~/GitHub/DFace/mobile_v2_pnet.mnn --bizCode MNN

MNNConverter Version: 0.0.0.1 - MNN @ 2018

Start to Convert Other Model Format To MNN Model...
[22:08:27] /Users/feipeng/GitHub/MNN/tools/converter/source/onnx/onnxConverter.cpp:29: ONNX Model ir version: 3
libc++abi.dylib: terminating with uncaught exception of type Error: [22:08:27] /Users/feipeng/GitHub/MNN/tools/converter/source/onnx/onnxConverter.cpp:83: Check failed: opConverter ==> MNN Converter NOT_SUPPORTED_OP: [ Clip ]
[1] 22273 abort ./MNNConvert -f ONNX --modelFile ~/GitHub/DFace/mobile_v2_pnet.onnx --MNNMode

how can i solve it?

run ./tools/script/get_model.sh error

swqa@swqa-dgx-1v-01:~/MNN$ ./tools/script/get_model.sh
building converter ...
===> Generating Schema...
===> Done!
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find Protobuf (missing: Protobuf_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.10/Modules/FindProtobuf.cmake:543 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:32 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/swqa/MNN/tools/converter/build/CMakeFiles/CMakeOutput.log".
See also "/home/swqa/MNN/tools/converter/build/CMakeFiles/CMakeError.log".
make: *** No rule to make target 'clean'. Stop.
make: *** No targets specified and no makefile found. Stop.
cp: cannot stat '../tools/converter/build/MNNConvert': No such file or directory
./tools/script/get_model.sh: line 28: ./build/MNNConvert: No such file or directory
./tools/script/get_model.sh: line 28: ./build/MNNConvert: No such file or directory
./tools/script/get_model.sh: line 28: ./build/MNNConvert: No such file or directory
./tools/script/get_model.sh: line 28: ./build/MNNConvert: No such file or directory
./tools/script/get_model.sh: line 38: ./build/MNNConvert: No such file or directory
./tools/script/get_model.sh: line 38: ./build/MNNConvert: No such file or directory
./tools/script/get_model.sh: line 47: ./build/MNNConvert: No such file or directory

make failed

After run cmake .. on my Ubuntu 16.04 CUDA8.0 ,then run make -j4 ,I got this error:

/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:50:33: error: expected initializer before ‘OpType_Size__’
extern void SizeOpComputer OpType_Size_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:51:32: error: expected initializer before ‘OpType_Slice__’
extern void SliceComputer OpType_Slice_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:52:34: error: expected initializer before ‘OpType_SliceTf__’
extern void SliceTfComputer OpType_SliceTf_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:53:45: error: expected initializer before ‘OpType_SpaceToBatchND__’
extern void SpaceToBatchNDSizeComputer OpType_SpaceToBatchND_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:54:38: error: expected initializer before ‘OpType_Squeeze__’
extern void SqueezeSizeComputer OpType_Squeeze_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:55:39: error: expected initializer before ‘OpType_StridedSlice__’
extern void StridedSliceComputer OpType_StridedSlice_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:56:44: error: expected initializer before ‘OpType_ConvertTensor__’
extern void TensorConvertSizeComputer OpType_ConvertTensor_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:57:44: error: expected initializer before ‘OpType_TfQuantizedConv2D__’
extern void TFQuantizedConv2DComputer OpType_TfQuantizedConv2D_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:58:44: error: expected initializer before ‘OpType_QuantizedDepthwiseConv2D__’
extern void TFQuantizedConv2DComputer OpType_QuantizedDepthwiseConv2D_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:59:31: error: expected initializer before ‘OpType_Tile__’
extern void TileComputer OpType_Tile_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:60:37: error: expected initializer before ‘OpType_TopKV2__’
extern void TopKV2SizeComputer OpType_TopKV2_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:61:36: error: expected initializer before ‘OpType_Transpose__’
extern void TransposeComputer OpType_Transpose_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:62:33: error: expected initializer before ‘OpType_Unpack__’
extern void UnpackComputer OpType_Unpack_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:63:36: error: expected initializer before ‘OpType_Where__’
extern void WhereSizeComputer OpType_Where_();
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:64:2: error: ‘nvoid’ does not name a type
\nvoid registerShapeOps() {
^
/home/t702/lianghua/MNN/source/shape/ShapeRegister.hpp:127:3: error: ‘n’ does not name a type
}\n}

Add op error

I am following https://github.com/alibaba/MNN/blob/master/doc/AddOp_EN.md this doc to add a caffe Op named AffineCrop. After finish 4 steps in the doc, compile error

Scanning dependencies of target MNNConvert
[ 98%] Building CXX object CMakeFiles/MNNConvert.dir/source/MNNConverter.cpp.o
[ 99%] Building CXX object CMakeFiles/MNNConvert.dir/source/cli.cpp.o
[100%] Building CXX object CMakeFiles/MNNConvert.dir/source/config.cpp.o
[100%] Linking CXX executable MNNConvert
source/caffe/libcaffe.so: undefined reference to `vtable for AffineCrop'
collect2: error: ld returned 1 exit status
CMakeFiles/MNNConvert.dir/build.make:121: recipe for target 'MNNConvert' failed
make[2]: *** [MNNConvert] Error 1
CMakeFiles/Makefile2:152: recipe for target 'CMakeFiles/MNNConvert.dir/all' failed
make[1]: *** [CMakeFiles/MNNConvert.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Sorry about my poor knowledge of flatbuffers, can someone gives any suggestion, thanks

MNNConverter not support [Equal, SparseToDense]

MNNConverter Version: 0.0.0.1 - MNN @ 2018

Start to Convert Other Model Format To MNN Model...


Strongly Recommended: Apply Tensorflow Tool [graph transform] firstly!!! ==> fold_constants


terminate called after throwing an instance of 'Error'
what(): [09:58:18] /disk2/shawn/MNN_workspace/MNN/tools/converter/source/tensorflow/TmpGraph.cpp:64:

===========This Model Has NOT_SUPPORTED_OP===========!!!

MNN NOT_SUPPORTED_OP: ======>[ Equal, SparseToDense, ]<======

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.