所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

基于人体关键点识别的字符传输平台

kylinpoet kylinpoet 2020-02-14 21:33:35
步骤1 步骤1
设计灵感:
在第一轮的比赛中,虽然使用了《旗语-基于区位码的汉字加密系统》作为标题,但实际上和旗语没有关系。主要是区位码和手势识别的功劳。

所以在第二轮的比赛中,准备加入真实的旗语系统。

旗语(英语:Flag semaphore),一种利用手旗或旗帜传递信号的沟通方式,可分单旗和双旗等两种,又称为“手旗信号”或“手旗通信”,距离较长时,借助双筒望远镜或望远镜,以延伸目视距离。国际通用一些旗帜表示如下图:

projectImage

虽然Mind+提供的图像识别功能中没有确切的旗帜识别接口,但我们可以利用其提供的人体关键点识别接口来进行信号的识别。为了表示不同的旗帜位置,我们可以使用,肩部到手腕的连线和垂直平面的夹角来表示旗帜的不同位置,如下图所示:

projectImage

利用肩部和腕部的数据点位置,就可以获得左右手的位置关系的。当然为了能正确识别,对于角度的关系处理还需要处理阈值,下面讲解代码的时候会说到。

当然对于中国来说,能使用中文当然是最好的。因此为了简化内容,此文还是准备利用四位数区位码进行汉字的传递。

步骤2 步骤2
软件部分设计1:
人体关键点的识别在电脑上用Mind+网络服务模块里的AI图像识别功能实现。实际上,如果我们仔细看第二轮的要求会发现,只要能使用Mind+和DF的硬件就可以了,百度的语音识别等其他有趣的AI功能可以自写代码实现:比如脱离PC机在树莓派或者虚谷号上完成代码编写。

但鉴于时间关系,此文就不在树莓派上折腾了。

代码逻辑如下图所示:

projectImage

因为要用到语音播报,所以需要选中“功能模块”下的“文字朗读”功能,和“网络服务”下的“MQTT”和“AI 图像识别”两个模块。 

projectImage
projectImage

另外还需要使用百度智能云应用:

虽然Mind+ 内置了一个公用账户,但是公用账户有同时访问限制,因此最好还是使用自己注册的账户。首先登录百度 AI 开放平台,https://ai.baidu.com,点击页面右上角“控制台”,然后“登录”自己的百度账号。成功后进入控制台页面,点击左边栏“人脸识别”。

projectImage
projectImage
projectImage

创建好以后会有 AppID、API Key、Secret Key 三个信息,记录下来,后续编程会用到。

projectImage
做好以上准备后,我们通过上面的角度获取公式,然后利用百度人体关键点识别接口 ,通过:“函数识别旗语”,获取不同旗帜所表示的字符。四个字符识别完成后,利用一个确认旗帜,完成一个汉字的传输。

上图中的 “函数画图”主要是画出识别的大致形状,好进行判断。

当然这里为了模拟,旗语的识别过程。利用 MQTT协议发送到 掌控板使用的接收端。

projectImage
projectImage

最后,在标准的国际手旗信号中: 开始通信时,发信船将字母旗“J”,悬于旗绳顶端,收信船看到后也挂字母旗“J”,表示已准备妥当后,即开始手旗通信。对于收发信文、更正符号、结束通信皆有一定的作业程序(SOP)

笔者为了模拟这个操作,由接收方控制什么时候进行信息传输,还是使用了MQTT协议,进行通讯。不过为了和正常的信息传输通道区分,换了一个TOPIC:

projectImage

在 Mind+ 角色中编写主程序。首先设置百度智能云和 MQTT 的初始化参数。将前面创建百度智能云应用获得的 AppID、API Key、Secret Key 都填入空白处。MQTT 使用 SIoT,SIoT下载地址:http://mindplus.dfrobot.com.cn/siot。运行 SIoT程序后将服务器地址等填入空白处。

projectImage
步骤3 步骤3
软件设计部分2:

接收方用掌控板来进行处理,经由MQTT的Topic0通讯进行信息的传输。当然可以直接进行旗语的数字信息传输,不经区位码编码。在接收端进行再进行编码会更和实际接近点。但因为 mind+在PC的实时模式和方便调试,所以就在本地直接编码了。但道理是一样,这里就偷个懒。

projectImage
projectImage
步骤4 步骤4
硬件使用:
材料清单 材料清单
1x
掌控板
1x
掌控板扩展板
1x
按钮
1x
某不知名纸盒
1x
温暖牌女儿手绘

因为疫情的原因,在家也没有什么材料,这里就用几个简单的东西摆弄下。当然这里要感谢女儿的积极配合与妻子的倾情合作(这个成品是妻子制作的...)

我们称之为:《信息接收平台电视机》。

projectImage
projectImage
代码附件如下:

当然也可以在码云上下载:

https://gitee.com/kylinpoet/DF_Winter_AI_2

如果有更好的创意,欢迎分享讨论。

最后:因为视频录制的不方便。旗语识别发送端,和掌控板接收端是分开录制,敬请见谅。

视频的背景音是本人预先录制在mind+里的,每次识别成功都自动读出来。(当时也是为了测试是否识别成功。)

视频里识别的旗语手势是:4668(武),2626(汉),2851(加),5145(油)。

projectImage
Makelog作者原创文章,未经授权禁止转载。
1
1
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]