Caffe框架下OPenMV的机器学习(七)生成OPenMV二进制文件

1.  量化神经网络

这一步就很轻松了,OPenMV源码中给我们提供了两个脚本:

nn_quantizer.py  nn_convert.py ,我们将这两个脚本拷贝到根目录下,然后继续编写批处理文件,

python nn_quantizer.py --gpu --model ^
路径/***训练参数文件***.prototxt ^
--weights 路径/***训练模型文件***.caffemodel ^
--save 路径/***输出的量化文件***.pkl
pause

神经网络模型训练完成后,我们需要将其减少到合适的大小。为此,我们使用 量化脚本(nn_quantizer.py)将 Caffe 模型权重和激活从 32 位浮点格式转换为 8 位定点格式。这样不仅可以减少网络大小,还可以避免浮点计算。

该 NN 量化器脚本的工作方式为,测试网络并找出动态定点表示的最佳格式。该脚本的输出为序列化 Python (.pkl) 文件,其中包括网络的模型、量化的权重和激活以及每一层的量化格式。

运行后得到的输出: 

输出显示模型经过量化后,准确率还有83.7%

Caffe框架下OPenMV的机器学习(七)生成OPenMV二进制文件_第1张图片

2.  生成二进制文件

使用 OpenMV NN 转换器脚本将模型转换为二进制格式,可由 OpenMV Cam 运行。该转换器脚本会输出每个层类型的代码,后跟该层的维度和权重。

在 OpenMV Cam 上,固件读取该二进制文件,并使用链表数据结构在内存中构建网络。

编写批处理文件:

python nn_convert.py --model D:/OPenMV_Network/myprint_number.pkl ^
--mean D:/OPenMV_Network/mean.binaryproto ^
--output D:/OPenMV_Network/myprint_number.network
pause

运行脚本得到:

Caffe框架下OPenMV的机器学习(七)生成OPenMV二进制文件_第2张图片

 

 

 

你可能感兴趣的:(Deep,Learning)