当前位置:首页 期刊杂志

基于VGG16Net的人体跌倒识别研究

时间:2024-07-28

罗海峰,佐 研

(西安电子科技大学微电子学院,陕西 西安 710068)

人口老龄化成为近些年热度颇高的词汇,当一个国家或地区60岁以上老年人口占人口总数的10%,或65岁以上老年人口占人口总数的7%,即意味着这个国家或地区的人口处于老龄化社会。从全球范围来看,越来越多的国家都已经步入了老龄化社会。在全球社区老年人中,30%的65岁以上老人和50%的85岁以上老人每年至少发生一次跌倒[1]。老年人跌倒问题也逐渐成为了亟待解决的老年人问题之一。

在上述大环境下,本文决定运用深度学习方法对于人体跌倒进行识别。通过使用红外摄像机拍摄热传感图像后,输入训练完成的搭建的VGG16卷积神经网络中,由其得出最终的结果并由此判定是否存在老年人的跌倒现象。

1 卷积神经网络结构

卷积神经网络是一种以图像识别为中心的多个领域都得到广泛应用的深度学习方法。该方法的由来,是在神经认知机的基础上,适用于不同的环境而得到的。卷积神经网络主要由三个部分组成,分别为输入层,输出层和隐藏层。其中隐藏层中还包含卷积层,池化层和全连接层,这些都是卷积神经网络的重要组成部分[2]。

1.1 输入层

卷积神经网络的输入层主要用于进行数据的接收,将接收到的数据直接传入到后续的各隐藏层之中,进行前向传播和误差反向传播的训练,直至网络达到设定的训练次数或者训练预测达到设定的阈值为止[3,4]。在输入层后,通常会用一个卷积层进行连接。

1.2 卷积层

卷积神经网络的卷积层通常处于输入层之后,主要用于进行输入数据的特征提取。对于传入卷积层的数据,会通过卷积操作将输入的数据中重要的特征部分进行提取,卷积操作后会输出一张输入数据的特征图,传入下一个隐藏层。由于卷积操作会使得输入数据的大小不断减小,可以通过使用填充数字0的方法,来保证原始输入数据的尺寸大小不变,保证原本存在的特征不会丢失。

1.3 激活函数

经过卷积层进行卷积运算后得到的特征图,还不能够直接作为下一层的输入数据直接传入到下一个隐藏层,还需要经过激活函数的计算之后,进行传输。卷积神经网络各隐藏层之间的参数传递其实是一个线性组合的过程,但是对于非线性问题来说,无法使用线性组合进行表示,所以需要一个能够将线性组合转化成非线性组合的工具,那就是激活函数。激活函数能够使得神经网络的表达能力更加强大,本次研究中用到的激活函数为ReLu激活函数,其函数表达式为:

在经过激活函数后,当前的特征图可以作为池化层的输入参数,传入到池化层中。

1.4 池化层

卷积神经网络的池化层通常用于解决特征图计算量过大,计算效率较低的情况。通过使用池化层,可以有效地加快计算速度和达到防止输出特征图数据过拟合的效果,在池化方法的选择上,存在两种常见的方法,一种是最大池化法,一种是平均池化法。在本次研究当中,对于网络中的所有池化层,选择使用最大池化法进行池化操作。

当前的特征图经过池化操作后,就可以作为输入参数传输到下一层全连接层当中。

1.5 全连接层

卷积神经网络的全连接层通常处于隐藏层的末端,把经过池化处理过后的特征图从二维数据转化成一维向量,目的在于将学到的“分布式特征表示”映射到样本的标记空间的作用。在实际的使用过程中,全连接层可由卷积操作实现。在全连接层的计算过程中,也会使用到激活函数计算输出值,在本次的研究中,所有的全连接层中使用的激活函数也都为ReLu激活函数。

1.6 输出层

卷积神经网络的输出层主要用于输出最终的结果。对于分类问题,首先计算出对于各个类别的预测概率,然后比较取出其中的最大值,找到其对应的类别编号或者名称,作为最终的输出数据。对于预测问题,则是直接输出预测的概率即可。

2 卷积神经网络的选择与搭建

2.1 VGG-Net模型

