2021/11/26 初次做动作识别项目经历和总结(一)

1、前言


第一次了解到这个动作识别的时候,是在今年5月份。

那时候,我还在志坚哥领导下面,管理着健海灵魂项目——济事大脑。

初来乍到的我,哪见过如此大场面,望着先辈们留下一望无际的粪山,感受着四周被先辈们包围的气息,逐渐地陷入了这片深渊当中。

就这样挑粪挑了两个礼拜,直到第三个星期,志坚哥找到了我,并说了缘由,原来是施淇老师活太多,忙不过来,现在需要我去配合,做一个高科技产品。

这番消息,就犹如一道万丈光芒,突破云霄,在粪堆中显得格外耀眼,我似乎看到了希望,想要抓住这个机会,毕竟这是可以摆脱这个深渊的唯一办法,并且还可以证明自己的能力,给自己增加闪光点。

我满怀壮志,随着志坚哥,来到了西海会议室,见到了这个项目最重要的引导者,核心人物,保松哥,在健海python算法界名声在外の老鸟

经过一系列的探讨,我终于大概了解了该项目的基本信息: 公司想要做一个在客户端实现姿态识别的小程序

初次接触这个领域,我心里没有底,怕又掉入另一个万丈深渊,不过好在保松哥,向我解释,python那边已经验证过,可以使用mediapipe的姿态识别,官网上并且有说明可在web端实现客户端识别。

只需要我调用相机api,和Mediapipe的api,实现客户端的识别,返回33个点的结果,通过接口的形式给他,然后返回结果给我,然后将结果显示在页面上,就可以了。

听上去,好像就只是调调接口和api,应该可以吧,我将信将疑地揽下了这个活儿,现在回想起来,似乎带有一点忽悠的成分。

2、h5阶段(MediaPipe)


接下来的几天,我照着文档的demo,导入国内google镜像(国外要翻墙)mediapipe文件,启动相机,给视频流截图给识别引擎(模型),处理结果反馈后,将此33个点,全部显示在canvas上面,并且连接相邻的点。

将获取的点结果,按部就班地传给了保松哥的python服务器,动作个数和评分返回,并显示出来,一气呵成,初步完成了的h5端的动作计数。

3、黑科技 - 反编译


这期间,完成的很顺利,顺利的难以置信,我不由从心底里反问,真的如此简单吗,很遗憾,并不是如此。

经验证过,小程序webview下,并不能使用相机功能,这就排除了嵌页面最简单的方式。

还有这官方文档,反反复复看了不下10遍,整个文档只有web端,python端,而其中最关键的小程序,丝毫踪迹没有。

而且web端的例子,是用html形式编写js导入的,可这小程序不兴导这个呀,就算能导进去,小程序语言环境还是有些差异的,到时候直接给编译器,整个过年喜庆的皮肤,这不太好吧。

不用担心,每到这时候,我都会打开万能的搜索引擎,来想想灵感。

想来想去,结果做姿态(动作)识别的小程序,几乎没有,果然高科技,动作识别的App倒是有几个案例,结果一个是服务端做的识别,一个又是自己做识别模型(看上去效果特差,应该没经过训练)。

难不成真的要我,从网站上下载依赖js,一个个自己手动转换吗?

好家伙,望着堆着成千上万行代码,我直摇头,这可不兴改呀,我还是去问问,从何得来,可以用mediapipe做小程序的结论,我如此想着。

又用了半天的时间,我从志坚哥和保松哥,那边了解到,原来是叶总发现有个专门做体育课程的小程序,实现了运动识别的功能,想叫我们也做一个出来试试。

当拿出手机,点开那个小程序,我见证到了那蓝色火柴人随着肢体变化,流畅的特效,确实震撼到了我,心里盘问着我自己,能做出来这么酷炫的吗?

事实摆在眼前,人家是用小程序做出来的,我仍是不信它这个是由mediapipe开发出来的,并提出了疑问。

保松哥思考的比我透彻,而且他说的有道理,他发现这个小程序在识别的过程中,开启相机后,网速发生了不断的流量变化,平均起伏在100kb/s以上,所以,得出结论该小程序是将图像传输到服务器这边,进行全识别的,而不是在用户端实现姿态识别。

一番话下来,我们听的直点头,你哥还是你哥,我心里还没来得及佩服,他又接着说,如果真想确认,可以进行小程序反编译。

反编译?当时的我,还没有接触这个引起公愤,万恶的技术方法,而是觉得这是一个十分高级牛批的黑科技。

行,我听取了保松哥的建议,接下去的任务,反编译小程序,验证是否能在客户端上进行姿态识别

wxappUnpacker,专为微信小程序量身打造的反编译工具。

我这边,就简略地过一下反编译的流程,模拟器或者手机打开要反编译的小程序,点到你想要反编译的部分,因为有可能它使用了分包。

然后,在文件管理里面, 找到该微信缓存下的wxapkg(根据时间和大小找),传到电脑上来。

再在wxappUnpacker项目里面执行解子包和解分包命令,当然是有可能会解包失败,而且解压出来的包,是全部压缩的,很难看出来用了哪些技术。

比较幸运的是,我当时解压出来的文件,确实是成功的,但可惜的是,文件全部都被压缩放在同一个js下面,几万行的代码,这就很难看出来,到底是用了啥技术,进行识别。

我没有失去斗志,努力思考着,搜索有关mediapipe的关键词,但结果确实不尽如意,无一例外,全都没有找到。

我停了下来,察觉到方向可能找错了,因为假设此项目没有用到mediapipe,没有搜索到相关信息,这不是很正常的事吗。

再假设它没有用到客户端识别,不管我怎么翻,肯定也翻不出来一点识别引擎的痕迹,真要这样,那么我做反编译的这些时间,都做了无用功,仅仅是排除了该小程序没有用到客户端识别,这完完全全又回到了起点。

用着h5端的项目成果来交差,没有达到预期效果,上级领导也肯定是不满意的,项目也不能够进行下去。

前端的姿态识别,网上的资源少的可怜,使用者少之又少,这简直就是前端沙漠,我难道要倒在这片沙漠当中?

我想,我遇到了此项目的第一个难题,小程序方案到底可不可行。

时间一分一秒地过去了,我与时间赛跑,我与代码争斗,纵观全局,好几万行的代码,就犹如好几万根针,扎在我的心上。

我没有慌乱,逐渐理清思路,想到就算这小程序没有用到姿态识别引擎,它也必定逃不过调用小程序camera的Api,没错,全局搜索一下 “onCameraFrame”,然后一层一层往上找。

果不其然,立马发现了线索-MobileNetV1,这是一个轻量级神经网络,基本上可以确认是在本地小程序进行姿态识别的,我没有显得十分高兴,因为我知道往下找才是关键,然后,再以MobileNet为关键词,全局搜索,找出其中的关键技术。

没有想到以MobileNet的关键词,点亮了一批又一批链接,小程序姿态识别最关键技术就在里面,我忍住心底的喜悦,迫不及待地将每一个链接,都仔细地翻墙浏览过,上学的时候,都没这般认真过。

靠着三脚猫的英语能力,和google翻译,找到了我心心念念地小程序识别技术引擎,我的天,这是PoseNet

我终于证明了小程序客户端姿态识别可行,我掩面而泣,丢下笔记本电脑,踉踉跄跄地跑去保松哥,和志坚哥那边,和他们一起分享这个喜悦的瞬间,没有他们的支持和建议,没有他们的帮助,我一个人是无法做到的。


下一篇,正式步入姿态识别小程序开发的经历,见证逐渐由posenet转变为movenet的历程

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值