ModelBox端云协同AI开发套件RK3568实现视频防挡弹幕【玩转华为云】

举报
HouYanSong 发表于 2023/05/24 04:13:39 2023/05/24
【摘要】 ModelBox AI开发套件(RK3568)是一款体积小巧、功能强大的人工智能嵌入式开发板,结合ModelBox开发框架和HiLens管理平台,开发者可以方便快速的进行AI应用的开发部署。本文将使用ModelBox开发一个视频防挡弹幕的AI应用,并将其部署到RK3568开发板上。

ModelBox端云协同AI开发套件RK3568

 

摘要:

ModelBox端云协同AI开发套件RK3568是一款体积小巧、功能强大的人工智能嵌入式开发板,结合ModelBox开发框架以及HiLens管理平台,开发者可以快速的进行AI应用的开发和部署,开发板零配件如下图所示:

小编收到开发板至今大约过去6个月了,昨晚突然梦到开发板抱怨在这期间为何对它置之不理😭。虽然只有0.8Tops的算力,但是也能完成绝大多数任务了,于是小编怀着愧疚之情写了这篇文章。以往的案例都是进行实时的检测,小编觉得还可以通过开发板实现视频的分割。只需要训练一个轻量化的图像分割模型,再对其进行模型转换和量化,就可以通过ModelBox部署到开发板上并实现视频防挡弹幕应用的开发,本案例最终运行效果如下:

 

模型训练:

我们使用的是香港中文大学的数据集

Deep Automatic Portrait Matting

The Chinese Univeristy of Hong Kong

 

teaser.png

像素级的图像语义分割有时不仅需要精确,还要高效,以便达到到实时应用(real-time application)的要求,比如自动驾驶等场景。现有的方法可能精度比较高,但是往往参数量巨大,运算开销很高,为了解决这个问题,论文提出了LinkNet

linknet.png

Notebook

应用开发

1)运行应用

首先使用ModelBox在Windows上开发一个视频防挡弹幕的AI应用测试模型效果,本案例使用Windows版本的ModelBox SDK进行二次开发,案例所需资源(代码、模型、测试数据等)均可从网盘下载,解压到工作目录下面,执行bin/main.bat运行应用:

 

ModelBox提供了可视化图编排工具:Editor,使用./create.bat -t editor开启图编排服务,可以查看项目的流程图:

我们使用CPU进行推理,可以看到该应用基本达到实时检测的要求。如果对ModelBox AI应用开发还不熟悉,请先阅读ModelBox端云协同AI开发套件(Windows)开发环境篇,或ModelBox 端云协同AI开发套件(RK3568)上手指南。如果对ModelBox AI应用开发感兴趣,欢迎参加我们的ModelBox实战营如果只是使用此工程不关注开发细节,则可以只阅读本节,接下来我们将给出该应用在ModelBox中的完整开发过程(以Windows为例)。

2)创建工程

ModelBox sdk目录下使用create.bat创建fangdan工程

末尾-s参数,表示将使用后面参数值代表的模板创建工程,而不是创建空的工程,workspace目录下将创建出fangdan工程

将我们导出的模型linknet.onnx放到yolox_infer目录下,接着编辑.toml配置文件,主要修改模型路径,对配置文件编辑如下:

修改模型后处理功能单元process函数:

修改绘图功能单元:

修改流程图:

修改mock_task.toml输入输出配置,执行bin/main.bat运行应用,测试视频人像分割效果:

3)多路视频流分割

参考上文修改流程图和功能单元:

执行bin/main.bat multi运行应用,最终运行效果如下:

 

4)HTTP调用测试

执行.\bin\main.bat http INFO运行应用,HTTP服务启动后,可以进入工程目录的 data 文件夹下,使用 test_http.py 脚本发起HTTP请求进行测试,最终运行效果如下:

5)创建弹幕功能单元

我们需要实现弹幕穿人而过的效果,因此在SDK目录下再使用./create.bat -t python -n danmu -p fangdan创建一个通用功能单元,补充功能单元的逻辑代码如下:

由于内容较多,就不一一列出,感兴趣的小伙伴可以下载该应用运行一下,生成的视频在hilens_data_dir目录下面:

模型转换

训练得到的onnx模型后可以参考我的Notebook模型转换得到rknn模型。当然在我们的资源包中包含了转换好的模型,如果对模型转换的部分不感兴趣,可以迈着愉快的步伐前往下一节。

模型部署

在Hilens平台下载对应设备的插件,目前ModelBox SDK 1.5.3支持rk多系统和多硬件(包括rk3568、rk3588、rk3399和rk1080),选择对应版本下载安装即可:

我们将Windows上开发好的功能单元一键复制到开发板上,之后修改流程图并开启性能统计选项:

执行bin/main.sh运行应用(如果运行报错请切换到root账号再运行,本应用需要事先使用pip安装好OpenCV和NumPy以及Pillow),运行结束后在hilens_data_dir目录下生成了F201_result.mp4文件与性能评估结果文件夹mb_profile:

使用root账号运行fangdan_http.toml流程图,然后在vscode中打开另一个终端,执行test_http.py脚本,将在fangdan/data下生成测试图片的推理结果:

当然,也可以将测试脚本和图片拷贝到PC上,并将test_http.py中的ip变量修改为开发板的ip进行远程调用测试。

性能评估

配置启动后,启动运行流程图,profile会每隔60s记录一次统计信息,trace会在任务执行过程中和结束时,输出统计信息。

运行流程图后,会生成性能相关的json文件,通过将json文件加载到浏览器中即可查看timeline信息。

  1. 打开chrome浏览器。
  2. 浏览器中输入chrome://tracing/
  3. 点击界面中的Load按钮,加载trace的json文件。
  4. 加载成功后,将看到类似下面的timeline视图:

逐项查看后发现耗时最久的是弹幕合成功能单元,平均耗时931.699ms,因为ModelBox是静态图并行推理,fps取决于耗时最久的功能单元。

优化思路

模型后处理输出的是图像二维矩阵,可以直接以图片的形式返回,没必要转换为str使用json.dumps和json.loads再转化为numpy数组,对于掩模图的处理可以合并到后处理功能单元,这里小编主要是为了贴合原文的写法尽量不做修改。后面可以再单独创建一个generate功能单元用于视频弹幕的生成,而弹幕功能单元只负责对视频层和弹幕层在alpha通道进行合成,从而提高应用的运行效率。

1.png

小结

本文使用ModelBox开发了一个视频防挡弹幕的AI应用,并将其部署到RK3568开发板上。Windows和RK3568版本的应用可以从我们提供网盘链接中下载,解压到工作目录下面就可以一键运行。感兴趣的小伙伴也可以对该应用进行性能优化,或者在基础案例上进行二次开发,即可得到一个可玩的AI应用,期望大家都可以在此一展抱负😉。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。