1. 编译

1.1 Linux / Mac

使用根目录的CMakeLists.txt ,打开 MNN_BUILD_DEMO 开关

  1. cd path/to/MNN
  2. # 生成 schema ,可选
  3. cd schema && ./generate.sh
  4. # 进行编译
  5. cd path/to/MNN
  6. mkdir build && cd build
  7. cmake -DMNN_BUILD_DEMO=ON ..
  8. make -j8

1.2 Windows

使用根目录的CMakeLists.txt ,打开 MNN_BUILD_DEMO 开关

  1. cd path/to/MNN
  2. powershell ./schema/generate.ps1
  3. mkdir build
  4. cd build
  5. cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DMNN_BUILD_DEMO=ON ..
  6. nmake

2. Demo 说明

2.1 姿态检测

代码:demo/exec/multiPose.cpp

  1. 下载原始的Tensorflow模型 pose model
  2. 使用 模型转换工具 转换为 MNN 模型
  3. 执行姿态检测
  1. ./multiPose.out model.mnn input.jpg pose.png

效果示例:
image.png

post.png:
image.png

2.2 图像实例分割

代码:demo/exec/segment.cpp

下载 deeplabv3 分割模型并转换到 mnn 模型
https://storage.googleapis.com/download.tensorflow.org/models/tflite/gpu/deeplabv3_257_mv_gpu.tflite

  1. ./segment.out model.mnn input.jpg result.png

效果示例:
input.jpg:
image.png

result.png:
image.png

2.3 图像识别

代码:demo/exec/pictureRecognition.cpp

下载 mobilenet 模型并转换为 MNN 格式
第一个参数为 MNN 模型地址
第二个参数为图像地址
追加参数则为下一张图像地址

示例:

  1. ./pictureRecognition.out moiblenet.mnn Test.jpg

效果示例:
TestMe.jpg
image.png

输出:
Can’t Find type=4 backend, use 0 instead
For Image: TestMe.jpg
386, 0.419250
101, 0.345093
385, 0.214722
347, 0.012001
346, 0.002010
348, 0.001876
294, 0.001247
349, 0.000761
354, 0.000443
345, 0.000441

第一行表示识别出可能性最大的类别编号,在相应的 synset_words.txt 去查找对应的类别,如 demo/model/MobileNet/synset_words.txt