
下载地址: https://pan.horizon.ai/index.php/s/mpm8deD2NBrKdYd
演示视屏157M,时长25分钟
下载地址: https://pan.horizon.ai/index.php/s/x8cAnjxpyCaz6Ae
1.1训练任务简介:
MNIST项目的目的是将0-9的手写数字图片正确分类.
项目总共包含60000张图片, 其中50000张为训练图片, 10000张为测试图片.
每张图片长28像素, 宽28像素, 单通道. 每张图包含
一个数字,每个数字被放在图片的中央.
此文档配套软件包为“工具链3.2.0版本”.
下载网址为:
https://pan.horizon.ai/index.php/s/7PjWC6iJmsiLJSC?path=/Tensorflow
密码: 密码请联系地平线获取
Docker/tensorflow-horizon-docker-v3.2.0.tar.gz
Embedded-System-SDK/embedded_release_sdk-v3.2.0.6.tar.gz
Doc/Tensorflow-Doc-v3.2.0.1_cn.zip
docker load < tensorflow-horizon-docker-v3.2.0.tar.gz
docker run -it --rm --shm-size="15g" -v /home:/data hub.hobot.cc/aitools/tf-toolkit:v3.2.0.3 /bin/bash
1.3 模型训练说明
直接将mnist_classification 工程放在docker中home目录下.
可直接运行 sh pipline.sh.
整个过程需要10分钟左右.
pipline.sh 是训练入口.
test_images 测试集指标, 该指标将用于检验模型部署一致性.:

configs/mnistnet.py 配置训练参数
pack_mnist.py 打包训练集,验证集,测试集到
data/*.tfrecord.保存图片到目录data/images/.
validation.py 测试集评测.
inference.py 单张图片推理.
mnist_network.py 搭建网络结构.
sh pipline.sh.单机训练入口
sh pipline_distribute.sh.多机训练入口[待完善]


2.模型部署说明
2.1 初步认识perf_code
阅读工具链文档可知:

请阅读文档HBDK3.2.0 11.1. Hobot Framework SDK.
下载embedded_release_sdk-v3.2.0.6,解压到docker的/data目录下
cd /data/embedded_release_sdk-v3.2.0.6/embedded_release_sdk/example_code/analysis/perf_code

运行mobileNetV2 对imageNet预测:
2.2 基于perf_code实现mnist测试
1.对每张测试图片做出预测, 判断预测结果是否正确.
2.客户端显示图片和预测结果.
4.演示添加module以及相应的message
HBDK3.2.0 文档也提供相关开发示例: 参考文档11章 SDK
需要修改以下文件:
src/modules/vo/message.h [规定消息格式]
src/modules/input/perf_input_module/perf_input_module.cc [定义输入模块]
src/modules/post_process_modules/class_post_process_module.cc [定义后处理模块]

定义消息数据结构:
在头文件src/modules/vo/message.h中 添加消息类型IntMessage
替换src/modules/input/perf_input_module : perf_input_module.cc perf_input_module.h
修改src/modules/post_process_modules/class_post_process_module.cc
auto frame0 = dynamic_cast< ParsingMessage *>( (*input[1])[0].get() );
auto condition = hobot::Expression::Require(0, 1, false)->And(hobot::Expression::Require(1, 1, false));
修改标签文件:
4. 搭建workflow和添加触发条件:
src/examples.cc
添加lenet模型选项: || _main_name == "lenet"
修改workflow
读取mnist测试图片数量, 传递index 消息
2.3 编译运行以及结果展示
编译生成可执行文件 perf_mnist
mkdir build && cd build && cmake .. && make
- 拷贝文件到开发板:
将测试图片, perf_mnist, lenet.hbm, start_mnist.sh, mnist_test.list 拷贝到开发板目录example_prebuilt/analysis/perf
测试图片: 训练文件夹下的mnist_classification/data/images/test_images
模型文件: mnist_classification/models/lenet.hbm
- 打开日志开关:
修改config.json 中 "vlog_level": 3
- 生成测试图片文件列表:
find test_images -name "*.png" > mnist_test.lst - 打开客户端工具client, 选择Record模式
运行测试脚本: sh start_mnist.sh
- 查看预测正确的图片总数: 9927
grep -c "is_correct=1" log/INFO_*
查看预测错误的图片总数: 73
grep -c "is_correct=0" log/INFO_* 计算正确率: 9927/10000.0 = 99.27 % 真机测评与PC端预测结果一致,指标一致性验证成功
客户端效果



