https://edu.51cto.com/course/18817.html

http://www.xjishu.com/zhuanli/55/201910751564.html

背景技术:

人的脸部皮肤状况因人而异,常见的问题有毛孔粗大、皱纹多、存在大量红血丝、皮肤出油过多等。随着物质水平提高,在生活中人们愈发关心起自己的皮肤肤质问题。而现有的技术,想要了解自身肤质情况,一般需要去专业美容医院寻求医生进行诊断。但是通过这种方式存在一定问题,一是不够便捷,二是仅凭从业人员的经验判断也会存在一定的误差。

人们对自身肤质的关心,更是导致了美容、化妆品行业的飞速发展。近年来,很多美容院也在不断应用相关的计算机方法以及专业仪器,而问题在于美容院质量参差不齐,应用的方法和仪器并非全都准确、有效。尤其事方法上面,很多是采用传统图像处理方法,即使能够达到皮肤检测的目的,所需要的计算时间是相对较长的。与此同时,传统方法对皮肤检测的设备要求较高,带来了相应的成本问题。

随着近年来深度学习技术飞速发展,以及计算机视觉技术日趋成熟,将二者结合并应用在生活中的各个方面,极大提高了相应领域的生产力。本发明受相关科技发展的启发,提出不同于传统图像处理的深度学习语义分割领域的方法,用来提高皮肤检测的准确度和速度。

技术实现要素:

为了克服现有的皮肤检测的方法落后、准确度较低、耗时过长以及对设备要求过高等缺陷,本发明提供一种基于深度学习中deeplabv3+的深度神经网络结构,结合图像处理的方法,能够更好地进行皮肤检测。

本发明实现上述发明目的所采用的技术方案如下:

一种基于深度学习中deeplabv3+的深度神经网络的皮肤检测方法,包括以下步骤:

s1:利用专业的皮肤采集装置采集日光灯下人脸的全脸图片,然后返回图片数据到计算机;

s2:将获得的人脸图像用labelme软件进行标注,主要针对的是皱纹、毛孔以及浅层色素,最终生成json格式的文件;

s3:对标注好的json文件用python程序进行数据预处理,整理成可以输入进deeplabv3+深度神经网络的进行计算的格式;

s4:选取xception-65作为deeplabv3+深度神经网络中的主干网络(backbone),用于对输入图片的语义分割,加入编码-解码结构,采用双线性差值上采样,将图像特征通过卷积等操作后进行预测;

s5:自定义损失函数并进行模型的训练,训练后输出的模型存储到云端服务器中,供皮肤检测装置调用,输出四种模型,包括分别针对皱纹、毛孔、浅层色素三种皮肤问题的单项检测的模型,还有一种是前面三者综合检测的模型;

s6:前端设备发送皮肤检测请求,从云端服务器调用相应模型进行图像处理,可视化后返回前端设备进行显示。

进一步,所述步骤s1中,利用专业的皮肤采集设备,采集人脸在日光灯照射下的全脸图片,图片为png格式,选用的宽度为1024像素,高度为1280像素,这是由于人脸的皮肤问题属于比较精细的图像处理工作。如一些类似于毛孔这种问题,图像像素过低将会给标注标签工作带来麻烦,从来影响最终的训练精确度。

再进一步,所述步骤s2中,选用labelme这款标注软件,labelme的优势在于可以相对精细地圈出图像的标签,并且支持同一张照片标注多个标签,将皱纹、毛孔、浅层色素的标签分别命名为‘wrinkle’、‘pore’、‘sspigment’,将标注好的json文件输出到计算机。

再进一步,所述步骤s3中,选择编写python作为编程语言,用来处理s2步骤中输入到计算机的json文件,处理步骤为:

