首页 > 其他分享 >瑞芯微电子RV1126芯片环境搭建&SSD模型转换指南

瑞芯微电子RV1126芯片环境搭建&SSD模型转换指南

时间:2024-02-05 09:45:37浏览次数:40  
标签:rknn gcc RV1126 build install 瑞芯 SSD txt

引子 国产AI芯片这个集合,一直想补充的完整点。故翻了翻陈年的笔记,找到当年使用瑞芯微电子出的一款芯片RV1126的使用笔记,当时拿到的是一款基于RV1126的IP摄像头,在此整理记录下。OK,让我们开始吧。 一、文档 首先拿到官方的SDK包,解压后,SDK文档目录:rv1109_1126_sdk\RV1109_1126\docs\Socs\RV1126_RV1109\Rockchip_RV1126_RV1109_Linux_SDK_V1.1.1_20200711_CN.pdf 二、开发 1、win10连接虚拟机 文件夹直接输入:\\192.168.201.137\share 2、连接虚拟机ssh 3、安装虚拟机依赖库 sudo apt-get install g++-arm-linux-gnueabihf sudo apt-get install gcc-arm-linux-gnueabihf sudo apt-get install lib32gcc-7-dev g++-7 libstdc++-7-dev sudo apt install openssh-server android-tools-adb vim net-tools git cmake tree minicom gawk bison flex ibssl-dev device-tree-compiler gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev autoconf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make binutils build-essential gcc g++ bash patch gzip gawk bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 u-boot-tools cvs mercurial rsync openssh-client subversion expect fakeroot liblz4-tool libtool keychain 4、不同板子选择不同mk编译 ./build.sh lunch 选择 1. BoardConfig-38x38-spi-nand.mk 5、kernel编译 ./build.sh kernel 6、uboot编译 ./build.sh uboot 7、rootfs编译 a、rootfs编译命令(第一次执行) ./build.sh rootfs b、当前SDK版本默认编译命令 source envsetup.sh rockchip_rv1126_rv1109 make c、clean与重新编译 make xxx-dirclean xxx:模块名称 make xxx-rebuild 8、连接RV1126 a、插网线、上电源、连接USB线至连接至虚拟机 b、adb shell(已安装adb) c、ifconfig 查看RV1126 ip 例如:192.168.201.38 d、浏览器打开,输入账号密码:admin,即可得到网络相机视频流 9、ssd、mobilenet demo运行 find . -name "rknn_ssd_demo" a、cd /buildroot/output/rockchip_rv1126_rv1109/build/rknpu-1.2.1/rknn/rknn_api/examples/rknn_mobilenet_demo b、修改build.sh文件中gcc工作目录 GCC_COMPILER=/home/ashyar/share/RV1126/RV1109_1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc c、编译可执行文件 ./build.sh d、将可执行文件、模型、测试图片adb push到板子上 adb push XXX ./tmp/userdata e、运行 先kill掉mediaserver ps -elf | grep mediaserver kill -9 xxx ./rknn_ssd_demo model/ssd_inception_v2_rv1109_rv1126.rknn model/road.bmp 三、模型转换 官方网址:https://github.com/rockchip-linux/rknn-toolkit/tree/master/examples 1、安装tensorflow1.14版本 pip install tensorflow==1.14 2、依赖库安装 pip install ruamel.yaml==0.15.81 flatbuffers==1.10 flask==1.0.2 lmdb==0.93 requests==2.22.0 onnx==1.4.1 numpy==1.16.3 dill==0.2.8.2 networkx==1.11 Pillow==5.3.0 ply==3.11 h5py==2.8.0 psutil==5.6.2 protobuf==3.6.1 scipy==1.3.0 onnx-tf==1.2.1 3、rknn 1.4安装 pip install rknn -i http://repo.rock-chips.com/pypi/simple --trusted-host repo.rock-chips.com 4、模型转换 cd rknn-toolkit-master/examples/rknn_convert 修改config文件 最后一行增加 target_platform: rv1126 运行:python rknn_convert.py ./models/tensorflow/mobilenet-ssd/ ./ True 验证:执行二(6)、三(4)步骤 四、PC端与边端互通设置 查看CPU占用率:busybox top 相机取图泛红bug沟通解决,IR_CUT为硬件相关设备,敲击相机,颜色正常后,拔掉IR_CUT线即可固定成像效果 注意:目标检测第一类为背景。列表中第一类置空或者为background的,否则会报错,VLC软件设置300ms 1、mqtt PC端 a、下载mosquitto 软件https://mosquitto.org/files/binary/win64/ 1.6.8版本, b、安装目录下修改mosquiito.conf配置 208行 bind_address新增127.0.0.1 c、我的电脑-管理-服务 启动Mosquitto Broken服务 2、mqtt边端 a、编译 下载源码 https://github.com/jeffallen/mqtt mkdir build cd build cmake .. -DPAHO_BUILD_STATIC=TRUE -DCMAKE_C_COMPILER=/home/ashyar/share/RV1126/RV1109_1126/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc make make install DESTDIR=./install/ 头文件和lib中的so动态库文件libpaho-mqtt3a.so, libpaho-mqtt3a.so.1 即可以直接导入RV1126使用 ldd grpcclient 查看grpcclient缺少哪个动态库软链接 ln -s ../3rdparty/libs/grpc/libgpr.so libgpr.so.10 五、SSD-mobilenet迁移到RK3399Pro 1、硬件介绍 RK3399Pro人工智能芯片,采用了ARM双核Cortex-A72 + 四核Cortex-A53的大小核处理器架构(big.LITTLE大小核CPU架构),主频高达1.8GHz,集成Mali-T860 MP4 四核图形处理器。片上集成了AI神经网络处理器NPU,支持8Bit/16Bit运算,运算性能高达3.0TOPs。  (1)2.0 部件框图 RK3399Pro是具有CPU、GPU、NPU的SoC(RK3399pro = RK3399+NPU) CPU:有两个A72,四个A53 GPU:ARM Mali T860 MP4 GPU NPU:自研架构 同时还有一些其他部件,如DSP、ISP等。

(2)核心板功能参数

TB-96AI是一款开源的核心板,高度集成,只需开发简单的应用载板即可组成产品。针对RK3399pro芯片特性,在软硬件层面进行了多项优化。http://t.rock-chips.com/portal.php?mod=view&aid=30 

(3)RG-IVC207开发板  我们手头的RK3399Pro开发板:RG-IVC207旧板子,内存是1.9GB,闪存是20GB,默认Fedora28系统。目前板子上用的rknn_toolkit版本是v1.2.0。1.3.0和1.3.0beta也已发布,可尝试使用。 2、SSD-mobilenet模型转换 以下步骤是在环境已经搭建好的情况下进行。  (1)拿到示例代码  

RK3399Pro的SDK的example目录下有示例代码。需要提供prior_box.txt,labels.txt,测试集图片、dataset.txt和pb模型。 

(2)生成box_priors.txt 回到SSD-mobilenet_tf的训练代码,在ssd_meta_arch.py中添加如下代码,在research目录下执行python setup.py install,运行model_main.py(即训练,训练时有生成),即可生成保存prior_boxes的文件box_priors.txt。在索书号场景下,有1917个prior_box。代码如下: 在 tensorflow\models\research\object_detection\meta_architectures\ssd_meta_arch.py      predictions_dict = {         'preprocessed_inputs': preprocessed_inputs,         'feature_maps': feature_maps,         'anchors': self._anchors.get()     } 代码后添加以下代码: sess = tf.Session()     with sess.as_default():       anchors_np = self._anchors.get().eval()       anchors_np = anchors_np.transpose()       minx = anchors_np[0]       miny = anchors_np[1]       maxx = anchors_np[2]       maxy = anchors_np[3]       cx = (minx + maxx) / 2.       cy = (miny + maxy) / 2.       w  = maxx - minx       h  = maxy - miny       np.savetxt('box_priors.txt', (cx, cy, w, h), fmt='%0.8f') 即可保存 box_priors.txt 文件   (3)确定模型的输入输出节点 用Netron软件打开pb模型,查看网络节点(在预处理和后处理之间)。要注意,SSD模型的输入节点一般是第一个网络层Conv2D,注意不是Mul层,输出节点一般都是concat和concat_1。

 (4)其他参数设置

a、修改NUM_CLASSES:我有3类,但NUM_CLASSES=4才可以 b、修改NUM_RESULTS:prior_box的数量,图书馆场景下有2592个。 c、修改INPUT_SIZE,宽高顺序和训练时的一样。

d、如果要量化,dataset.txt可以保存训练集的一部分和测试集的一部分图片名称,根据经验共200张就够,作为量化时的比对。将来测试集更新的话,不需要改动dataset.txt。  (5)运行 修改示例代码其他部分并运行。例如用我写的ssd_batch.py,可以批量推演图片并保存结果到txt中。 (6)Tips a、我遇到过的错误提示:  AttributeError: 'NoneType' object has no attribute 'get_input_layers'  unkown layer tensorarraygatherV3  Please give image_tensor:0 the tensor shape:  AttributeError: 'NoneType' object has no attribute 'op'  ValueError: Dimensions must be equal, but are 3 and 24 for 'FeatureExtractor/InceptionV2/InceptionV2/Conv2d_1a_7x7/separable_conv2d' (op: 'Conv2D') with input shapes: [1,300,300,3], [1,1,24,64].  ValueError: NodeDef mentions attr 'Truncate' not in Op<name=cast; signature="x:SrcT" -=""> y:DstT; attr=SrcT:type; attr=DstT:type>; NodeDef: ToFloat = Cast[DstT=DT_FLOAT, SrcT=DT_UINT8, Truncate=false](image_tensor). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.)  以上都是因为输入输出的节点设置错误。  b、Toybrick-开源社区,官方论坛,很有用  http://t.rock-chips.com/forum.php  c、据说RK3399Pro对mobilenet的depthwise convolution的支持不好,导致ssd-mobilenet在RK3399Pro上会掉点,建议backbone换成inception-v2,精度和性能都更好。使用inception训练时可以修改depth multiplier参数,如从1改成0.5,减小卷积层的宽度,以提高性能(当然同时精度会有点损失)。

标签:rknn,gcc,RV1126,build,install,瑞芯,SSD,txt
From: https://www.cnblogs.com/nick-algorithmer/p/18007405

相关文章

  • 2023 年度十佳课题公布:华为云 GaussDB 获权威认可
    近日,北京金融科技产业联盟正式公布2023年度优秀课题评选结果。工商银行和华为云牵头,并联合7家金融机构共同编制的《金融行业开放平台数据库转型白皮书》(下文简称:白皮书)荣获2023年度十佳课题。该白皮书通过调研金融行业开放平台数据库技术应用现状、分析金融行业数据库架构转型中的......
  • IDEA编译生成可运行jar包 和 运行jar包报java.lang.NoClassDefFoundError错误,注意 MF
    IDEA编译生成可运行jar包和运行jar包报java.lang.NoClassDefFoundError错误,注意MF文件目录不要用默认目录,改成项目根目录运行环境:操作系统:ubuntu20.04javaversion:openjdkversion"11"2018-09-25OpenJDKRuntimeEnvironment18.9(build11+28)OpenJDK64-BitServer......
  • SSD寻址单元IU对寿命的影响——古猫先生存储随笔转载
    SSD寻址单元IU对寿命的影响有多大?原创 古猫先生 存储随笔 2024-01-3008:30 发表于浙江【转载】SSD寻址单元IU对寿命的影响有多大?(qq.com)随着存储技术的不断进步,固态硬盘SSD的容量正以惊人的速度增长,尤其是采用高密度QLCNAND闪存技术的大容量SSD,如30TB及以上级别的产品......
  • 2023年度十佳课题公布:华为云GaussDB获权威认可
    近日,北京金融科技产业联盟正式公布2023年度优秀课题评选结果。工商银行和华为云牵头,并联合7家金融机构共同编制的《金融行业开放平台数据库转型白皮书》(下文简称:白皮书)荣获2023年度十佳课题。该白皮书通过调研金融行业开放平台数据库技术应用现状、分析金融行业数据库架构转型......
  • 实测分享,瑞芯微RK3588八核国产处理器性能测评!确实“遥遥领先”!
    RK3588处理器优势RK3588是瑞芯微最新一代旗舰工业处理器,它具有如下卓越优势:超强运算能力:四核[email protected]+四核[email protected]大小核架构,有国产“至强嵌入式处理器”之称,可提供高效的计算和多线程处理能力。超强AI算力:6TOPSNPU,支持INT4/INT8/INT16/FP16/BF1......
  • GaussDB(for MySQL)剪枝功能,让查询性能提升70倍!
    作者,祝青平,华为云数据库内核高级工程师。擅长数据库优化器内核研发,9年数据库内核研发经验,参与多个TP以及AP数据库的研发工作。近日,华为云数据库社区下面有这样一条用户提问留言:请问,如何通过MySQL提升DISTINCT,尤其是多表连接下DISTINCT的查询效率?在回答这个问题之前,我们先了解一......
  • GaussDB(for MySQL)剪枝功能,让查询性能提升70倍!
    作者,祝青平,华为云数据库内核高级工程师。擅长数据库优化器内核研发,9年数据库内核研发经验,参与多个TP以及AP数据库的研发工作。近日,华为云数据库社区下面有这样一条用户提问留言:请问,如何通过MySQL提升DISTINCT,尤其是多表连接下DISTINCT的查询效率?在回答这个问题之前,我们先了解一下DI......
  • 江苏银行联合华为云GaussDB进行核心系统改造
    本文分享自华为云社区《江苏银行联合华为云GaussDB进行核心系统改造》,作者:华为云头条。金融行业自主创新关乎金融安全大局。近年来,随着《金融科技发展规划(2022—2025年)》等相关政策的出台,金融行业核心技术自主创新逐步迈向“深水区”,正在从外围应用深入到核心业务系统,分布式数据库......
  • 幻隐HV2050 512G SSD评测
    PDD商品介绍页面总写入量还是比较差的,512GB为300TBW,只能达到长江存储自封颗粒的一半(以长江PC300为例,512GB写入寿命是600TBW)。ASSSDBenchmark测试1GB缓内写入,基本能达到标称的速度。CrystalDiskinfoWindows写入文件测试,写入总量为124GB,缓内速度约在1.5~1.7G/s之间,在复制6......
  • 江苏银行联合华为云GaussDB进行核心系统改造
    本文分享自华为云社区《江苏银行联合华为云GaussDB进行核心系统改造》,作者:华为云头条。金融行业自主创新关乎金融安全大局。近年来,随着《金融科技发展规划(2022—2025年)》等相关政策的出台,金融行业核心技术自主创新逐步迈向“深水区”,正在从外围应用深入到核心业务系统,分布式数据......