IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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

报错如下:

[CRITICAL] CORE(2461,fffeffff81a0,python3):2022-04-17-02:17:09.597.099 [mindspore/core/utils/ms_context.cc:130] CreateTensorPrintThread] Get acltdt handle failed
Traceback (most recent call last):
  File "train.py", line 68, in <module>
    train_lenet()
  File "/home/HwHiAiUser/models/official/cv/lenet/src/model_utils/moxing_adapter.py", line 108, in wrapped_func
    run_func(*args, **kwargs)
  File "train.py", line 48, in train_lenet
    network = LeNet5(config.num_classes)
  File "/home/HwHiAiUser/models/official/cv/lenet/src/lenet.py", line 35, in __init__
    super(LeNet5, self).__init__()
  File "/home/HwHiAiUser/.local/lib/python3.7/site-packages/mindspore/nn/cell.py", line 119, in __init__
    init_pipeline()
RuntimeError: mindspore/core/utils/ms_context.cc:130 CreateTensorPrintThread] Get acltdt handle failed

张小白发帖询问这是什么问题,专家回答道:

张小白恍然大悟。。。在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
mkdir build
cd build

cmake .. -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_gflags_LIB=ON

make -j8

sudo make install

再安装glog

下载代码仓:
git clone?https://github.com/google/glog

cd glog
vi README.rst

根据readme进行安装:
cmake -S . -B build -G "Unix Makefiles"

cmake --build build

sudo cmake --build build --target install

回到lenet工程的ascend310_infer目录,编辑CMakeList.txt文件,增加:find_package(gflags REQUIRED):

再重新执行推理脚本:
bash ./run_infer_310.sh ../lenet.mindir ./images dvpp

仍然是build失败。
检查ascend310_infer/build.log

居然还是这个错。

这个问题折腾了张小白好几天的时间,张小白也请了 MindSpore专家 赵老师帮忙看看。最终发现 去年的一个issue的做法可以解决编译的问题:

https://gitee.com/mindspore/mindspore/issues/I3X1EA

于是如法炮制:

获取gflags安装包:
wget?https://github.com/gflags/gflags/archive/v2.2.2.tar.gz?--no-check-certificate

解压:
tar -zxvf v2.2.2.tar.gz

编译:
cd gflags-2.2.2/
mkdir build
cd build
export CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0
cmake .. -DBUILD_SHARED_LIBS=ON

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)在执行推理命令之前,新增 以下语句:

export LD_LIBRARY_PATH=HOME/Ascend/ascend?toolkit/5.0.4.alpha005/arm64?linux/opp/opimpl/built?in/aicore/tbe/optiling:LD_LIBRARY_PATH

. /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh

(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目录下:

可见已经推理成功!

(未完待续)

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:05:07  更:2022-05-08 08:09:07 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码