Caffe模型地址
CMSIS-NN CIFAR10示例
这个例子展示了如何将经过训练的Caffe模型量化为8位,并使用[CMSIS-NN]这个将其部署到Arm Cortex-M 的CPU上。
入门:
从训练过的Caffe模型生成代码依据的步骤如下:
1、Caffe模型协议文本的网络解析。
2、量化到8bit权重和激活。
3、使用优化神经网络生成代码。
nn_quantizer.py: :需要Caffe模型定义用来训练/测试由有效的数据路径(lmdb)和训练模型文件(.caffemodel)组成的模型。它解析网络图的连通性,逐层量化为 8 bit权重/激活,同时在测试集上的精度损失达到最小。其次它将网络图连接性、量化参数转储到pickle文件中。
code_gen.py: :从上一部获得得到的量化参数和网络图连通性,并生成由nn function生成的代码。支持的层:卷积、内积、池花(最大/平均)和relu层。它生成(a)weight.h(b)parameter.h:由量化范围和(c)main.cpp:网络代码组成。
Note::确保Caffe模型已经安装,以及它的python路径是否添加入$PYTHONPATH 环境变量中。
用法:
1、在.prototxt文件中更新数据(lmdb)路径,并运行nn_quantizer.py 解析以及量化网络。这一步如果在CPU上运行的话需要一段时间,因为在数据集上确认准确性的时候会逐层量化网络。
bash脚本语言
python nn_quantizer.py --model models/cifar10_m4_train_test.prototxt \
--weights models/cifar10_m4_iter_70000.caffemodel.h5 \
--save models/cifar10_m4.pkl
**Note:*要启用GPU进行量化扫描,请使用–gpu参数。
2、在Arm Cortex-M CPUs上运行代码
python code_gen.py --model models/cifar10_m4.pkl --out_dir code/m4
常见问题:
1、ImportError: No module named caffe
将Caffe python安装路径添加到$PYTHONPATH环境变量,例如
export PYTHONPATH="/home/ubuntu_user/caffe/python:$PYTHONPATH"
2、 F0906 15:49:48.701362 11933 db_lmdb.hpp:15] Check failed: mdb_status == 0 (2 vs. 0) No such file or directory
确保模型prototxt定义中存在有效的数据集(lmdb),因为需要数据集来查找激活的量化范围。(可以看这个网站)
已知限制:
1.解析器仅支持conv、pool、relu、fc层。
2.量化器仅支持前向反馈网络,而不支持分支出入(例如:SqueezeNet)