基于语义分割的睡眠被子覆盖率视觉识别方法

文档序号:34735733发布日期:2023-07-12 19:16阅读:55来源:国知局
基于语义分割的睡眠被子覆盖率视觉识别方法

本发明涉及机器视觉,具体为基于语义分割的睡眠被子覆盖率视觉识别方法。


背景技术:

1、在家庭生活中,为了方便大人对孩童的查看和照顾,通常会在孩童的卧室中安装摄像头,用于实时掌握孩童的情况。但现有的摄像头只能将实时画面、孩童是否在监控区域中、孩童是否移动、孩童是否发出响声等信息发送给监护人终端设备上,而无法对孩童在休息的过程中,对被子的覆盖情况进行识别,导致监护人员无法及时的掌握孩童盖被情况,容易导致孩童将被子踢开,监护人员无法及时的对孩童进行盖被,从而导致孩童出现感冒发烧等情况。


技术实现思路

1、(一)解决的技术问题

2、针对现有技术的不足,本发明提供了基于语义分割的睡眠被子覆盖率视觉识别方法,解决了上述背景技术中所存在的问题。

3、(二)技术方案

4、为实现上述目的,本发明提供如下技术方案:基于语义分割的睡眠被子覆盖率视觉识别方法,包括以下步骤:

5、s1、语义分割模型训练

6、s11、语义分割图片的制作:通过爬虫以及人工采集等手段,获取约10000张图片,使用labelme工具进行语义图片的制作;在语义分割图片中,人的rgb值为(128,0,0),覆盖物的rgb值为(0,128,0),背景的rgb值为(0,0,0);使用opencv将rgb值进行映射,将语义分割图片中的每一个rgb值分别进行处理,将背景rgb值保持不变,将人rgb值修改为(1,1,1),将覆盖物rgb值修改为(2,2,2),最终使用opencv进行通道分离,即处理得到灰度图;

7、s12、将原始图片以及语义分割图片分别放在image文件夹以及annotations文件夹中,需要注意的是,务必确保原始图片与语义分割图片的命名一一对应,使用glob函数获取所有原始图片以及语义分割图片的路径,分别存储在变量images以及anno中;

8、创建seed随机数生成器种子,通过random函数的permutation命令获取原始图片数量相同长度的随机数组,作为索引值,进而获得乱序后的变量images以及anno,并且保证了images与anno中的每一个值都是一一对应的;获得乱序的变量images以及anno之后,使用tensorflow中的from_tensor_slices对两者进行打包,获得数据集dataset。获取dataset中的20%作为测试数据集、80%作为训练数据集;

9、定义图片的读取函数,由于原始图片以及语义图片都是png格式,并且都是rgb图片,通道数都为3,因此可以共用解码器,定义函数read_png,主通过tensorflow中的decode_png函数将图像数据转换为像素点的数据用于训练;

10、对图像进行随机裁剪增强,由于要求确保语义图片和原图保持一致进行裁剪,因此先将语义图片和原图片进行绑定,再裁剪之后,使用numpy库高级切片的方式对其分割开,获得裁剪位置一致的训练图片以及语义图片;

11、对原始图片和语义图片都进行归一化,归一化加快了梯度下降求最优解的速度,也即加快训练网络的收敛性,由于原始图片的rgb值为0~256的数字,因此可以将其同时除以128再减1,将其映射到-1~1,语义分割单通道图片不需要进行归一化处理;

12、定义读取训练图片的函数,调用前面的读取函数获得原始图片以及语义图片,调用前面的随机裁剪图片得到裁剪的原始图片以及语义图片,再通过随机数的判断,将裁剪后的原始图片以及语义图片进行随机翻转,最后将其归一化处理;

13、定义读取测试图片的函数,对于测试集的图片,不需要进行随机裁剪以及随机翻转等图像增强操作,只需要将其放缩到256x256大小,并进行归一化处理即可;

14、定义完读取训练图片的函数以及读取测试图片的函数之后,使用map函数将其分别映射到训练数据集以及测试数据集中,完成数据集的制作;

15、s13、构建u-net模型:使用python面向对象的编程方式分别定义上采样类和下采样类进行组装,构建u-net网络;

16、s14、编译与训练:在定义模型之后,使用adam优化器进行优化,adam优化器结合了adagrad和rmsprop两种优化算法的优点,实现简单,计算高效,对内存需求少,在优化器中设置学习速率为0.0001,并在损失函数将优化器激活;训练5000步,记录每一步训练中训练集的损失值、准确率以及iou值,和测试集的损失值、准确率以及iou值,以便于神经网络模型的后续调整;

17、s15、模型的保存:训练完成的神经网络,包含结构和权重两个部分,当训练完成之后,所有的信息都保存在了model中,但此时只在内存里,通过save方法,将网络的框架以及权重全都保存到″model1.h5″文件中,在需要调用时,只需要使用load加载h5文件即可;