s3.1:建立四个文件夹,分别命名为‘wrinkle’、‘pore’、‘sspigment’、‘all’,其中名为‘wrinkle’的文件夹用来存放只含有‘wrinkle’标签的文件,即此文件夹的图像是用来针对性训练皱纹检测的数据。接着,名为‘pore’文件夹用来存放只含有‘pore’标签的文件,即此文件夹的图像是用来针对性训练毛孔检测的数据。相应的,名为‘sspigment’文件夹用来存放只含有‘sspigment’标签的文件,即此文件夹的图像是用来针对性训练浅层色素检测的数据。最后,名为‘all’文件夹用来存放含有‘wrinkle’、‘pore’、‘sspigment’三种标签的文件,即此文件夹的图像是用来综合性训练包含皱纹、毛孔、浅层色素检测的数据;

s3.2:借助python的labelme模块包将json文件处理,解析出包括原图和标签图。在解析过程中,将同时存在三种标签的json文件,分别‘wrinkle’、‘pore’、‘sspigment’标签独立开来,各自存入s3.1相对应的文件夹中,然后将三种标签共同存在的版本解析到‘all’文件夹中;

s3.3:将解析后的原图,用python的pil模块把原图的png格式装换成jpg格式,并把像素改成宽度768像素,高度960像素,在不牺牲细节的情况下,适当缩小原图大小,加快后期深度神经网络的训练速度。

s3.4:将图片以“皮肤问题种类+图片编号”形式命名,然后将其中百分之九十的图片作为训练集,剩下百分之十作为验证集。将训练集和验证集的图片名称分别存入名为“train.txt”、“eval.txt”的记事本文件中。

再进一步,所述步骤s4中,选取xception-65作为deeplabv3+深度神经网络中的主干网络(backbone),deeplabv3+深度神经网络分为编码和解码两个部分,对编码部分进行改进,选取不同的空洞卷积率,对deeplabv3+深度神经网络主要流程为:编码部分,输入图片在深度神经网络作用下进行不同尺度的卷积、空洞卷积以及池化,最终将不同的输出结果进行统一卷积后得到编码后的特征图。解码部分,对输入图片进行卷积后再与编码部分得到的输出上采样后结合,经过卷积和上采样得到预测结果。

更进一步,所述编码步骤中引用了空洞卷积,空洞卷积不同于普通卷积,更具体的空洞卷积的公式如下:

其中y为输出的图片特征,i为图片中每个像素的位置,ω代表空洞卷积的卷积核,k为卷积核个数,x是深度学习中的featuremap,即图片的特征图像,r是空洞卷积率,即rate,决定了空洞卷积对输入的感受野大小。更具体地讲,r-1的数值是在两个卷积核的值之间加入0的个数,在特殊情况rate=1的情况下,空洞卷积是和普通卷积具有相同的特征。k个图片的特征图像就是用k个不同的卷积核对图像处理的特征,可以保留多个角度的图像特征。

更进一步,分别选用rate=6、rate=12、rate=18的空洞卷积核进行卷积,此效果可以获得输入图片不同角度的感受野,能更好地保留图像的上下文信息。

再进一步,所述步骤s5中,改进交叉熵损失函数将其作为本训练的损失函数,损失函数的公式为:

其中,m表示每一个样本点的下标,l表示本发明的损失函数。其中wm是本发明在交叉熵损失函数上自定义的权重函数,pm表示真实数据的已有的标签数据,表示预测出的标签数据;当前真实数据标注为正样本时,pm=1,当前真实数据标注为正样本时,pm=0。

更进一步,公式(2)中的wm的定义的公式为:

其中,定义c1=18、定义c2=20、定义c3=10、定义c4=1,这样定义的好处是让训练过程总体上对皱纹、毛孔、浅层色素的预测更加敏感,而对图片背景的敏感度相对较低。具体原因是全脸照片中,有大部分图片区域是没有标注标签的无关数据,对有标注的部分针对性加强损失函数的权重会让深度学习网络更有效地进行训练。

