RK3588 CPU+GPU+NPU三位一体AI边缘控制器,应用于工程车辆/轨道交通+疲劳驾驶检测告警

本文主要是介绍RK3588 CPU+GPU+NPU三位一体AI边缘控制器,应用于工程车辆/轨道交通+疲劳驾驶检测告警,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

XMS-201采用了Rockchip RK3588八核64位处理器,集成ARM Mali-G610 MP4四核GPU,内置AI加速器NPU,可提供6Tops算力,支持主流的深度学习框架;性能强劲的RK3588可为各类AI应用场景带来更强大的性能表现,适用于机器视觉、边缘计算、智能NVR、智慧大屏等领域。

RK3588处理器,作为一款业界领先的芯片,拥有强大的计算能力和高效的功耗控制。这款处理器采用了先进的制程技术,保证了其在复杂运算和数据处理方面的出色表现。无论是图像识别、自然语言处理还是大数据分析,RK3588都能轻松应对,为AI应用提供强大的动力。

而我们的AI边缘控制器XMS-201,正是基于RK3588处理器的强大性能,进行了深度优化和定制。它具备强大的运算能力、出众的AI算力、出色的的视频处理能力、丰富的高速接口、卓越的图形处理性能和高速稳定且低延迟的通信能力等,能够满足各种苛刻的工业和商业场景需求。无论是智能制造、智慧城市还是智能交通,这款控制器都能发挥出其独特的优势。

图片

产品特点

● 三位一体(CPU+GPU+NPU)

-CPU: Rockchip RK3588 4*Cortex-A76+4*Cortex-A55, 2.0GHz

-GPU: ARM Mail-G610 MP4四核

-NPU: 6.0 TOPS

● 8GB LPDDR4

● Onboard 64GB eMMC5.1

● 丰富的I/O接口,支持多屏异显(HDMI+LVDS+eDP)

● 高效互联(GbE/4G/5G/WiFi/BT)

● 可自主扩展:

-1x M.2 B-Key(USB3.0/USB2.0)

-1x M.2 M-Key(SATA/PCIe)

-1x M.2 E-Key(SDIO/UART/USB2.0)

● 提供SDK工具包

● DC9~36V Power input

● OS: Ubuntu20.04/Ubuntu22.04

*Internal: 1、M.2 B key/M.2 M key/M.2 E key    2、LVDS/eDP    3、MIO(SDIO/UART/SPI ec)

图片

图片

图片

高效互联——强大的网络通讯能力

完整的网络方案,使系统既可接入多路传感设备,又可和云端通讯,同时还可以无线连接移动基站,保证信号的采集、数据通讯和信息发布的独立带宽。

■ 3 x 千兆以太网口,其中2路采用Intel I210AT网络芯片,对大多数工业协议有良好的兼容性;

■ 1x M.2 B-Key 3042/3052内部(USB3.0/2.0),支持4G/5G

■ 1x M.2 E-Key 2230内部(USB2.0/SDIO/UART),WIFI/BT

图片

图片

图片

可扩展自主子板,堆叠集群