18、s2、分类模型的训练

19、s21、语义图片的分类:将单通道语义分割单通道图片作为训练集进行训练,具体按照覆盖面积将其分为5类,其中一种为未检测到人,另外四类分别为:

20、分别定义标签0~4,标签0表示未检测到人,标签1表示覆盖率约90%,标签2表示覆盖率约65%~85%,标签3表示覆盖率约30%~60%,标签4表示覆盖率低于30%,将使用labelme以及opencv处理得到单通道语义图片根据上面所述的分类标准,分为5类,在用于训练的文件夹″train″、用于测试的文件夹″test″里,分别创建″0″、″1″、″2″、″3″、″4″这五个文件夹,文件夹名则对应着每一个分类的标签;

21、s22、数据集的制作:首先使用python的glob库获取图片的地址,将图片的路径分别存在变量"test_image_path"以及"train_image_path″中,这两个变量分别代表着测试集所有图片的路径以及训练集所有的图片路径,通过random库的shuffle函数,打乱″test_image_path″以及″train_image_path″这两个变量里的数据;

22、使用split函数截取文件名字符串的数字即可作为标签,使用python语言创建两个函数用来解码以及处理图片,由于训练的图片都是单通道的灰度图,因此仅需要定义一个函数,即可在训练集和测试集通用;

23、在完成标签的制作以及图像读取函数之后,使用tensorflow的dataset创建用于训练模型的数据集,将train文件夹里的图片路径和对应的标签写入train_image_ds变量中,将test文件夹里的图片路径和对应的标签写入test_image_ds变量中,最后通过map函数映射到每一个路径中,获得真正用于训练的训练集data_train以及测试集data_test;

24、s23、多分类模型构建:使用预训练神经网络mobilenetv3-large进行分类的训练,mobilenet系列网络主要特点是效率高,可以在没有高端gpu的设备上运行,mobilenetv3-large在imagenet数据集分类上的准确度与mobilenetv2相比提高了3.2%,同时延迟降低了15%,因此用其进行图片分类的训练;使用mobilenetv3-large时不包含顶层的全链接网络,而是使用自定义层,设置mobilenetv3-large的权重值不变,权重值取公开数据集lmagenet训练下的权重,同时注意添加dropout层以抑制过拟合;

25、s24、编译与训练:使用adam优化器进行编译,adam优化器是深度学习中最流行的优化器之一,adam优化器结合了adagrad和rmsprop的优点,adam对每个参数使用相同的学习率,并随着学习的进行而独立地适应。此外,adam是基于动量的算法,利用了梯度的历史信息,并设置adam优化器的学习速率为0.0005;再使用sparse_categorical_crossentropy作为交叉熵损失函数;在设置好优化器、损失函数等之后,对该神经网络进行训练;

26、训练10000个epoch之后,设置mobilenetv3网络的前30层可以随着训练而修改,在此之前的网络权重仍然选择继承于imgnet数据集;

27、此外,还需要将adam优化器的学习速率降低10倍,即0.005/10=0.0005,设置完成后,在前面epoch为10000的基础上,再训练15000步;

28、s25、模型的保存:一个训练完成的神经网络,包含结构和权重两个部分,当训练完成之后,所有的信息都保存在了model中,但此时只在内存里,通过save方法,将网络的框架以及权重全都保存到″model2.h5″文件中,在需要调用时,只需要使用load加载h5文件即可。

29、优选的,所述s11中,因为目标是识别人与被子之间的覆盖关系,因此具体可将每一张图片分割为三个部分,分别为人、被子、其他(即背景),这样的分类方式既能有效实现被子覆盖情况的识别,也可以减少网络的计算量。

30、优选的,所述s12中,在对图像进行随机裁剪增强的时候,具体为,先将原始图片以及对应的语义图片使用tensorflow中的concat函数进行合并,再放缩为280×280尺寸,然后将合并并放缩的图片进行随机裁剪,得到的结果图片是256×256,最后使用高级切片的方式,获得分开的原图和标签。

31、优选的,所述s14中,在训练中引入iou指标用来评价模型的鲁棒性,要先将判断的结果进行转换,因为直接用模型预测的结果是一个长度为3(每一个标签对应一个数值)的张量,值为预测的可能性,因此需要将其转换为具体的标签值,因此使用tensorflow中的argmax获取预测中最大可能性数的索引,即预测的标签,用来与设定的标签进行比较。

32、(三)有益效果

33、本发明提供了基于语义分割的睡眠被子覆盖率视觉识别方法,具备以下有益效果:

34、本发明应用到摄像头等监控设备上,能够对人员的盖被情况进行准确的识别,从而能够使监护人员准确的了解被监控者的盖被情况,进而能够使监护人员在被监护者的被子离开身体一定程度后,能够及时的给监护人员预警,使监护人员及时的做出反应措施,从而能够及时的避免被监护者被细菌或者病毒入侵,出现感冒发烧等情况。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1