更进一步,将步骤s3中处理好的四个文件夹的数据分别训练,得到四种模型,把三种皮肤问题分开训练的优势在于,相对于同时训练三种皮肤问题同时存在的数据,单独训练一种皮肤问题的数据,会大大加快训练速度,节省成本,并且能一定程度上增加准确度。

再进一步,在所述步骤s6中,将训练好的模型存入云端服务器,在皮肤检测装置拍摄人脸照片后,会相应地向服务器发送检测请求,根据检测装置的不同请求,云端服务器会调用相应的训练好的模型对输入的数据进行处理,并返回可视化图片;具体的,可视化图片是在人脸的原图上打上模型预测的标签,使用者可以直观根据打上标签看出自己皮肤出现问题的区域。

与现有的技术相比,本发明的有益效果是:使用深度学习模型进行人脸皮肤检测,相比传统图像处理方法,预测结果更为精确,耗时短。对皮肤检测设备的要求降低,降低了检测成本。

附图说明

图1为本发明中皮肤检测和前端可视化的流程图;

图2为本发明中基于deeplabv3+的深度神经网络处理图片的结构图。

具体实施方式

下面结合说明书附图对本发明的具体实施方式作进一步详细的描述。

参考图1和图2,一种基于深度学习中deeplabv3+的深度神经网络的皮肤检测方法,本发明使用皮肤检测设备拍摄人脸在日光灯下的全脸照片作为训练数据集;所述方法包括数据采集,模型的超参数设置与训练,模型输出与调用。

本发明包括以下步骤:

s1:利用专业的皮肤采集装置采集日光灯下人脸的全脸图片,然后返回图片数据到计算机;

s2:将获得的人脸图像用labelme软件进行标注,主要针对的是皱纹、毛孔以及浅层色素,最终生成json文件;

s3:对标注好的json文件用python程序进行数据预处理,整理成可以输入进deeplabv3+深度神经网络的进行计算的格式;

s4:选取xception-65作为deeplabv3+深度神经网络中的主干网络(backbone),用于对输入图片的语义分割。加入编码-解码结构,采用双线性差值上采样,将图像特征通过卷积等操作后进行预测;

s5:自定义损失函数并进行模型的训练,训练后输出的模型存储到云端服务器中,供皮肤检测装置调用。输出四种模型,包括分别针对皱纹、毛孔、浅层色素三种皮肤问题的单项检测的模型,还有一种是前面三者综合检测的模型。

s6:前端设备发送皮肤检测请求,从云端服务器调用相应模型进行图像处理,可视化后返回前端设备进行显示。

进一步,所述步骤s1中,对应图1的采集人脸图片的流程,利用专业的皮肤采集设备,采集人脸在日光灯照射下的全脸图片,采集到的图片为png格式,选用的宽度为1024像素,高度为1280像素,这是由于人脸的皮肤问题属于比较精细的图像处理工作,如一些类似于毛孔这种问题在标注标签时如果图像像素过低,将带来比较差的训练效果。

再进一步,所述步骤s2中,对应图1中的选取可训练的图片用labelme软件进行标注部分。对所述步骤s1中采集到的图片进行人工筛选,去除不适合作为训练的图片,例如图片噪声过多、人为误操作导致采集图像不完整等;选用labelme这款标注软件,labelme的优势在于可以相对精细地圈出图像的标签,并且支持同一张照片标注多个标签。本发明将皱纹、毛孔、浅层色素的标签分别命名为‘wrinkle’、‘pore’、‘sspigment’,将标注好的json文件输出到计算机。

再进一步,所述步骤s3中,选择编写python作为编程语言,用来处理s2步骤中输入到计算机的json文件,处理步骤为:

