RISC-V技术william hill官网
直播中

FFD80

2年用户 91经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[经验]

【Milk-V Duo 开发板免费体验】学习:基于Duo开发板的Densenet图像分类

学习:基于Duo开发板的Densenet图像分类

参考教程:https://github.com/sophgocommunity/Duo_Doc/tree/main/TPU_SDK

1、实验环境

image.png

2、安装Docker

依次执行以下命令即可:

//1、安装依赖
$ sudo apt update
$ sudo apt install ca-certificates curl gnupg lsb-release
//2、apt上注册Docker的GPG密钥圈
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
//3、下载安装脚本并运行
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

等待安装结束

image.png

验证docker:sudo docker run hello-world,有如下打印说明安装成功。
image.png

3、拉取docker镜像

方式1、2均可

1、pull,拉取时长取决于网络环境

$ docker pull sophgo/tpuc_dev:v2.2

2、导入镜像,云盘下载后导入即可

镜像下载:链接:https://pan.baidu.com/s/1298AU09H0t_w8BHZu7-REQ?pwd=cw8c
提取码:cw8c

复制到虚拟机里,导入:sudo docker load -i tpuc_dev.tar

image.png

导入后列出本地列表可以看到框选镜像:

image.png

4、启动容器

$ sudo docker run --privileged --name milkv_tpuc_dev -v /workspace -it sophgo/tpuc_dev:v2.2

框选部分是生成的容器名,自行填写:

image.png

5、下载开发包

从ftp下载开发工具包到本地,然后拷贝到容器中:

$ sftp cvitek_mlir_2023@218.17.249.213
//ftp信息:
$ sftp://218.17.249.213
$ username: cvitek_mlir_2023
$ password: 7&2Wd%cu5k

image.png

image.png

6、搭建环境

依次执行即可,详情参照文首连接:

$ tar -zxvf tpu-mlir_v1.2.89-g77a2268f-20230703.tar.gz
$ source ./tpu-mlir_v1.2.89-g77a2268f-20230703/envsetup.sh
$ mkdir densenet121 && cd densenet121
//网络不佳可能导致densenet-12.tar.gz下载失败,可使用下方的离线附件
$ wget https://github.com/onnx/models/raw/main/vision/classification/densenet121/model/densenet-12.tar.gz
$ tar -zxvf densenet-12.tar.gz
$ cp -rf $TPUC_ROOT/regression/dataset/ILSVRC2012 .
$ cp -rf $TPUC_ROOT/regression/image .
$ mkdir work && cd work

*附件:densenet-12.tar.zip

7、ONNX转MLIR

$ model_transform.py 
--model_name densenet121 
--model_def ../densenet-12/densenet-12.onnx 
--test_input ../image/cat.jpg 
--input_shapes [[1,3,224,224]] 
--resize_dims 256,256 
--mean 123.675,116.28,103.53 
--scale 0.0171,0.0175,0.0174 
--pixel_format rgb 
--test_result densenet121_top_outputs.npz 
--mlir densenet121.mlir

image.png

image.png

8、MLIR转INT8模型

//生成校准表,运行较慢请耐心等待完成
$ run_calibration.py densenet121.mlir 
--dataset ../ILSVRC2012 
--input_num 100 
-o densenet121_cali_table

image.png

//编译为int8类型
$ model_deploy.py 
--mlir densenet121.mlir 
--quantize INT8 
--calibration_table densenet121_cali_table 
--chip cv180x 
--test_input ../image/cat.jpg 
--test_reference densenet121_top_outputs.npz 
--compare_all 
--fuse_preprocess 
--model densenet121_cv180x_int8_fuse.cvimodel

image.png

image.png

9、在milkV开发板验证

ftp下载开发工具包cvitek_tpu_sdk_cv180x_musl_riscv64_rvv.tar.gz并解压到本地,生成cvitek_tpu_sdk文件夹:

$ sftp cvitek_mlir_2023@218.17.249.213

image.png

image.png

连接milkv:ssh root@192.168.42.1

//在开发板的终端中,新建目录
$ mkdir /root/milkv && cd /root/milkv

//在本地的终端中,将开发工具包拷贝到开发板上
$ scp -r cvitek_tpu_sdk root@192.168.42.1:/root/milkv

//在docker的终端中,将模型文件拷贝到开发板上
$ scp /workspace/densenet121/work/densenet121_cv180x_int8_fuse.cvimodel
root@192.168.42.1:/home/milkv/cvitek_tpu_sdk



***在这里可能会出现无法访问开发板的现象(如可以正常使用scp传输文件请略过),如下图,解决方案如下,在本地依次执行以下命令:
nmcli connection modify docker0 connection.zone trusted
systemctl stop NetworkManager.service
firewall-cmd --permanent --zone=trusted --change-interface=docker0
systemctl start NetworkManager.service
nmcli connection modify docker0 connection.zone trusted
systemctl restart docker.service
***然后重新进入容器传输文件到开发板

image.png

image.png

在开发板中,对以下图像进行分类:
image.png

上传到milkv的文件,设置环境变量,图像分类:

image.png

更多回帖

发帖
×
20
完善资料,
赚取积分