瑞芯微rv1126+yolov3模型转换
文章目录
瑞芯微rv1126+yolov3模型转换环境准备一、加载运行docker1.安装 Docker2. 加载镜像 二、转换步骤1.下载yolov3_demo,进入yolov3_demo目录,并从darknet官网下载权重2.根据目标板卡修改3.运行文件生成模型文件yolov3_416x416.rknn 三 总结环境准备
教程:教程链接
一、加载运行docker
1.安装 Docker
请根据官方手册安装 Docker(/install/linux/docker-ce/ubuntu/)。
2. 加载镜像
执行以下命令加载镜像:
docker load --input rknn-toolkit-lite-1.7.1-docker.tar.gz
加载成功后,执行“docker images”命令能够看到 rknn-toolkit-lite 的镜像,如下所示:
REPOSITORY TAG IMAGE ID CREATED SIZErknn-toolkit-lite 1.7.1 0f3af4fe47c3 1 hours ago 1.31GB
3、 运行镜像
执行以下命令运行 docker 镜像,运行后将进入镜像的 bash 环境。
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb rknn-toolkit:1.7.1 /bin/bash
如果想将自己代码映射进去可以加上“-v :”参数,例如:
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /home/rk/test:/test rknn-toolkit-
lite:1.7.1 /bin/bash
二、转换步骤
1.下载yolov3_demo,进入yolov3_demo目录,并从darknet官网下载权重
下载:yolov3_demo下载地址
cd yolov3_demowget /media/files/yolov3-tiny.weightswget /media/files/yolov3.weights
2.根据目标板卡修改
修改rknn_transform_416x416.py文件中配置文件,增加目标板target_platform=[‘rv1126’]
代码如下(示例):
from PIL import Imageimport numpy as np#from matplotlib import pyplot as pltimport reimport mathimport randomfrom rknn.api import RKNNif __name__ == '__main__':# Create RKNN objectrknn = RKNN()# Load tensorflow modelprint('--> Loading model')rknn.load_darknet(model='./yolov3_416x416.cfg', weight="./yolov3.weights")print('done')rknn.config(channel_mean_value='0 0 0 255', reorder_channel='0 1 2', batch_size=1, target_platform=['rv1126'])# Build modelprint('--> Building model')rknn.build(do_quantization=True, dataset='./dataset_416x416.txt', pre_compile=True)print('done')rknn.export_rknn('./yolov3_416x416.rknn')exit(0)
3.运行文件生成模型文件yolov3_416x416.rknn
python rknn_transform_416x416.py
三 总结
在虚拟机中运行docker转换时出现内存不足的情况,后面直接在ubuntu系统中调用docker转换成功,特别要注意设置target_platform=[‘rv1126’],默认目标板为RK1808,不然目标板卡无法调用,单帧推理+后处理耗时250ms左右。