今天跟大家唠唠我最近折腾的“英雄拉拉队长”项目,一开始我都没啥信心,感觉难度有点大,但是硬着头皮上,没想到还真搞出来了,成就感满满!
我是想做一个能自动识别视频里拉拉队动作,然后根据动作给队伍加油鼓劲儿的东西。 想法是挺好的,但是一上手,发现根本不知道从哪儿开始。 网上找了一堆资料,啥深度学习,啥姿态识别,看得我头都大了。
第一步,肯定是找数据! 我到处搜集拉拉队的视频,各种比赛的,表演的,甚至还有一些电影片段。 反正只要是能看到拉拉队的,我都扒下来了。 然后就开始吭哧吭哧地标注数据, 标注啥? 就是把视频里每个人的关键点,比如手肘,膝盖,肩膀啥的,都用框框给圈出来。 这个活儿,真不是人干的,太费眼睛了!
- 视频素材收集:各种渠道,越多越好
- 数据标注:关键点标注,耐心是关键
有了数据,接下来就是搭模型了。 我选了一个叫“OpenPose”的开源模型,这个模型能识别出人体姿态,省了我不少事儿。 但是,直接用这个模型识别出来的结果,效果不太 噪点太多,识别率也低。 没办法,只能自己动手微调模型,改参数,改损失函数,各种试。
模型训练是个漫长的过程。 我用自己的破电脑,跑了好几天才跑完。 跑完之后,一看结果,还是不行! 准确率只有百分之六十多,这肯定没法用。 我就怀疑是不是我的数据有问题,又回去检查了一遍数据,发现还真有不少标注错误的地方。 赶紧重新标注,重新训练。
就这样,我反反复复地改数据,调模型,跑训练,大概折腾了两个星期, 准确率总算提高到百分之八十多了。 虽然还不是特别理想,但是勉强能用了。 然后我就开始写代码,把模型集成到我的程序里。
接下来就是重头戏了,怎么让程序根据拉拉队的动作来加油鼓劲儿? 我想了一个办法,就是把拉拉队的动作分成几种类型,比如挥手,跳跃,旋转啥的。 然后根据不同的动作,播放不同的加油音频。 为了让效果更我还自己录了一些加油的口号,啥“加油!加油!”, “必胜!必胜!”之类的。
整合与测试
我把所有东西都整合到一起,跑了一下。 效果还不错,程序能基本识别出拉拉队的动作,然后播放相应的加油音频。 但是,还是有一些问题,比如有时候识别不准,或者加油音频播放的时机不对。 这些都只能慢慢优化了。
为了让这个项目更实用,我还加了一个功能,就是可以自定义加油口号。 用户可以自己录制自己的声音,然后设置成加油音频。 这样,就可以根据自己的喜给队伍加油了。
这个“英雄拉拉队长”项目,我算是从头到尾地折腾了一遍。 虽然过程中遇到了很多困难,但是还是成功地完成了。 这也让我明白了一个道理,只要坚持下去,没有什么是做不到的。
的我把这个项目放到了github上,有兴趣的可以去看看,给个star啥的就更好了。 希望我的这个分享,能对大家有所帮助。 也欢迎大家多多交流,一起进步!