标准4* 20Pin-F CONN,PH=2.0mm多种功能扩展接口,开放引脚定义(包括:1x PCIe Signal,2x USB2.0 Signal (USB HUB),4x UART Signal(或GPIO*32,1x SMbus Signal,扩充板供电电源),可扩展自主子板、堆叠集群等高级功能、实现毫秒级视觉和运动联动控制。

图片

图片

图片

三屏异显,多通道输入输出

板载HDMI 2.1 (4K@60fps)、eDP1.4(8K@60fps)、1x LVDS(2CH/24-bit)视频输出接口,HDMI RX2.0视频输入接口。支持三屏异显(HDMI2.1(4K)+eDP1.4(8K)+双通道LVDS),可应用于多屏互动显示的各种场景中。

图片

图片

图片

提供专业的SDK软件开发工具包

提供完整的SDK包,含BSP、GPIO配置APP demo、NPU目标识别demo,若扩展光源控制板,可以提供光源控制APP demo。

在AI方面,帮助厂商快速熟悉了RK平台的NPU开发工具RKNN,快速部署已训练好的模型,实现AI应用落地。

疲劳驾驶检测案例

本案例将使用开源项目中的Face Detect与Face Mesh两个模型,实现一个简单的疲劳驾驶检测应用并提醒,最终效果如下所示:

动图封面

案例所需资源(代码、模型、测试数据等)均可从obs桶下载。

开发背景

“道路千万条,安全第一条”,交通安全是我们出行首要关注的问题,而疲劳驾驶一直是引发交通事故的一个主要原因。

在AI算法惠及生活的现在,我们想利用ModelBox开发板快速实现、便利调试开发的特点,实现一个疲劳驾驶提醒应用案例demo,实现基本的疲劳驾驶检测与辅助提醒效果。希望大家能从此案例得到启发与参考,开发出更多丰富、有趣的应用。

算法原理

该项目主要原理为:通过面部检测模块定位出面部区域,将其输入到面部关键点模块检测出面部关键点,并对其中的眼睛、嘴巴等关键点计算其EAR值与时长判断其是否处于疲劳状态并进行提醒。

从摄像头检测出面部区域

从面部检测出关键点

通过公式计算出EAR值,并根据实时滑动窗口计算占比,超过阈值则判断为疲劳应该对其进行提醒

ModelBox介绍

ModelBox是一个适用于端边云场景的AI推理应用开发框架,提供了基于Pipeline的并行执行流程,能帮助AI应用开发者较快的开发出高效,高性能,以及支持软硬协同优化的AI应用。

易于开发
AI推理业务可视化编排开发,功能模块化,丰富组件库;c++,python多语言支持。易于集成
集成云上对接的组件,云上对接更容易。高性能,高可靠
pipeline并发运行,数据计算智能调度,资源管理调度精细化,业务运行更高效。软硬件异构
CPU,GPU,NPU多异构硬件支持,资源利用更便捷高效。全场景
视频,语音,文本,NLP全场景,专为服务化定制,云上集成更容易,端边云数据无缝交换。易于维护
服务运行状态可视化,应用,组件性能实时监控,优化更容易。

模型训练

我们可以使用面向开发者的一站式AI开发平台ModelArts进行模型的训练:

ModelArts提供了包括数据标注,训练环境,预置算法在内的丰富的功能,甚至可以通过订阅预置算法实现零代码的模型训练工作。当然你也可以在本地训练自己的模型。我们假设你现在已经拥有了训练好的模型,接下来我们需要将训练好的模型转换成为可以在开发板上运行的模型。本案例可以直接用预训练好的模型进行初期应用的搭建即可。

模型转换

我们发布了开发板模型转换案例,参见RK3568模型转换验证案例 :

在这个案例中我们演示了从环境适配到模型的转换验证的全流程样例代码,开发者可以通过“Run in ModelArts”一键将Notebook案例在ModelArts控制台快速打开、运行以及进行二次开发等操作。

开发环境部署

使用开发板进行ModelBox AI应用开发有两种方式,一是开发板连接显示器和键盘鼠标,安装Ubuntu桌面,直接在开发板上进行开发;二是使用远程连接工具(如VS Code中的Remote-SSH)从PC端登录开发板进行开发。这里我们推荐第二种方式,因为PC端可以使用功能更丰富、界面更友好的IDE。
请参考此案例的开发环境部署先进行环境搭建:

应用开发

接下来我们会以疲劳驾驶检测demo为例,介绍如何使用ModelBox开发AI应用。

1.创建工程

SDK提供了工程脚本create.py,可以使用./create.py -h查看脚本帮助:

rock@rock-3a:~/yourpath/v1.0.8.21$ sudo ./create.py -hUsage: Create ModelBox project and flowunitNOTE : you must firstly use bellow cmd to create a project in workspacecreate.py -t server -n your_proj_name {option: -s name, create this project from a solution}, support hilens deploymentor create.py -t project -n your_proj_name {option: -s name, create this project from a solution}, generally not use
AND  : use bellow cmd to create  [c++|python|infer]  flowunit in this projectcreate.py -t c++ -n your_flowunit_name -p your_proj_name
AND  : call workspace/your_proj_name/build_project.sh to build your project, call bin/main.sh[bat] to run
FINAL: create.py -t rpm -n your_proj_name to package your project (the same folder with create.py) if upload to hilensNOTE: create.py -t editor {option: -i ip or ip:port to start editor server in your config ip:port}
NOTE: create.py -t demo to create solutions to runnable demofor ex: create.py -t server -n my_det -s car_det-h or --help:show help
-t or --template [c++|python|infer|yolo|project|server|rpm|editor|demo]  create a template or package to rpm ...
-n or --name [your template name]
-p or --project  [your project name when create c++|python|infer|yolo]
-s or --solution [the solution name when create project] create a project from solution
-c or --cfg [flowunit configure json, it's used by UI, you can use it too, but too complicated]
-v or --version:show sdk version

ModelBox提供了可视化图编排工具:Editor,可以使用./create.py -t editor开启图编排服务:服务默认ip即为192.168.2.111,如需配置其他ip或端口,可以通过-i ip:port参数进行配置。

在浏览器输入ip:port/editor即可进入可视化编辑界面,我们点击编排进入工程开发界面,如果进一步了解ModelBox相关内容,可以点击右上角帮助:

进入编排界面,点击右上角新建项目:

我们在workspace的项目路径下,建立项目名称fatigue_detect,点击确认:

从默认的模板中可以看到,我们初始具备了一个http收发单元的默认图:

其中,区域1为SDK预置的高性能通用流单元,区域2为可视化编排界面,区域3为对应的图配置文件内容。同时,VS Code对应目录下也出现了fatigue_detect项目:

2.创建推理功能流单元

接下来,我们通过UI界面创建推理流单元:

点击右上角功能单元,创建单元

对于面部检测模型,我们将流单元命名为face_detection,模型文件名即为转换好的检测模型名:face_detect.rknn,此模型输入为图像,输出为特征向量,所以我们添加int类型的输入端口与float类型的输出端口。关于开发板的推理流单元创建,在处理类型时我们选择cuda,即为npu推理,推理引擎可选任意一款,目前开发板SDK可以自动进行识别转换。最后将功能单元分组修改为inference,点击确认,即可看到,在左侧inference页签下出现了新添加的推理流单元

同时,在VS Code工程model目录下可以看到创建好的推理流单元:

类似的,我们创建face_landmark_detection推理流单元:

3.创建后处理功能单元

除了推理流单元外,疲劳驾驶检测demo还需要一些通用功能单元:面部检测的后处理单元、感兴趣区域(面部检测区域)提取单元、疲劳逻辑判断单元,我们新建三个python功能单元来满足上述需求。

对于面部检测的后处理单元,我们希望通过原图和face_detection的两个输出向量解码出面部检测框,所以该单元应该有三个输入。此外,对于画幅中有无检测到面部两种状态,我们希望该功能单元分情况处理,检测到面部时,将面部检测结果送入感兴趣区域提取单元,没有检测到面部时,直接返回,因此功能单元类型选择:IF_ELSE。新建单元如下:

同样的,根据输入输出与功能单元状态,我们创建extract_roi和fatigue_detect两个功能单元:

4.流程图编排

拖拽

需要的功能单元全部创建好后,我们可以着手编排流程图,我们编排一个视频处理的图,可以删除不需要的http收发单元:

在Generic列表下将虚拟输入单元input和我们刚刚创建的三个功能单元拖入画布:

在Image列表下将模型推理需要用到的预处理单元resize拖入画布,因为面部检测模型与面部关键点模型都resize处理,把两个resize单元拖入:

值得注意的是,resize单元需要适配模型参数,需要点击该单元进行配置:

在Input列表下拖入输入解析单元data_source_parser作为视频流的输入源

在Video列表下拖入视频处理需要的单元video_demuxer、video_decoder、video_out:

最后,在Inference列表下拖入我们创建的两个推理单元:

编排

将功能单元按照处理逻辑进行连接:

点击上个流单元并拖动箭头可以连接下一个流单元

虚拟输入input连接输入解析data_source_parser,解析后送入视频解包video_demuxer与解码单元video_decoder:

解码输出送入预处理后可直接进行推理,面部检测输出连接后处理模块,用于提取坐标输入到感兴趣区域,若没检测到面部则跳过面部关键点检测与疲劳驾驶判断:

图片

这篇关于RK3588 CPU+GPU+NPU三位一体AI边缘控制器,应用于工程车辆/轨道交通+疲劳驾驶检测告警的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/886230

相关文章

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