| |
|
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 1:53:34- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |