基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(五)

2023-09-20 14:23:23


在这里插入图片描述

前言

本项目依赖于Keras深度学习模型,旨在对手语进行分类和实时识别。为了实现这一目标,项目结合了OpenCV库的相关算法,用于捕捉手部的位置,从而能够对视频流和图像中的手语进行实时识别。

首先,项目使用OpenCV库中的算法来捕捉视频流或图像中的手部位置。这可以涉及到肤色检测、运动检测或者手势检测等技术,以精确定位手语手势。

接下来,项目利用CNN深度学习模型,对捕捉到的手语进行分类,经过训练,能够将不同的手语手势识别为特定的类别或字符。

在实时识别过程中,视频流或图像中的手语手势会传递给CNN深度学习模型,模型会进行推断并将手势识别为相应的类别。这使得系统能够实时地识别手语手势并将其转化为文本或其他形式的输出。

总的来说,本项目结合了计算机视觉和深度学习技术,为手语识别提供了一个实时的解决方案。这对于听觉障碍者和手语使用者来说是一个有益的工具,可以帮助他们与其他人更轻松地进行交流和理解。

总体设计

本部分包括系统整体结构图和系统流程图。

系统整体结构图

系统整体结构如图所示。

在这里插入图片描述

系统流程图

系统流程如图所示。

在这里插入图片描述

运行环境

本部分包括 Python 环境、TensorFlow环境、 Keras环境和Android环境

模块实现

本项目包括6个模块:数据预处理、数据增强、模型构建、模型训练及保存、模型评估和模型测试,下面分别介绍各模块的功能及相关代码。

1. 数据预处理

在Kaggle上下载相应的数据集,下载地址为https://www.kaggle.com/ardamavi/sign-language-digits-dataset

详见博客

2. 数据增强

为方便展示生成图片的效果及对参数进行微调,本项目未使用keras直接训练生成器,而是先生成一个增强过后的数据集,再应用于模型训练。

详见博客

3. 模型构建

数据加载进模型之后,需要定义模型结构,并优化损失函数。

详见博客

4. 模型训练及保存

本部分包括模型训练和模型保存的相关代码。

详见博客

5. 模型评估

由于网络上缺乏手语识别相关模型,为方便在多种模型中选择最优模型,以及进行模型的调优,模型应用于安卓工程之前,需要先在PC设备上使用Python文件进行初步的运行测试,以便验证本方案的手语识别策略是否可行并选择最优的分类模型。

详见博客

6. 模型测试

评估整体模型可行性后,将手语识别模型应用于Android Studio工程中,完成APP。具体步骤如下。

详见博客

系统测试

本部分包括训练准确率、测试效果及模型应用。

1. 训练准确率

训练过程的准确率损失变化如图1和图2所示。

在这里插入图片描述

图1 模型准确率

在这里插入图片描述

图2 模型损失值

2. 测试效果

在初步评估中,使用Spyder编译运行相关评估代码之后,能够在以白色墙壁、各种光照的条件下较好地捕捉手部位置,并准确识别0~9共10个手语手势,如图3和图4所示。

在这里插入图片描述

图3 捕捉手部区域效果图

在这里插入图片描述

图4 识别手语效果图

3. 模型应用

本部分包括程序下载运行、应用使用说明和测试结果。

1)程序下载运行

Android项目编译成功后,建议将项目运行到真机上进行测试。模拟器运行较慢,不建议使用。运行到真机方法如下:

(1) 将手机数据线连接到计算机,开启开发者模式,打开USB调试,单击Android项 目的运行按钮,出现连接手机的选项,单击即可。

(2) Android Studio生成apk文件,发送至手机,在手机上下载该apk文件并安装即可。

2)应用使用说明

打开APP,初始界面如图所示。
在这里插入图片描述

界面从上至下3个按钮分别为【转到图片识别】、【开始翻译手语】、【停止翻译】。界面依次显示本次的识别结果及置信度、捕捉到的手部区域、累计识别到的句子翻译。

单击【开始识别】按钮,结果如图所示。

在这里插入图片描述

单击【转到图片识别】按钮,跳转到图片识别界面。单击【拍照识别】按钮调用摄像头拍照,切换前置及后置摄像头。单击【从相册中选择】即可调出相册界面。选择好图像后,APP将展示所选图片并返回手语识别结果,如图所示。

在这里插入图片描述

3)测试结果

手势识别“520’效果如图所示。

在这里插入图片描述

图片识别其他手势效果如图所示。

在这里插入图片描述

复杂背景效果如图所示。

在这里插入图片描述

相关其它博客

基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(一)

基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(二)

基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(三)

基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(四)

工程源代码下载

详见本人博客资源下载页


其它资料下载

如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载
这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。

更多推荐

薄盒借周杰伦IP卖藏品 车翻在奈雪的茶

在瑞幸联名茅台、喜茶联名FENDI、茶百道联名米哈游后,奈雪的茶搭上了周杰伦。9月14日,在《范特西》专辑发行22周年之际,奈雪的茶推出“范特西音乐宇宙”主题的奶茶与周边。周杰伦系IP加持,奈雪的茶卖爆了,范特西Style的奶茶首日销量达146万杯。然而,车翻得也快,当Jay粉以为奈雪的茶联名了周杰伦时,这个奶茶品牌否

MySQL——变量和存储过程

2023.9.18变量系统变量:全局变量会话变量自定义变量:用户变量局部变量一、系统变量说明:系统变量由系统定义,不是用户定义,属于服务器层面注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话变量。使用步骤:1、查看所有系统变量showglobal|【session】va

selenium自动化测试入门

Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium是用于自动化控制浏览器做各种操作,打开网页,点击按钮,输入表单等等,可以模拟各种人工操作浏览器的功能,主要用途是自动化测试领域,但是也可以用于爬虫领域,或自动化办公领域。本次只是简单入门操作,在

优化测试准备-通过仿真诊断提高效率

现如今,随着车辆中电子器件和软件数量的快速增加,直接在车辆上测试50-150个ECU变得越来越复杂,且需测试的内容也不再局限于单独的系统,而是包括了各个系统之间的交互,最终导致测试过程中的工作量呈指数级增长。一自动化测试减少了测试工作量面对日益增长的工作量,实现自动化测试可能是解决这个问题的一大关键。对此,必须提升效力

linux万字图文学习进程信号

1.信号概念信号是进程之间事件异步通知的一种方式,属于软中断。1.1linux中我们常用Ctrl+c来杀死一个前台进程1.Ctrl-C产生的信号只能发给前台进程。一个命令后面加个&可以放到后台运行,这样Shell不必等待进程结束就可以接受新的命令,启动新的进程。2.Shell可以同时运行一个前台进程和任意多个后台进程,

mysql数据库备份(mysqldump)

mysqldump命令备份数据mysqldump-uroot-p--databases数据库1数据库2>xxx.sqlmysqldump常用操作示例1.备份全部数据库的数据和结构mysqldump-uroot-p123456-A>/data/mysqlbackup/mydb.sql2.备份全部数据库的结构(加-d参数)

计算机竞赛 深度学习 大数据 股票预测系统 - python lstm

文章目录0前言1课题意义1.1股票预测主流方法2什么是LSTM2.1循环神经网络2.1LSTM诞生2如何用LSTM做股票预测2.1算法构建流程2.2部分代码3实现效果3.1数据3.2预测结果项目运行展示开发环境数据获取最后0前言🔥优质竞赛项目系列,今天要分享的是🚩深度学习大数据股票预测系统该项目较为新颖,适合作为竞

SpringMVC之JSON返回&异常处理机制

一.什么是SpringMVC之JSON返回&异常处理机制二.Json处理导入pom.xml依赖导入Spring-Mvc.xml编写JsonController编写Sql语句测试结果json转换的注解测试结果(@JsonIgnore)三.全局异常处理机制为什么要全局异常处理异常处理思路​编辑自写一个错误代码​编辑输出结果

【vue组件】使用element-ui table 实现嵌套表格 点击展开时获取数据

应用场景是这样主表格的数据是所有的学校然后点击展开的时候,获取学校下相应班级的数据并且班级要能选择后生成图表,但所有的班级最多选择5个首先是嵌套表格<div><el-table:data="tableDisplayData"id="chartTableExpand"style="width:100%"ref="char

基于SpringBoot的点餐系统

基于SpringBoot+Vue的点餐系统、食堂餐厅点餐系统、前后端分离开发语言:Java数据库:MySQL技术:SpringBoot、Vue、MybaitsPlus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven【主要功能】角色:管理员、用户管理员:菜品管理、桌位管理、菜品管理、类别管理

侯捷老师C++课程:C++2.0 新特性

C++2.0新特性第一讲:语言variatictemplates参数包在类模板中,模板参数包必须是最后一个模板形参.而在函数模板中则不必!!!这个之前提过了,就不细谈了下面那三个分别对应:typename...Types//模板参数包constTypes&...args//函数参数类型包print(args...)//

热文推荐