Skip to content

zjese/Sleeping-posture-detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sleeping-posture-detection

Innovation and Entrepreneurship Training Program for college students in 2019, ZengJin

项目情况

这是我们团队于2019年立项的大学生创新创业训练计划项目,2021年6月通过结项
关于2021年度大学生创新创业训练计划项目校内结题验收结果的公示

项目内容简介

对睡姿的长期自动监测是医疗、健康领域中的一项关键技术,在疾病的防治中,睡眠姿势信息也占有十分重要的地位。这套检测系统基于计算机视觉,运用python语言,基于tensorflow及keras框架,实现使用kinect摄像头获取照片,以及对左卧、右卧、正躺、左蜷缩、右蜷缩等共计15种睡眠姿势的分类与检测,模型的识别准确率达到90%以上。通过该项目的实操锻炼,能熟练掌握运用tensorflow及keras解决目标检测、分类、识别问题,并深入理解深度神经网络的构造及原理。

团队成员

曾进 老志辉 许绵渠

数据库说明

该数据库由普通数据集、深度图数据集、红外图像数据集以及骨骼图数据集共4个数据集组成,为了方便在研究中对比不同数据集的训练效果,要求四个数据集之间的区别仅为图像种类,而拍摄角度,受试者的动作等则应该保持一致。因此,我们在构建数据库时,对参与样本采集者某一时刻做出的同一个动作,我们的采集方案是:同时采集该动作的普通图、深度图、红外图以及骨骼图。比如,数据集中记录正躺姿势的文件夹,其中标号为1的图像,为方便表述,记为正躺1号,则4个数据集中的正躺1号均对应受试者同一时刻的同一动作,区别仅在于图像种类。

注意:由于数据库图像涉及到团队成员隐私及肖像权问题,此页面仅给出数据库概况,同时给出建立数据库的代码实现,若您有兴趣进行同类研究,可参考该过程建立自己的数据集。

样本类型

数据集大小

普通数据集

深度图数据集

红外图像数据集

骨骼图数据集

训练

在训练中,我们主要使用了VGG,ResNet,DenseNet,InceptionResNet四个系列的模型,用以对比网络深度分别为20,50,120,570时对模型训练的影响,为简化使用,在代码中,我们仅给出基于迁移学习的VGG16模型代码实现
我们推荐您使用api接口来 tensorflow.keras.applications 切换不同的模型

from tensorflow.keras.applications import VGG16

baseModel = VGG16(weights="imagenet", include_top=False,
                  input_tensor=Input(shape=(260, 260, 3)))

损失函数及优化器

loss

optimizer

categorical_crossentropy

Adam

SGD

Ftrl

Nadam


推荐使用该接口 tensorflow.keras.optimizers 切换不同的优化器

INIT_LR = 1e-3
EPOCHS = 25
opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS)

测试

在实验中,80%的数据用于训练,20%的数据用于测试,这里建议您使用sklearn的api接口train_test_split对数据集进行划分

from sklearn.model_selection import train_test_split

(trainX, testX, trainY, testY) = train_test_split(data, labels,
                                                  test_size=0.20, stratify=labels, random_state=42)

经过整理,给出两个主要实验结果:1.样本质量对模型的影响;2.网络深度对模型的影响。

样本质量对模型的影响

网络深度对模型的影响

分类特征可视化

选取红外图像样本,并将分类依据可视化标注于图上。