| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 玩转Atlas200DK(十三)尝试MindSpore跑LeNet -> 正文阅读 |
|
[人工智能]玩转Atlas200DK(十三)尝试MindSpore跑LeNet |
十三、在Atlas 200DK上使用MindSpore训练LeNet网络手写数字识别LeNet是深度学习最简单入门的神经网络。一般拿它来入门AI框架最合适不过了。我们来试一下,看看如何在200DK上跑LeNet: 1、下载models代码仓git clone?https://gitee.com/mindspore/models.git 2、准备MNIST数据集cd models/official/cv/lenet mkdir MNIST mkdir ckpt cd MNIST 下载MNIST数据集: wget?http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz wget?http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz wget?http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz wget?http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz 按照README指定的方式解压: gzip -d *.gz mkdir train mkdir test mv train*ubyte train/ mv t10k* test/ sudo apt install tree tree 查看目录结构: 3、训练LeNet网络cd .. 开始训练: python train.py --data_path=./MNIST/ --device_target="Ascend" --ckpt_path=./ckpt 报语法错误。 检查一下: 原来200DK的python缺省是Python2版本,print语句不支持 flush=True这种语法。 那就换成python3试一下: 没装yaml,那就装一下pyyaml python3 -m pip install pyyaml -i?https://pypi.tuna.tsinghua.edu.cn/simple 这里一开始没有使用 --user,所以报权限错误,后来增加--user参数安装成功。 重新训练: python3 train.py --data_path=./MNIST/ --device_target="Ascend" --ckpt_path=./ckpt 报错如下:
张小白发帖询问这是什么问题,专家回答道: 张小白恍然大悟。。。在Atlas 200DK上是无法进行模型训练的。 十四、在Ubuntu 18.04 X86上使用MindSpore CPU版训练LeNet网络张小白没有在200DK上完成LeNet网络训练,这让曾经能在 树莓派4B和Jetson Nano B01完成LeNet训练的张小白感到有些失望。 不过这也挡不住张小白试验LeNet的心,既然无法在200DK上做训练,那么用开发环境ubuntu X86做LeNet训练,然后将训练好的结果送到200DK上做离线推理,应该是可以的吧? 先看下开发环境的环境: 有python3.7.5,但是没有mindspore,那就先在开发环境上安装MindSpore的CPU版本: 按照上面的选择来安装即可: python3 -m pip install?https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.6.1/MindSpore/cpu/x86_64/mindspore-1.6.1-cp37-cp37m-linux_x86_64.whl?--trusted-host?http://ms-release.obs.cn-north-4.myhuaweicloud.com?-i?https://pypi.tuna.tsinghua.edu.cn/simple 下载mindpore的modelzoo代码仓: 准备数据集: cd models/official/cv/lenet mkdir MNIST mkdir ckpt cd MNIST 安装tree 查看数据集结构: 开始训练: python3 train.py --data_path=./MNIST/ --device_target="CPU" --ckpt_path=./ckpt 。。。 。。。 训练结果在ckpt目录下: 执行评估: python3 eval.py --data_path MNIST --ckpt_path ckpt/checkpoint_lenet-10_1875.ckpt --device_target="CPU" 导出MindIR模型: python3 export.py --ckpt_file ckpt/checkpoint_lenet-10_1875.ckpt --file_format "MINDIR" --device_target="CPU" 执行完毕后,会生成一个lenet.mindir文件: 将lenet.mindir和ckpt文件拷贝到200DK上。 scp lenet.mindir HwHiAiUser@192.168.199.204:/home/HwHiAiUser/models/official/cv/lenet/ scp -r ckpt HwHiAiUser@192.168.199.204:/home/HwHiAiUser/models/official/cv/lenet/ 下面来尝试使用训练好的模型在200DK上进行推理。 十五、在Atlas 200DK上编译MindSpore LeNet网络的推理代码仔细查看了下lenet工程下scripts目录下的相关代码,其中有个run_infer_310.sh貌似就是个运行推理代码的脚本。 根据README: 直接运行试试: bash run_infer_310.sh ../lenet.mindir ../data dvpp 报错了: 查看ascend310_infer下的build.log的日志: 确认是没有安装gflags包。 开始安装glags: cd gflags cmake .. -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_gflags_LIB=ON make -j8 sudo make install 再安装glog 下载代码仓: cd glog 根据readme进行安装: cmake --build build sudo cmake --build build --target install 回到lenet工程的ascend310_infer目录,编辑CMakeList.txt文件,增加:find_package(gflags REQUIRED): 再重新执行推理脚本: 仍然是build失败。 居然还是这个错。 这个问题折腾了张小白好几天的时间,张小白也请了 MindSpore专家 赵老师帮忙看看。最终发现 去年的一个issue的做法可以解决编译的问题: https://gitee.com/mindspore/mindspore/issues/I3X1EA 于是如法炮制: 获取gflags安装包: 解压: 编译: make -j8 删除上次源码安装好的 /usr/local/lib下libgflags的包: 再make install 重新编译: 终于编译成功,但是紧接着出现了推理失败,这个咱们下一次解决吧! 十六、在Atlas 200DK上运行MindSpore LeNet网络的推理代码书接上回:https://bbs.huaweicloud.com/blogs/349622 经过多次试验,张小白将run_infer_310.sh文件做如下修改: (1)将python命令均改为python3,因为当前环境python指向的是Python2。 (2)在执行推理命令之前,新增 以下语句:
(3)将执行语句最后的 &>xx.log &去掉,将错误信息打印在屏幕上: (4)修改http://main.cc文件,增加打印文件名的代码: 执行run_infer_310.sh命令并查看结果: bash ./run_infer_310.sh /home/HwHiAiUser/models/official/cv/lenet/lenet.mindir /home/HwHiAiUser/models/official/cv/lenet/MNIST/test dvpp 0 。。。 虽然看到在preprocess_Result文件夹下有10000个test jpg文件。 下载下来看了下,都是手写的图片: 但是第一个文件就推理失败了! 只好又提了issue,赵老师回答了我的问题: 如法炮制: 先到X86上,编辑export.py文件: 执行export python3 export.py --ckpt_file ckpt/checkpoint_lenet-10_1875.ckpt --file_format "MINDIR" --device_target="CPU" 可以看到新的mindir文件也已经生成: 将lenet.mindir拷贝到200DK上。 scp lenet.mindir?HwHiAiUser@192.168.199.204:/home/HwHiAiUser/models/official/cv/lenet/ 这个是需要注意的,如果200DK上有同名文件,会报权限错误。 那就删除掉200DK的同名文件: 再回到X86开发环境重新scp: scp lenet.mindir HwHiAiUser@192.168.199.204:/home/HwHiAiUser/models/official/cv/lenet/ 再重新执行推理: bash ./run_infer_310.sh /home/HwHiAiUser/models/official/cv/lenet/lenet.mindir /home/HwHiAiUser/models/official/cv/lenet/MNIST/test dvpp 0 结果如下: 它会完成10000个测试图片的推理,精度结果是 0.9854. 推理结果放到了 result_Files目录下: 可见已经推理成功! (未完待续) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:25:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |