| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android手部检测和手势识别(含训练代码+Android源码+手势识别数据集) -> 正文阅读 |
|
[移动开发]Android手部检测和手势识别(含训练代码+Android源码+手势识别数据集) |
Android手部检测和手势识别(含训练代码+Android源码+手势识别数据集)目录 Android实时手势动作识别(含训练代码++手势识别数据集) 1. 前言本篇博客是《基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)》续作Android篇,主要分享将Python训练后的YOLOv5手势识别模型移植到Android平台。我们将开发一个简易的手势动作识别Android Demo。Demo支持one,two,ok等18种常见的通用手势动作识别,也可以根据业务需求自定义训练的手势识别的类别。 考虑到原始YOLOv5的模型计算量比较大,鄙人在YOLOv5s基础上,开发了一个非常轻量级的的手势识别模型yolov5s05。从效果来看,Android手势识别Demo性能还是顶呱呱的,平均精度平均值mAP_0.5=0.99421,mAP_0.5:0.95=0.82706。APP在普通Android手机上可以达到实时的手势识别效果,CPU(4线程)约30ms左右,GPU约25ms左右 ,基本满足业务的性能需求。 先展示一下Android Demo效果:
【Android APP体验】https://download.csdn.net/download/guyuealian/86666991 【源码下载】?Android手部检测和手势识别 【尊重原创,转载请注明出处】https://panjinquan.blog.csdn.net/article/details/126994546 2. 手势识别的方法(1)基于多目标检测的手势识别方法基于多目标检测的手势识别方法,一步到位,把手势类别直接当成多个目标检测的类别进行训练。
(2)基于手部检测+手势分类识别方法该方法,先训练一个通用的手部检测模型(不区分手势,只检测手部框),然后裁剪手部区域,再训练一个手势分类器,完成对不同手势的分类识别。
考虑到HaGRID手势识别数据集,所有图片已经标注了手势类别和检测框,因此采用“基于多目标检测的手势识别方法”更为简单。本篇博客就是基于多目标检测的手势识别方法,多目标检测的的方法较多,比如Faster-RCNN,YOLO系列,SSD等均可以采用,本博客将采用YOLOv5进行多目标检测的手势识别训练。
3. 手势识别数据集说明(1)HaGRID手势识别数据集原始的HaGRID数据集非常大,图片都是高分辨率(1920 × 1080)200W像素,完整下载HaGRID数据集,至少需要716GB的硬盘空间。另外,由于是外网链接,下载可能经常掉线。 考虑到这些问题,本人对HaGRID数据集进行精简和缩小分辨率,目前整个数据集已经压缩到18GB左右,可以满足手势识别分类和检测的任务需求,为了有别于原始数据集,该数据集称为Light-HaGRID数据集,即一个比较轻量的手势识别数据集。
?关于《HaGRID手势识别数据集使用说明和下载》,请参考鄙人另一篇博客, HaGRID手势识别数据集使用说明和下载_PKing666666的博客-CSDN博客
(2)自定义数据集如果需要增/删类别数据进行训练,或者需要自定数据集进行训练,可参考如下步骤:
4. 基于YOLOv5的手势识别训练考虑到手机端CPU/GPU性能比较弱鸡,直接部署yolov5s运行速度十分慢,所以这里Android部署仅仅考虑yolov5s05模型,yolov5s05即是在yolov5s的基础上做了模型轻量化处理,其channels通道数全部都减少一半,并且模型输入由原来的640×640降低到320×320。从性能来看,yolov5s05比yolov5s快5多倍,而mAP下降了5%(0.87605→0.82706),对于手机端,这精度还是可以接受。
下面是yolov5s05和yolov5s的参数量和计算量对比:
yolov5s05和yolov5s训练过程完全一直,仅仅是配置文件不一样而已;碍于篇幅,本篇博客不在赘述,详细训练过程请参考:《基于YOLOv5的手势识别系统(含手势识别数据集+训练代码)》 5.手势识别模型Android部署(1) 将Pytorch模型转换ONNX模型训练好yolov5s05或者yolov5s模型后,你需要将模型转换为ONNX模型,并使用onnx-simplifier简化网络结构
(2) 将ONNX模型转换为TNN模型目前CNN模型有多种部署方式,可以采用TNN,MNN,NCNN,以及TensorRT等部署工具,鄙人采用TNN进行Android端上部署: TNN转换工具:
(3) Android端上部署手势识别模型项目实现了Android版本的手势动作识别Demo,部署框架采用TNN,支持多线程CPU和GPU加速推理,在普通手机上可以实时处理。Android源码核心算法均采用C++实现,上层通过JNI接口调用.
(4) 一些异常错误解决方法
如果你是直接使用官方YOLOv5代码转换TNN模型,部署TNN时会出现这个错误Permute param got wrong size,这是因为TNN最多支持4个维度计算,而YOLOv5在输出时采用了5个维度。你需要修改model/yolo.py文件 ?export.py文件设置model.model[-1].export = True:
?这个问题,大部分是模型参数设置错误,需要根据自己的模型,修改C++推理代码YOLOv5Param模型参数。
input_width和input_height是模型的输入大小;vector<YOLOAnchor> anchors需要对应上,注意Python版本的yolov5s的原始anchor是
而yolov5s05由于input size由原来640变成320,anchor也需要做对应调整,所以我训练前对手势数据的anchor进行重新聚类,得到输入320×320的anchor为:
因此C++版本的yolov5s和yolov5s05的模型参数YOLOv5Param如下设置
参考解决方法:解决dlopen failed: library “libomp.so“ not found_PKing666666的博客-CSDN博客_dlopen failed? 6. 手势识别测试效果?Android APP体验?https://download.csdn.net/download/guyuealian/86666991?? APP在普通Android手机上可以达到实时的手势识别效果,CPU(4线程)约30ms左右,GPU约25ms左右 ,基本满足业务的性能需求。
7.项目源码下载【Android APP体验】https://download.csdn.net/download/guyuealian/86666991 整套项目源码内容包含Light-HaGRID数据集 +?YOLOv5训练代码和测试代码+手势识别Android APP源码 :?Android手部检测和手势识别 (1)Light-HaGRID数据集
(2)YOLOv5训练代码和测试代码
(3)手势识别Android APP源码
?【源码下载】?Android手部检测和手势识别 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/19 1:31:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |