-
Notifications
You must be signed in to change notification settings - Fork 1.7k
demo
代码位置:demo/exec/multiPose.cpp
- 下载原始的Tensorflow模型 pose model
- 使用 模型转换工具 转换为 MNN 模型,转换时加上参数 --keepInputFormat=0 【把输入由NHWC转换为NC4HW4布局】
- 执行姿态检测
./multiPose.out model.mnn input.png pose.png
效果示例:
代码位置:demo/exec/segment.cpp
下载 deeplabv3 分割模型并转换到 mnn 模型 https://storage.googleapis.com/download.tensorflow.org/models/tflite/gpu/deeplabv3_257_mv_gpu.tflite
./segment.out model.mnn input.png result.png
效果示例:
代码位置:demo/exec/pictureRecognition.cpp
下载 mobilenet 模型并转换为 MNN 格式 第一个参数为 MNN 模型地址 第二个参数为图像地址 追加参数则为下一张图像地址
示例:
./pictureRecognition.out moiblenet.mnn Test.jpg
效果示例:
输出:
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
代码位置:pymnn/examples/MNNEngineDemo/
测试代码包含:
-
mobilenet_demo.py
使用Session进行图片分类示例 -
mobilenet_demo_2.py
使用Runtime创建Session进行图片分类示例 -
gpu_session_demo.py
使用Session的GPU后端进行图片分类示例
资源文件如下:
示例:
$ unzip mobilenet_demo.zip
$ python mobilenet_demo.py mobilenet_demo/mobilenet_v1.mnn mobilenet_demo/ILSVRC2012_val_00049999.JPEG
Load Cache file error.
expect 983
output belong to class: 983
$ python mobilenet_demo_2.py mobilenet_demo/mobilenet_v1.mnn mobilenet_demo/ILSVRC2012_val_00049999.JPEG
Load Cache file error.
MNN use low precision
<capsule object NULL at 0x7fdd0185a270> (True,)
MNN use low precision
memory_info: 22.382057MB
flops_info: 568.792175M
backend_info: 13
expect 983
output belong to class: 983
$ python gpu_session_demo.py mobilenet_demo/mobilenet_v1.mnn mobilenet_demo/ILSVRC2012_val_00049999.JPEG
Testing gpu model calling method
Load Cache file error.
MNN use high precision
Can't Find type=3 backend, use 0 instead
Can't Find type=3 backend, use 0 instead
Run on backendtype: 13
expect 983
output belong to class: 983
代码位置:pymnn/examples/MNNExpr
$ python mobilenet_demo.py mobilenet_demo/mobilenet_v1.mnn mobilenet_demo/ILSVRC2012_val_00049999.JPEG
expect 983
output belong to class: 983
代码位置:pymnn/examples/MNNQuant
离线量化工具,用法参考, 资源文件下载 示例:
$ python test_mnn_offline_quant.py --mnn_model quant_demo/mobilenet_v2_tfpb_train_withBN.mnn \
--quant_imgs quant_demo/quant_imgs \
--quant_model ./quant_model.mnn
output names: MobilenetV2/Predictions/Reshape_1
100%|██████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:46<00:00, 23.29s/it]
Epoch cost: 46.618 s.
quantized model save to ./quant_model.mnn
代码位置:pymnn/examples/MNNTrain
测试代码包含:
mnist
mobilenet_finetune
module_save
quantization_aware_training
使用mnist数据训练模型,并测试准确率,无需下载资源,用法如下:
$ pip install mnist
$ python train_mnist.py
train loss: 2.3346531
train loss: 0.28027835
train loss: 0.26191226
train loss: 0.09180952
train loss: 0.14287554
train loss: 0.14296289
train loss: 0.060721636
train loss: 0.037558462
train loss: 0.11289845
train loss: 0.04905951
Epoch cost: 47.505 s.
Save to 0.mnist.mnn
test acc: 96.25 %
这个示例展示了如何使用MobilenetV2在你的数据集上finetune一个图像分类器。 示例资源文件:
用法如下:
$ unzip model.zip train_dataset.zip test_dataset.zip
$ python mobilenet_transfer.py --model_file mobilenet_v2_tfpb_train_public.mnn --train_image_folder train_images --train_txt train.txt --test_image_folder test_images --test_txt test.txt --num_classes 1000
# TODO: 当前版本不支持FixModule无法执行该示例
AttributeError: module 'MNN.nn' has no attribute 'FixModule'
演示了模型权值的存储和加载
$ python test_save.py
0.0004
10
训练量化,用法如下:
$ python quant_aware_training.py --model_file quant_demo/mobilenet_v2_tfpb_train_withBN.mnn --val_image_path quant_demo/quant_imgs --val_txt quant_demo/val.txt
代码位置:project/android/demo
按照project/android/demo/READNE.md
的步骤,首先安装开发所需工具;然后下载并转换模型;之后就可以编译成Android APP执行测试。
效果示例:
首先编译(如果已编译可以跳过)MNNConvert
,操作如下:
cd MNN
mkdir build && cd build
cmake -DMNN_BUILD_CONVERTER=ON ..
make -j8
然后下载并转换模型: 切到编译了 MNNConvert 的目录,如上为 build 目录,执行
sh ../tools/script/get_model.sh
代码位置:project/ios
使用xcode
打开project/ios/MNN.xcodeproj
, target
选择demo
,既可编译运行。
效果示例:
欢迎开发者提供示例,可以在issue中提交自己的示例项目,审核通过后可以再此处展示