Google DeepMind公司研究员与牛津大学计算机视觉组在2014年共同研发出了一种全新的卷积神经网络--VGG-Net。在同年举办的ILSVRC比赛中,该网络结构模型在分类项目中取得了十分出色的成绩,由于其简洁性和实用性,使得其在当时迅速,飞快地成为了最受欢迎的卷积神经网络模型。VGG-Net卷积神经网络在近年来衍生出了A-E七种不同的层次结构,本次研究使用其中的D结构,也就是VGG-16Net结构,该结构中包含了13个卷积层,5个池化层和3个全连接层。针对所有的卷积层,使用相同的5*5大小的卷积核,针对所有的池化层,使用相同的3*3大小的池化核。VGG-Net结构如图1所示。

2.2 VGG-Net在跌倒识别的优势

在针对人体跌倒识别的问题上,VGG-Net有着一些相较于其他神经网络的优势,主要包括以下几点:

1) 卷积核,池化核大小固定。网络中所有的卷积核大小固定为3*3,所有的池化核大小固定为5*5。这样在进行卷积和池化操作的时候,从数据中提取到的特征更加明显,同时在层与层的连接时,信息的丢失会更少,更加方便后续对于重要特征的提取和处理。

2) 特征提取更全面。VGG-Net网络模型中包含了13个卷积层。卷积层数目越多,对于特征的提取更加的全面。由于需要对于人体跌倒的姿态进行判定,人体跌倒时的特征较多,需要在提取时更加的全面,细致,才有可能得到一个更加准确的判定。VGG-Net符合条件。

3) 网络训练误差收敛速度较快。VGG-Net网络在训练时收敛速度相对较快,能够较快地得到预期的结果。具有这一特点的原因有两个,一个是网络中每一个卷积层和池化层中的卷积核大小与池化核大小固定,另一个就是对于各个隐藏层的参数初始化方法使用专门针对ReLU激活函数的Kaiming正态初始化方法。

2.3 VGG-Net的搭建

本次研究基于Pytorch深度学习框架进行网络的搭建,利用模块化的设计思想,构建一个类,来对于整个的网络进行结构上的封装。这样搭建的好处是可以隐藏实现的内部细节,提高代码的安全性,增强代码的复用效率,并且对于一些方法,通过在内部集成,可以方便之后对于其中方法的调用,提升代码的简洁性。

在网络搭建完成后,将数据集传入网络中进行训练,经过一段时间后即可得到对于人体跌倒姿态的分类识别结果。

3 实验结果与分析

本次研究使用红外图像人体姿态数据集,所有数据图片通过使用红外图像摄像机进行拍摄。考虑到老年人跌倒的情况大多数出现于夜晚,所以使用能在夜晚对于人体姿态图像进行较好捕捉的红外摄像机进行图片的获取。该数据集总共具有2 384张红外人体姿态图像,其中的人体姿态包括人体的行走姿态,人体的站立形态,人体的坐立形态,人体的跌倒形态和人体的挥手形态,共五种形态。训练数据有1 590张,验证数据有395张,测试数据有399张。

在进行网络训练前,先对图片进行预处理操作。首先将图片大小变换到相同尺寸,之后对于每张输入网络的图片进行标准归一化处理。同时考虑到数据集中的数据图片数目较少,考虑在进行图像预处理时对图片进行随机裁剪,随机旋转角度等操作,增加训练图片的数目,将数据集从原本的2 384张图片增加到4 357张图片,使网络的训练达到较好的训练效果。对于训练数据和测试数据的分类判别准确率曲线如下图2所示。

在经过五十轮的训练之后,最终网络对于训练集中的数据分类准确率达到了92%左右,对于测试集中的数据分类准确率达到了90%左右,相较于训练集的分类准确率略低。说明使用VGG-16Net网络能够对于人体跌倒的红外图像进行一个较好的识别,能够较为准确的识别出是否有跌倒情况的发生。

4 结束语

针对人体跌倒现象的图像识别问题,本文使用了深度学习方法进行解决。针对数据集数目较少的问题,在预处理部分使用随机旋转,随机裁剪等预处理方法增加数据集图片数目,通过搭建卷积神经网络VGG16-Net,对于数据集图片进行识别,最终在训练数据集上得到了92%左右的识别准确率,在测试数据集上得到了90%左右的识别训练准确率,能够较为出色地对于人体跌倒现象进行识别。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!