Python 也能实现图像姿态识别溺水行为了!这可是哥大工程啊!

本文介绍如何使用Python进行溺水行为的图像姿态识别,结合姿态识别和图像分类技术,通过百度人体分析接口进行姿态标注,并用CNN网络进行图像分类。详细描述了从素材准备、姿态配置、姿态识别调用到CNN模型的建立和调用的全过程。
摘要由CSDN通过智能技术生成

众所周知随着人工智能智能的发展,人工智能的落地项目也在变得越来越多,尤其是计算机视觉方面。

所以今天我们也是做一个计算机视觉方面的训练,用python来判断用户溺水行为,结合姿态识别和图像识别得到结果。其中包括姿态识别和图像分类。

首先图像分类是根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它是利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读

人体姿态是被主要分为基于计算机视角的识别和基于运动捕获技术的识别。基于计算机视觉的识别主要通过各种特征信息来对人体姿态动作进行识别, 比如视频图像序列、人体轮廓、多视角等。

这里整体程序的流程如下:

  1. 百度姿态识别图片并标注
  2. CNN网络实现图像分类
  3. 根据分类结果可视化输出结果

最终输出的程序效果如下图:

 

实验前的准备

 

首先我们使用的python版本是3.6.5所用到的模块如下:

OpenCV:用来调用姿态识别接口绘制姿态识别结果

Baidu-aip:用来加载人体分析模块实现人体姿态识别

configparser :配置文件模块 读写配置文件

keras:用来训练和调用神经网络模型

 

 

素材准备

 

首先我们准备不同的图片放到一个特定文件夹下。图片分为三个类别,一个是溺水图片文件夹,一个是正常游泳图片文件夹,另一个是疑似溺水无法判定的图片文件夹。在这里我们把它放到data文件夹下,

其中疑似图片文件夹,如下图可见:

 

人体姿态识别搭建

 

1、姿态配置文件设定:

在这里为了足够的精度和方便调用,我们使用百度提供的人体分析接口。按照官方的规定设定了配置文件。主要就是设定人体各个肢体零件连接配置。

其对应的代码如下:

def draw_line(self, img):
        # nose ---> neck
        cv2.line(img, (int(self.dic['nose']['x']), int(self.dic['nose']['y'])),
                 (int(self.dic['neck']['x']), int(self.dic['neck']['y'])), (0, 255, 0), 2)
        # neck --> left_shoulder
        cv2.line(img, (int(self.dic['neck']['x']), int(self.dic['neck']['y'])),
                 (int(self.dic['left_shoulder']['x']), int(self.dic['left_shoulder']['y'])), (0, 255, 0), 2)
        # neck --> right_shoulder
        cv2.line(img, (int(self.dic['neck']['x']), int(self.dic['neck']['y'])),
                 (int(self.dic['right_shoulder']['x']), int(self.dic['right_shoulder']['y'])), (0, 255, 0), 2)
        # left_shoulder --> left_elbow
        cv2.line(img, (int(self.dic['left_shoulder']['x']), int(self.dic['left_shoulder']['y'])),
                 (int(self.dic['left_elbow']['x']), int(self.dic['left_elbow']['y'])), (0, 255, 0), 2)
        # lef
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值