s3.1:建立四个文件夹,分别命名为‘wrinkle’、‘pore’、‘sspigment’、‘all’,其中名为‘wrinkle’的文件夹用来存放只含有‘wrinkle’标签的文件,即此文件夹的图像是用来针对性训练皱纹检测的数据;接着,名为‘pore’文件夹用来存放只含有‘pore’标签的文件,即此文件夹的图像是用来针对性训练毛孔检测的数据,相应的,名为‘sspigment’文件夹用来存放只含有‘sspigment’标签的文件,即此文件夹的图像是用来针对性训练浅层色素检测的数据;最后,名为‘all’文件夹用来存放含有‘wrinkle’、‘pore’、‘sspigment’三种标签的文件,即此文件夹的图像是用来综合性训练包含皱纹、毛孔、浅层色素检测的数据;

s3.2:借助python的labelme模块包将json文件处理,解析出包括原图和标签图。在解析过程中,将同时存在三种标签的json文件,分别‘wrinkle’、‘pore’、‘sspigment’标签独立开来,各自存入s3.1相对应的文件夹中,然后将三种标签共同存在的图片数据局解析到‘all’文件夹中;

s3.3:将解析后的原图,用python的pil模块把原图的png格式装换成jpg格式,并把像素改成宽度768像素,高度960像素,在不牺牲细节的情况下,适当缩小原图大小,加快后期深度神经网络的训练速度。

s3.4:将图片以“皮肤问题种类+图片编号”形式命名,然后将其中百分之九十的图片作为训练集,剩下百分之十作为验证集,具体的,本发明是编写程序随机地把训练数据一批作为训练集,一批作为验证集,以训练数据的随机性,提高模型的泛化能力,随机将训练集和验证集的图片名称分别存入名为“train.txt”、“eval.txt”的记事本文件中。

再进一步,所述步骤s4中,选取xception-65作为deeplabv3+深度神经网络中的主干网络(backbone),具体地,图2为本发明对deeplabv3+改进后的网络结构图的编码和解码部分,编码部分如图2的编码结构所示,输入图片在深度神经网络作用下进行不同尺度的卷积、空洞卷积以及池化,最终将不同的输出结果进行统一卷积后得到编码后的特征图。解码部分如图2的解码结构所示,对输入图片进行卷积后再与编码部分得到的输出上采样后结合,经过卷积和上采样得到预测结果。

更进一步,所述编码步骤中引用了空洞卷积,空洞卷积不同于普通卷积,更具体的空洞卷积的公式如下:

其中y为输出的图片特征,i为图片中每个像素的位置,ω代表空洞卷积的卷积核,k为卷积核个数,x是深度学习中的featuremap,即图片的特征图像,r是空洞卷积率,即rate,决定了空洞卷积对输入的感受野大小。更具体地讲,r-1的数值是在两个卷积核的值之间加入0的个数,在特殊情况rate=1的情况下,空洞卷积是和普通卷积具有相同的特征。k个图片的特征图像就是用k个不同的卷积核对图像处理的特征,可以保留多个角度的图像特征。

更进一步,分别选用rate=6、rate=12、rate=18的空洞卷积核进行卷积,此效果可以获得输入图片不同角度的感受野,能更好地保留图像的上下文信息。

再进一步,所述步骤s5中,改进交叉熵损失函数将其作为本训练的损失函数,具体的,采用的损失函数的公式为:

其中,m表示每一个样本点的下标,l表示本发明的损失函数。其中wm是本发明在交叉熵损失函数上自定义的权重函数,pm表示真实数据的已有的标签数据,表示预测出的标签数据。更进一步地,当前真实数据标注为正样本时,pm=1,当前真实数据标注为正样本时,pm=0。

更进一步,公式(2)中的wm的定义的公式为:

其中,经过试验,定义c1=18、定义c2=20、定义c3=10、定义c4=1,这样定义的好处是让训练过程总体上对皱纹、毛孔、浅层色素的预测更加敏感,而对图片背景的敏感度相对较低。具体原因是全脸照片中,有大部分图片区域是没有标注标签的无关数据,对有标注的部分针对性加强损失函数的权重会让深度学习网络更有效地进行训练。

