模擬環境開發
這裏的模擬環境就是在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()
運行結果