查看: 1636|回复: 0

OK3588初体验之NPU推理视频

[复制链接]
  • TA的每日心情
    开心
    2024-4-11 11:26
  • 签到天数: 207 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2023-3-17 17:56:01 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 一代睡神的崛起 于 2023-3-20 19:41 编辑

    一、     推理环境部署
    大家想必都知道RK3588更新了NPU二代产品,此次NPU的算力提升可谓是空前绝后的,具备6TOPS算力,部署在特定的边缘计算环境中是非常可观的。好了废话不多说,直接上干货。
    原厂瑞芯微根据自己芯片的算子推出了自己的推理转换框架rknn-toolkit2(github直接搜索获取,rknpu2同理)来支持的rknpu2。在rknpu2源码编译中需要rknn-toolkit2提供必要的支持库文件,因此要想使得板子的推理功能实现首先就得构建rknn-toolkit2。上篇帖子介绍了小编刷的是ubuntu20.04镜像,因此依赖系统都是基于ubuntu20.04来实现的,官网指导手册给出的的步骤是首先安装python环境:
    sudo apt-get install -y python3python3-dev python3-pip gcc  

    但是一线的开发者都喜欢构建自己的python科学计算库,因此小编这里首先安装了Anaconda3-2021.05-Linux-aarch64.sh,安装完设置好环境变量后可以通过在终端输入python3进行查询。

    1

    1
    然后就可以另辟蹊径,使用pip来安装python3所需要的环境。官网指导手册提示需要安装numpy和opencv-python。由于Anaconda3里面已经安装了numpy数学库,因此只需要使用pip3 install opencv-python 和pip3 installopencv-contrib-python(补充安装,不需要的可以不装)就能够吧opencv机器视觉库安装下来了。

    2

    2
    然后安装原厂自己封装的rknn-toolkit2计算库。pip3 install rknn_toolkit2-1.4.0_22dcfef4-cp38-cp38-linux_x86_64.whl。然后再安装编译代码所需要的一些库文件:
    sudoapt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6libgl1-mesa-glx libprotobuf-dev gcc
    到此rknn-toolkit2框架就成功安装了,异常的简单。

    二、    推理量化后的demo

    至于rknn-toolkit2框架太过于复杂,放在接下来的章节去讲。进入rknpu2/examples/rknn_yolov5_demo,执行./ build-linux_RK3588.sh,如果遇到报错提示缺少.so文件,就去把rknn-toolkit2安装成功对应的.so文件拷到/usr/lib目录下,当然也可以拷贝到任意目录下,但是编译的时候需要指定。

    3

    3
    这是一个推理图片的demo,使用的是yolov5,至于是yolov5_n,yolov5_l,yolov5_s这里咱也没去考究,但是从嵌入式设备推理的算力来推断应该是yolov5_s没跑了。传统的yolov5是基于coco2017数据集训练的产物,可识别的物体有80类。然后将传统的yolov5从FP32的数据格式量化到了int8格式,缩减了计算量极大的提升了推理效率,因为小编这里没有亲自去量化使用的是官网自带量化好的的权重文件,因此也不知道存在多少的精度损失,有机会可以回炉训练一次,考证一下精盾衰减情况。单从推理结果来看效果还是很客观的。
    编译完后执行./build/build_linux_aarch64/rknn_yolov5_demo./model/RK3588/yolov5s-640-640.rknn img_path。

    查看推理结果图片:

    5

    5
    三、     修改程序推理视频,打印FPS

    上述demo是不支持推理视频的,因此我们需要修改代码。转入rknpu2/examples/rknn_yolov5_demo/src/main.cc(附件提供修改后的代码)。然后重新编译,发现报错了,说缺少对应的opencv库支持文件,原来demo只是拷贝了编译好后的图像推理的so文件,所以只能修改CMakeLists来重新编译。首先安装C++库支持的opencv。sudo apt-getinstall libopencv-dev sudo apt-get install libopencv-contrib-dev。验证安装:终端输入opencv_version

    4

    4
    在CMakeLists的include_directories中添加${OpenCV_INCLUDE_DIRS}  然后重新编译。

    编译成功后输入./build/build_linux_aarch64/rknn_yolov5_demo./model/RK3588/yolov5s-640-640.rknn /home/video/9135.mp4/home/video/rknn_yolov5_inflence_result.avi 前者是视频源输入地址,后者是保存推理结果,以30帧/秒的h264压缩格式保存。在保存的推理结果视频里面可以发现FPS保持在35-45FPS之间,能匹配的上实时推理需求了。详情请浏览附件。下一节再见。




    rknn_yolov5_inflence_result.part2.rar

    1.47 MB, 下载次数: 0

    保存推理结果视频

    hdmi视频显示推理.rar

    2.98 MB, 下载次数: 0

    hdmi显示推理结果

    rknn_yolov5_inflence_result.part1.rar

    25 MB, 下载次数: 3

    保存推理结果视频

    CmakeList_and_main.rar

    4.67 KB, 下载次数: 3

    修改文件

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-5-20 02:38 , Processed in 0.102711 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.