在全志V853平台上成功部署深度学习步态识别算法

2024-03-05 11:12

本文主要是介绍在全志V853平台上成功部署深度学习步态识别算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

北理工通信课题组辛喆同学在本科毕业设计《基于嵌入式系统的步态识别的研究》中,成功将深度步态识别算法GaitSet移植到全志V853开发板上。本研究在CASIA-B数据集上进行测试,正常行走状态下该系统的步态识别准确率达到了94.9%,背包行走和穿外套行走条件下识别准确率分别达到了87.9%与71.0%。

在这里插入图片描述

步态识别作为一种新兴的生物识别方式,相比于人脸识别、指纹识别等方式,具有易于适应环境、无法伪装等优点。

本文所设计的步态识别系统,搭建在全志V853开发板上,充分利用板载外设、CPU与NPU,实现了嵌入式系统上的实时步态识别系统。

在这里插入图片描述

具体来说,系统所采用的深度学习算法在PC端进行训练,得到的Pytorch 模型通过模型转换工具转换为V853 NPU所能运行的NB模型,模型的推理在NPU上进行。系统的整体运行过程分为前处理、模型推理、后处理与UI显示四大部分。

在这里插入图片描述

本系统所采用的深度学习算法绝大部分算子在板载NPU上进行推理,小部分算子在板载CPU上运算得到结果。前处理与后处理过程均在板载CPU上进行,分别采用OpenCV与Eigen运算库,其中前处理从板载摄像头采集的视频中提取步态轮廓,并将其裁剪拼接后作为NPU模型的输入数据,后处理将NPU模型运行结束得到的输出数据进行补充运算并进行特征对比,以实现身份鉴定。UI界面的显示,通过Qt生成的应用程序实现。

本研究在CASIA-B数据集上测试了NB模型的步态识别准确率。CASIA-B是一个大规模、多视角的步态识别数据集,共包含124个样本,每个样本都有10种步态序列,分为6个正常行走的序列(NM),2个身着长外套行走的序列(CL)以及2个佩戴背包行走的序列(BG)。CASIA-B注重视角的变化,在每个行走序列中又包含了11个不同的角度。将数据集中的74个样本作为训练样本,剩下的50个样本作为测试样本。

在这里插入图片描述

在测试集中,使用每个样本的前4个正常行走的序列作为gallery集,为了研究在不同人体轮廓下系统的性能表现,划分了3个probe集,分别为正常行走序列的最后2个序列、2个身着长外套行走的序列和2个佩戴书包行走的序列。考虑到角度对识别效果的影响,本研究在每一个角度都进行了单独测试,以验证不同角度下识别的正确率。

根据上述测试数据制作了下表,表中包含了本文设计的步态识别系统GaitCircle使用的NB模型与GaitSet模型针对相同条件下的识别准确率数据。其中NM表示正常行走状态、BG表示背包行走,CL表示穿外套行走。

在这里插入图片描述

除了针对步态识别准确率进行了测试,本研究也对步态识别的实时性进行了测试。对于单人步态识别,前处理的处理速度达到了每帧58ms,模型推理运行时间仅为77ms,后处理的运行时间为0.73s。

最后,本研究还进行了实时识别测试,实时识别测试是利用V853开发板上的摄像头拍摄录像,并实时进行步态识别输出行人身份的过程。在进行测试之前,V853 Tina Linux中设置了开机自启动步态识别程序,主要通过在/etc/profile文件添加运行步态识别程序的命令实现。以下视频即为实时步态识别测试的过程,已经提前在步态信息库中录入了20个人的步态特征。

这篇关于在全志V853平台上成功部署深度学习步态识别算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

如何正确识别一台POE交换机的好坏? 选购可靠的POE交换机注意事项

《如何正确识别一台POE交换机的好坏?选购可靠的POE交换机注意事项》POE技术已经历多年发展,广泛应用于安防监控和无线覆盖等领域,需求量大,但质量参差不齐,市场上POE交换机的品牌繁多,如何正确识... 目录生产标识1. 必须包含的信息2. 劣质设备的常见问题供电标准1. 正规的 POE 标准2. 劣质设

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx