完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
测试和验证模型在HAAS AI EDK上的运行精度和性能主要分成三步:1)生成模型;2)上板执行;3)结果分析。 1. 生成模型 在HHB资源下载页面下载最新的工具docker镜像。下载好docker镜像后,如何导入docker镜像到自己的环境中,请参考HHB用户手册。 接下来以docker容器中自带的mobilenetv1模型为例进行说明。 进入/home/anole/caffe_mobilenetv1目录,如果只是为了测试模型性能,可以直接在当前目录下执行make, 然后将生成的可执行文件拷贝到开发板上执行即可。本教程中除了要测试模型性能外,还需要验证模型精度,因此需要稍微修改一下编译命令。在Makefile中修改HHB命令行参数,添加--postprocess save_and_top5,如下(有关HHB命令行参数的说明请参考HHB用户手册): PYTHON_FLAGS = --board "anole" -C -cd ${DATA_PATH}/cat.jpg -f ${NET_PATH}/mobilenetv1.prototxt ${NET_PATH}/mobilenetv1.caffemodel -m "103.94 116.98 123.68" -s 0.017 -o . --postprocess save_and_top5 然后执行make,即可生成模型源码和HAAS AI EDK上可执行程序。 2. 上板执行 2.1 设置依赖库路径 上述阶段生成的可执行程序在执行时依赖CSINN2的库,所以需要在环境变量中进行设置。先将HHB容器中的/home/install_nn2目录拷贝到开发板的/anole_case目录下,然后在LD_LIBRARY_PATH中添加此路径: export LD_LIBRARY_PATH=/anole_case/install_nn2:2.2 执行程序 将阶段1中生成的可执行程序拷贝到开发板,然后执行(开发板启动时默认加载8core驱动,如需使用不同核心数请参考附录说明): # Execute on server cp ./{c_runtime,data.0.tensor,model.params} /anole_case # Execute on board ./c_runtime model.params data.0.tensor 执行完成后终端会打印模型的性能数据和top5等信息: Run graph execution time: 8.22062ms, FPS=121.65 === tensor info === shape: 1 3 224 224 scale: 0.018256 zero point: 114 data pointer: 0x85edb0 === tensor info === shape: 1 1000 1 1 scale: 0.000644 zero point: 0 data pointer: 0x773d58 --- Top --- 282: 0.164173 285: 0.126188 277: 0.083052 278: 0.072107 281: 0.072107 性能结果可以与HHB用户手册中的性能数据进行比对。 3. 结果分析 精度验证有两种方式:1)简单比较;2)测试集验证。其中前者验证起来简单,主要包括:检查少量图片推理后的top5结果与实际结果和计算量化前后输出结果的cosine相似度;后者验证起来相对麻烦,需要包含模型后处理,但是更符合实际情况。 3.1 简单比较 HHB支持直接在x86环境中推理原始浮点模型。首先进入docker容器的/home/anole/caffe_mobilenetv1目录,然后执行如下命令: hhb --board "x86_ref" --simulate -cd ./cat.jpg -f ./mobilenetv1.prototxt ./mobilenetv1.caffemodel -m "103.94 116.98 123.68" -s 0.017 -o . --postprocess save_and_top5 --no-quantize -sd cat.jpg 对于分类模型,可以多试几张测试图片,然后比较浮点的结果跟上板执行的结果top5。对于检测模型等,可以比较保存的对应输出结果的cosine相似度: cos_sim = np.dot(data1, data2) / (np.linalg.norm(data1) * (np.linalg.norm(data2)))3.2 测试集验证 准确验证模型精度的方式是在测试集上推理模型,然后根据模型的精度指标计算模型的整体精度。HHB生成HAAS AI EDK的代码支持直接批量读取图片数据然后进行推理,并且保存推理后的结果到文件中。 ./c_runtime mode.params dataset.txt 其中,dataset.txt里面每一行是一张图片的路径。每张图片推理结束后,会以输入图片名为前缀名文件保存模型的输出结果。执行完程序后,根据得到的结果文件,再结合模型的后处理要求,计算模型的精度。 附录 如何切换核心数? HAAS AI EDK 开发板在启动时默认加载8core驱动,这样在实际使用时使用HAAS AI EDK上的所有核心进行计算。用户也可以手动切换核心数量,让程序执行时使用特定的核心资源。 在HAAS AI EDK开发板上的/usr/ko目录下提供了4个加载驱动的脚本,可分别加载1、2、4、8核驱动。使用方式如下: # 在加载新驱动前卸载旧驱动 rmmod galcore # 加载x-core驱动 ./insmod_xcore.sh 大家可以随意尝试一下使用不同核心计算,看看模型执行时间的变化。 文章转载自:平头哥芯片开放社区 作者:疯里个疯 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15702 浏览 1 评论
13759 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19680 浏览 2 评论
59121 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
88163 浏览 121 评论
邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”
785浏览 0评论
读书分享会 | 玄铁RISC-V处理器入门与实战电子书免费下载!
683浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 01:36 , Processed in 0.671638 second(s), Total 67, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号