571
社区成员
发帖
与我相关
我的任务
分享在智能化时代的当今社会,人脸识别、手势识别、自动驾驶等以前只会出现在科幻电影里的技术已经来到我们的身边。我们平时生活中接触到最多的视频信息几乎都是与人相关的:真人电影与短视频、监控影像、远程视频等等。所以对于人体的姿态估计与动作识别是一项极具意义的课题,可以用于动作电影的武术动作识别、专业的健身动作识别、老年人的跌倒识别检测甚至是国家运动员的专业动作分析等各种应用场景。
整体流程如图:

在完成算法后,需要进行前后端的相关开发。
用户打开手机或者 pc 前端界面:
因此需要开发以下功能:
上传图片/视频功能:
可以浏览选择本地各种格式的图片与视频,对用户来说,上传后即开始处理。
开启/关闭摄像头功能:
可以通过此功能打开电脑或者手机的摄像头,并在开启摄像头期间,可以开始处理摄像头内容。(不包括麦克风)
开始/终止识别功能:
视频处理需要时间等待,而图片处理不需要此功能。
结果图片展示/视频播放功能:
处理完成后会自动展示/播放处理后的图片/视频
结果下载功能:
处理完成的新的图片与视频会自动保存到工作目录
退出程序功能:
点击退出程序。
阶段性功能实现展示:


因为项目计划设计 pc 端与移动端两个平台的程序,所以数据流向如下:

但是这样,需要将算法分别部署两次到 pc 端与 移动端,所以可以进一步将处理数据的算法部署到服务器,如下图所示:

无论是手机还是电脑请求处理数据时,都可以先由本地向服务器请求算法,调用服务器来处理图片或者视频。

本项目使用的是基于深度学习的人体识别算法,用到的设计模式是策略模式和模板方法模式。
策略模式:
本项目使用的算法是一个封装起来的可替换体。只需手动设置图片或者视频的输入,调用算法输出人体关键点坐标。
算法的改变不会影响到用户的使用,可以是对用户透明的无感替换。
模板方法模式:
在算法实现内部。可以通过使用继承自 nn.Module 类,来获取已经定义好的算法骨架,只需要实现自己的具体步骤,如定义自己的 forward()、backward() 等方法。
这也就是将算法的步骤延迟到了子类中去实现,而不改变算法结构。
作者:261