模拟环境开发
这里的模拟环境就是在PC上去模拟开发板的开发、调试,跟开发板本身没有关系。我这里的操作系统环境为Ubuntu 20.04。
首先安装Anaconda,具体操作请参考乌班图安装Pytorch、Tensorflow Cuda环境 。之后创建Python 3.8的环境。
conda create -n py38 python=3.8.0
source activate
conda activate py38
下载RK35XX开发板的NPU SDK,下载地址https://github.com/rockchip-linux/rknn-toolkit2
他这里有很多个版本,我使用的是1.5.2的。
安装相关依赖
sudo apt-get install libxslt1-dev zlib1g-dev libglib2.0 libsm6 libgl1-mesa-glx libprotobuf-dev gcc
安装Python组件
cd RK_NPU_SDK/RK_NPU_SDK_1.5.2/release
unzip rknn-toolkit2-1.5.2.zip
cd rknn-toolkit2-1.5.2/doc
pip install -r requirements_cp38-1.5.2.txt -i https://mirror.baidu.com/pypi/simple
安装NUP SDK Python组件
cd ../packages
pip install rknn_toolkit2-1.5.2+b642f30c-cp38-cp38-linux_x86_64.whl
安装PyCharm。
HelloWorld
这里我们将一个Pytorch的模型参数转化为RKNN的专用模型。首先将examples/pytorch/resnet18下面的dataset.txt以及space_shuttle_224.jpg拷贝到PyCharm项目下。
拉取模型参数
import torch from torchvision import models if __name__ == '__main__': net = models.resnet18(pretrained=True) net.eval() trace_model = torch.jit.trace(net, torch.Tensor(1, 3, 224, 224)) trace_model.save('./resnet18.pt')
转化
from rknn.api import RKNN if __name__ == '__main__': rknn = RKNN(verbose=True, verbose_file='log.txt') rknn.config( mean_values=[[123.675, 116.28, 103.53]], std_values=[[58.395, 58.395, 58.395]], target_platform='rk3568' ) rknn.load_pytorch(model='./resnet18.pt', input_size_list=[[1, 3, 224, 224]]) rknn.build(do_quantization=True, dataset='dataset.txt', rknn_batch_size=1) rknn.export_rknn('resnet18.rknn') rknn.release()
运行结果