MrHarsh10 / tspi_-RKNN_MobileNetV3

将mobliebetv3转换成RKNN部署到泰山派上
19 stars 1 forks source link

泰山派嵌入式AI开发实战教程

简介

    随着AI技术在各行业快速发展,将AI技术与嵌入式系统结合,构建边缘计算成为技术热点之一。嵌入式神经网络处理器(NPU)采用了针对神经网络计算优化的计算架构,能够更快速地执行矩阵乘法等神经网络运算,同时低功耗、高并行等特点,能够有效支持各种人工智能应用的运行。     泰山派上的RK3566搭载了0.8TOPS的NPU, ,具备一定的AI算力,同时,瑞芯微官方提供了RKNN组件支持主流TensorFlow、TF-lite、Pytorch、Caffe、ONNX等深度学习框架,能很方便进行算法的端侧部署。     瑞芯微提供了RKNPU2, RKNN Toolkit2等组件。RKNPU2提供了运行库和+编程接口,用来部署推理一种根据NPU硬件架构定义的一套模型格式模型

MobileNetV3

   MobileNetV3 是 Google 开发的用于移动设备和嵌入式设备的神经网络架构之一,在提高在资源受限的设备上进行计算的效率。与之前的版本相比,MobileNetV3 在准确性和速度方面都有所改进。

模型训练

基础环境安装

设备:一台高性能PC,Linux或Windows都可以,需要安装conda环境

Miniconda — Anaconda documentation

source .bashrc #这个命令不能在windows系统上运行,请打开Anaconda Prompt (Miniconda3)

conda在国内需要换源获得更高的下载速度anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

pypi | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

安装完成后我们需要创建一个Python环境

conda create -n moblienet python=3.10

然后激活环境

conda activate moblienet

安装torch

https://pytorch.org/get-started/locally/

pip3 install torch torchvision torchaudio

数据集的创建

本次图像分类用的的动物的5分类数据集,包括:猫(cat)、牛(cattle)、狗(dog)、马(house)、猪(pig)

python train.py 

训练完成后就会保存网络的模型以及权重

RKNN模型转换

GitHub - rockchip-linux/rknn-toolkit2

模型转换需要一台ubuntu的机器,并克隆rknn-toolkit2仓库,同时新建一个conda 环境

conda create -n rknn python=3.10
git clone https://github.com/rockchip-linux/rknn-toolkit2.git
# 根据自己的python版本选择txt和wheel
pip install  -r rknn-toolkit2/rknn-toolkit2/packages/requirements_cp310-1.6.0.txt 
cd rknn-toolkit2/rknn-toolkit2/packages/
pip install rknn_toolkit2-1.6.0+81f21f4d-cp310-cp310-linux_x86_64.whl 

在仓库里面提供了pt2rknn.py,在安装rknn_toolkit2时候,请使用阿里云镜像

pypi镜像_pypi下载地址_pypi安装教程-阿里巴巴开源镜像站

python pt2rknn.py

pt2rknn代码中,存在一个量化选项,填入  True进行整型量化,但实验测试其精度损失严重

ret = rknn.build(do_quantization=False, dataset='./dataset.txt')

模型在泰山派上部署

请在在泰山派上下载官方提供的Debian10镜像,Ubuntu系统测试有一定点Bug

然后我喜欢在PC机上远程连接泰山派,使用的软件是 MobaXterm

sudo apt update
sudo apt upgrade

安装miniconda

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zs
source .bashrc

同时建议换源anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

下载更新NPU驱动https://github.com/rockchip-linux/rknpu2

git clone https://github.com/rockchip-linux/rknpu2.git #建议PC下载后利用Mobaxterm开发板上
cp rknpu2/runtime/RK356X/Linux/rknn_server/aarch64/usr/bin/rknn_server /usr/bin/rknn_server
cp rknpu2/runtime/RK356X/Linux/librknn_api/aarch64/librknnrt.so /usr/lib/librknnrt.so
cp rknpu2/runtime/RK356X/Linux/librknn_api/aarch64/librknn_api.so /usr/lib/librknn_api.so
 bash rknpu2/runtime/RK356X/Linux/rknn_server/aarch64/usr/bin/start_rknn.sh
                                                                                                                 bin/start_rknn.sh

创建Python环境

conda create -n rknn python=3.10
conda activate rknn
sudo apt update
sudo apt upgrade
sudo apt install gcc

https://github.com/rockchip-linux/rknn-toolkit2/tree/master/rknn_toolkit_lite2/packages

选取合适的包下载并安装安装

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install rknn_toolkit_lite2-1.6.0-cp310-cp310-linux_aarch64.whl
pip install opencv-python

到此板卡环境就安装好了

运行我们的测试代码

python test.py