2021-06-03

最近做了一个跌倒检测demo,使用的是lightweight_openpose+fullconnection,这篇文章是以应用为主,已经在GitHub上开源啦,
源码openpose_fall_detect


为什么使用lightweight_openpose,在此之前跑了很多模型哈,包括C3D、R3D、R(2+1)D、yolo、alphapose、STGCN、openpose等,以上模型有时间了再和大家分享,综合来说,lightweight_openpose速度快(比以上提到的模型都快),精度也很不错,接下来谈一谈这个项目的模型及怎么实现的。


lightweight_openpose VS openpose
这个轻量级的openpose相比openpose有哪些改进呢,先看看openpose的原始结构在这里插入图片描述
在这里插入图片描述
接下来谈谈对openpose的改进
改进一:backbone:VGG19 to mobilev1
改进二:把生成keypoints和PAFs的两个网络合并成一个
在这里插入图片描述
改进三:把7x7的卷积换成3x3和1x1的卷积块,为保持视野,使用dil=2的空洞卷积
在这里插入图片描述


经过以上改进,速度相比原openpose快了很多,精度和原openpose相差很小

大致知道了如何改进的openpose,理论不多说,接下来谈谈怎么利用lightweight_openpose+fullconnection实现跌倒识别

一、
lightweight_openpose用来识别骨骼
二、
把骨骼图片传入全连接层,全连接层对骨骼进行判断,输出骨骼状态(fall or normal),发现精度还可以进一步提高,就是使用宽高比进行辅助判断,跑出来的效果确实好了很多。

关于lightweight_openpose可以参考其论文Lightweight OpenPose
及其github相关代码

关于全连接层的训练,很简单,首先生成训练集和测试集,直接利用lightweight_openpose生成后保存就好,我已经对源码做了部分修改,在pose.py文件中添加了保存功能,在demo文件调用时可以设置is_save = True
在这里插入图片描述

       # 保存骨骼图片
        if is_save:
            t = time.time()
            t = int(round(t * 1000))
            cv2.imwrite(f'C:/Users/lieweiai/Desktop/human_pose/{t}.jpg',I)
        # **************************************

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

骨骼生成完后,创建test与train文件夹作为训练集与测试集,在test和train文件夹下创建fall与normal文件夹,把相应的骨骼图片放进去就好,如下图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
之后训练就可以啦,几个小时就可以训练好
以下附几张效果图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为了方便操作,项目中添加了一个简单的GUI操作界面,入口文件为fall_down_detector.py
权重文件下载地址:
链接:https://pan.baidu.com/s/1QB8j7bXsmpEpfc4d3HkUIg
提取码:5d6o

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值