更进一步,将步骤s3中处理好的四个文件夹的数据分别训练,得到四种模型。本发明把三种皮肤问题分开训练的优势在于,相对于同时训练三种皮肤问题同时存在的数据,单独训练一种皮肤问题的数据,会大大加快训练速度,节省成本,并且能一定程度上增加准确度。

再进一步,在所述步骤s6中,将训练好的模型存入云端服务器,在皮肤检测装置拍摄人脸照片后,会相应地向服务器发送检测请求,根据检测装置的不同请求,云端服务器会调用相应的训练好的模型对输入的数据进行处理,并返回可视化图片。具体的,可视化图片是在人脸的原图上打上模型预测的标签,使用者可以直观根据打上标签看出自己皮肤出现问题的区域。

本实施例使用深度学习模型进行人脸皮肤检测,相比传统图像处理方法,预测结果更为精确,耗时短。对皮肤检测设备的要求降低,缩减了检测成本。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

技术特征:

1.一种基于深度学习中deeplabv3+的深度神经网络的皮肤检测方法,其特征在于,所述方法包括以下步骤:

s1:利用专业的皮肤采集装置采集日光灯下人脸的全脸图片,然后返回图片数据到计算机;

s2:将获得的人脸图像用labelme软件进行标注,主要针对的是皱纹、毛孔以及浅层色素,最终生成json格式的文件;

s3:对标注好的json文件用python程序进行数据预处理,整理成可以输入进deeplabv3+深度神经网络的进行计算的格式;

s4:选取xception-65作为deeplabv3+深度神经网络中的主干网络,用于对输入图片的语义分割,加入编码-解码结构,采用双线性差值上采样,将图像特征通过卷积等操作后进行预测;

s5:自定义损失函数并进行模型的训练,训练后输出的模型存储到云端服务器中,供皮肤检测装置调用,输出四种模型,包括分别针对皱纹、毛孔、浅层色素三种皮肤问题的单项检测的模型,还有一种是前面三者综合检测的模型;

s6:前端设备发送皮肤检测请求,从云端服务器调用相应模型进行图像处理,可视化后返回前端设备进行显示。

2.如权利要求1所述的基于深度学习中deeplabv3+的深度神经网络的皮肤检测方法,其特征在于,所述步骤s1中,采集人脸在日光灯照射下的全脸图片,图片为png格式,选用的宽度为1024像素,高度为1280像素。

3.如权利要求1或2所述的一种基于深度学习中deeplabv3+的深度神经网络的皮肤检测方法,其特征在于,所述步骤s2中,选用labelme这

技术总结
一种基于DeepLabv3+深度神经网络皮肤检测方法,包括以下步骤:S1利用专业的皮肤采集装置采集日光灯下人脸的全脸图片;S2将获得的人脸图像用labelme软件进行标注,针对皱纹、毛孔以及浅层色素,最终生成json格式的文件;S3用python程序进行数据预处理,整理成可以输入进DeepLabv3+深度神经网络的进行计算的格式;S4选取Xception‑65作为DeepLabv3+深度神经网络中的主干网络;S5自定义损失函数并进行模型的训练;6)前端设备发送皮肤检测请求,从云端服务器调用相应模型进行图像处理,可视化后返回前端设备进行显示。本发明预测结果更为精确,耗时短,降低了检测成本。

图像语义分割在皮肤检测,缺陷检测上的应用。相关推荐

  1. 图像语义分割和目标检测(上)

    语义分割是对图像在像素级别上进行分类的方法,在一张图像中,属于同一类的像素点都要被预测为相同的类,因此语义分割是从像素级别来理解图像.但是需要正确区分语义分割和实例分割,虽然他们在名称上很相似,但是他 ...

  2. 深度学习遥感图像语义分割目标检测

    深度学习遥感图像语义分割&目标检测 代码见github: WangZhenqing-RS/2021Tianchi_RSgithub.com 图标 赛题描述 本赛题基于不同地形地貌的高分辨率遥感 ...

  3. 准确度判断 语义分割_Mask R-CNN(目标检测语义分割)测试

    Mask R-CNN(目标检测语义分割)测试 Mask R-CNN(目标检测,语义分割)测试 Kaiming He的大作Mask R-CNN(https://arxiv.org/pdf/1703.06 ...

  4. 17篇点云处理综述-点云语义分割、点云物体检测、自动驾驶中的点云处理……

    三维点云是最重要的三维数据表达方式之一. 从技术角度看,在三维重建.SLAM.机器人感知等多个领域,三维点云都是最简单最普遍的表达方式,因为三维点云直接提供了三维空间数据,而图像则需要通过透视几何来反 ...

  5. 十分钟看懂图像语义分割技术

    转载于:十分钟看懂图像语义分割技术 大多数人接触"语义"都是在和文字相关的领域,或语音识别,期望机器能够识别你发出去的消息或简短的语音,然后给予你适当的反馈和回复.嗯,看到这里你应 ...

  6. 十分钟看懂图像语义分割技术(转载)

    https://www.leiphone.com/news/201705/YbRHBVIjhqVBP0X5.html 大多数人接触 "语义" 都是在和文字相关的领域,或语音识别,期 ...

  7. 汇总 | 深度学习中图像语义分割基准数据集详解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 汇总图像语义分割那些质量最好的数据集与常用benchmark数据集 ...

  8. 笔记:基于DCNN的图像语义分割综述

    写在前面:一篇魏云超博士的综述论文,完整题目为<基于DCNN的图像语义分割综述>,在这里选择性摘抄和理解,以加深自己印象,同时达到对近年来图像语义分割历史学习和了解的目的,博古才能通今!感 ...

  9. 基于深度学习的图像语义分割技术概述之背景与深度网络架构

    本文为论文阅读笔记,不当之处,敬请指正.  A Review on Deep Learning Techniques Applied to Semantic Segmentation: 原文链接 摘要 ...

最新文章

  1. mysql里条件语句和循环语句_MySQL与Oracle 差异比较之四条件循环语句
  2. HDu 3449 (有依赖的01背包) Consumer
  3. python扫描端口脚本_Python端口扫描简单程序
  4. Acwing第 31 场周赛【完结】
  5. was、ihs、 mq、 db2的版本查询
  6. macos关闭软件更新小红点_MacOS和Windows哪个更适合你?
  7. TDengine在数控机床监控中的应用
  8. 海报psd素材模板|周年海报,仪式感值得珍藏
  9. 为什么电脑插上网线半天才有网,是路由器的的问题吗?
  10. 数据结构笔记(二十九)--最小生成树(prim算法思想)
  11. Atitit.木马 病毒 免杀 技术 360免杀 杀毒软件免杀 原理与原则 attilax 总结
  12. Java | ProGuard——java代码混淆利器
  13. 传真系统的跨平台兼容和更换升级
  14. 2011年11月编程语言排行榜:Objective-C有望成为2011年年度编程语言。
  15. 影子口令(影子密码)
  16. uniApp APP端 支付/分享 微信开放平台的Android 包名签名的坑
  17. NC 工具的使用教程
  18. Nginx 代理配置
  19. 激动人心,2022开放原子全球开源峰会报名火热开启
  20. Mac还是Win?告诉你哪些人适合买Mac!

热门文章

  1. 为什么要选三翼鸟?因为它能一站式定制智慧家
  2. Java8本地缓存Caffeine
  3. C语言struct和union
  4. HttpClient4.x中GET方式发送请求参数中文乱码处理
  5. sortable.js yyds
  6. python奥运五环旗_奥运五环旗 - B班段佩辰
  7. 小程序实现天/时/分/秒倒计时效果
  8. 【python数据分析】正态分布、正态性检验与相关性分析
  9. 37岁前女雇员揭露Facebook滔天罪行:用放大仇恨言论算法赚钱
  10. unity Shader 入门精要 EX