一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种用于同时检测家具板材边界、圆孔、槽的方法及系统与流程

2022-02-19 23:58:09 来源:中国专利 TAG:


1.本发明涉及计算机视觉目标检测领域,尤其涉及一种用于同时检测家具板材边界、圆孔、槽的方法及系统。


背景技术:

2.对于家具板材来说,生产出来的不同花色的板材表面的纹理结构往往比较复杂,且对于板材中圆孔和槽来说,其轮廓边缘往往质量参差不齐,轮廓可能会有一定的破损,模糊及瑕疵,同时,在采样技术条件或采样环境不稳定不够好的情况下,得到的图像成像效果偏差,得到的边界也往往不够明显。基于此,目前使用的方法是针对边界检测,圆孔检测,槽检测分别设置不同的方法,如对于圆孔检测来说,采用霍夫圆或最小二乘法拟合圆的方法去检测;对于边界和槽来说,采用边缘投影的方法去检测。但是此类方法无法同时适应不同花色种类的样本,而且受到纹理,破损,及槽深,成像的影响从而难以精确识别到边界,圆孔,槽的轮廓,进而无法准确的识别到边界,圆孔,槽。


技术实现要素:

3.为了解决上述技术问题,本发明的目的是提供一种用于同时检测家具板材边界、圆孔、槽的方法及系统,兼顾板材的多种花色并在受到纹理、破损以及槽深的影响下同时完成样本的分类,及其边界,圆孔,槽轮廓的提取。
4.本发明所采用的第一技术方案是:一种用于同时检测家具板材边界、圆孔、槽的方法,包括以下步骤:
5.构建边界、圆孔、槽的数据集,并对数据集进行预处理,得到修改后的数据集;
6.基于修改后的数据集对预构建的改进vgg19网络模型进行训练,得到检测模型;
7.将待测样本输入到检测模型,得到检测结果;
8.将检测结果标注在原图上。
9.进一步,所述构建边界、圆孔、槽的数据集,并对数据集进行预处理,得到修改后的数据集这一步骤,其具体包括:
10.分别获取边界、圆孔、槽的图片并制作其轮廓标签,得到对应的三种数据集,每张图片仅包含一个目标,三种类型的图片的数目相等;
11.对三种数据集进行标签的加工,得到对应三种加工后的数据集;
12.将三种加工后的数据集进行数据增强,得到对应三种扩充后的数据集;
13.将三种扩充后的数据集进行数据集整合,得到修改后的数据集。
14.进一步,所述对三种数据集进行标签的加工,得到对应三种加工后的数据集这一步骤,其具体包括:
15.以图片左上角为原点,向下为y轴,向右为x轴做直角坐标系;
16.针对边界数据集,基于两条边界的边界起点和边界终点,根据欧几里得距离公式计算最近的两个点,结合四个点的相对位置得到边界属于的方向;
17.针对圆孔数据集,从原始标签中直接提取圆心坐标,通过圆上任意一点坐标和圆心坐标求解得到半径;
18.针对槽数据集,从原始标签中分别提取两条槽边的起点和终点的坐标,获取到两对起点和终点的坐标,对于每对起点和终点的坐标,将这两个点的横坐标相加后除2,得到关键点信息。
19.进一步,所述数据增强的方式包括随机水平翻转,随机垂直翻转及双边滤波。
20.进一步,对vgg网络的调整:根据数据集的特性(纹理复杂,目标轮廓结构单一)以及实际调试结果对vgg网络结构进行调整,所述预构建的改进vgg19网络模型包括六个部分、一个输入和三个输出,所述六个部分具体为:
21.第一部分由两个深度为64,卷积核为3、步长为1的卷积层、一个batchnorm层和一个步长为1的最大池化层组成;
22.第二部分由两个深度为128,卷积核为3的卷积层、一个batchnorm层、一个步长为1的最大池化层和一个relu激活函数组成;
23.第三部分由四个深度为256,卷积核为3的卷积层和一个步长为1的最大池化层和一个relu激活函数组成;
24.第四部分和第五部分均由四个深度为512,卷积核为3的卷积层和一个步长为1的最大池化层和一个relu激活函数组成;
25.第六部分由两个4096个节点全连接层和一个512个节点的全连接层组成。
26.进一步,所述预构建的改进vgg19网络模型采用混合损失函数,分别采用权重不同的逻辑回归损失函数、逻辑回归损失函数和平方差损失函数对应三个输出分支。
27.进一步,所述基于修改后的数据集对预构建的改进vgg19网络模型进行训练,得到检测模型这一步骤,其具体包括:
28.将修改后得到数据集按预设比例划分为训练集和测试集;
29.将训练集中的训练图片和标签文件对改进vgg19网络模型进行训练;
30.根据误差结果调节改进vgg19模型的参数,直到总损失值达到预设阈值以下,得到训练完成的检测模型。
31.进一步,所述将待测样本输入到检测模型,得到检测结果这一步骤,其具体包括:
32.将待测样本压缩至预设尺寸并输入到检测模型;
33.依次经过第一部分、第二部分、第三部分、第四部分和第五部分,逐步提取图片的特征并对特征进行线性组合,得到对应输出;
34.所述对应输出分别是,是否为圆孔边界,是否为槽,是否为边界,边界方向是否为左上角,边界方向是否为右上角,边界方向是否为右下角,边界方向是否为左下角,圆孔圆心横坐标,圆孔圆心纵坐标,圆孔半径,槽左边横坐标,槽右边横坐标,边界交点横坐标,边界交点纵坐标;
35.根据输出确定检测结果。
36.进一步,所述将检测结果标注在原图上这一步骤,其具体包括:
37.若检测结果为圆孔类型,根据圆心横坐标,圆心纵坐标,圆孔半径,采用cv2.circle()函数将结果标注在原图上;
38.若检测结果为槽类型,根据槽边的两个横坐标向上和向下延伸,得到对应两条槽
边的起点和终点的坐标,采用cv2.line()函数将结果标注在原图上;
39.若检测结果为边界类型,根据边界属于的方向、方向和边界的交点得到边界的两条直线,采用cv2.line()函数将结果标注在原图上。
40.本发明所采用的第二技术方案是:一种用于同时检测家具板材边界、圆孔、槽的系统,包括:
41.数据集预处理模块,用于构建边界、圆孔、槽的数据集,并对数据集进行预处理,得到修改后的数据集;
42.训练模块,基于修改后的数据集对预构建的改进vgg19网络模型进行训练,得到检测模型;
43.检测模块,用于将待测样本输入到检测模型,得到检测结果;
44.标注模块,用于将检测结果标注在原图上。
45.本发明方法及系统的有益效果是:本发明首先通过数据增强和滤波器处理的方法,增加样本量,在样本量较小的情况下,也能够有较好的精确度和泛化能力,对数据集进行加工处理,提取边界,圆孔,槽的关键点信息作为标签,使网络的输出简单,得到的结果的误差较小,另外,通过修改vgg19网络,通过引入batchnorm使节点输出正则化,增加泛化能力;通过修改网络的输出结构,使其能够分别完成类型分类,方向分类,及关键点回归三项任务;通过给予不同输出部分的损失权值,让网络偏向于完成分类的任务,再完成回归的任务,符合实际。本发明相较于传统的方法,不仅在能够同时检测出边界,圆孔,槽的边缘,同时精确率和通用性有了极大的提升。
附图说明
46.图1是本发明一种用于同时检测家具板材边界、圆孔、槽的方法的步骤流程图;
47.图2是本发明具体实施例基于改进vgg19模型检测的示意图;
48.图3是本发明具体实施例将检测结果标注在原图上的示意图;
49.图4是本发明一种用于同时检测家具板材边界、圆孔、槽的系统的结构图;
具体实施方式
50.下面结合附图和具体实施例对本发明做进一步的详细说明。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
51.参照图1,本发明提供了一种用于同时检测家具板材边界、圆孔、槽的方法,该方法包括以下步骤:
52.s1、构建边界、圆孔、槽的数据集,并对数据集进行预处理,得到修改后的数据集;
53.具体地,先通过拍摄工具拍摄圆孔,槽,边界的图片,对于每张图片,采取类似labelme等软件进行标注,对于圆孔标注其圆,保存到的json文件中含有圆心坐标和圆周上某一点的坐标;对于槽来说,标注其两条槽边,保存到的json文件中含有两条槽边起点和终点的坐标;对于边界来说,标注其两条边界来说,保存到json文件中含有其两条边的起点和终点的坐标。
54.分别对边界,圆孔,槽的数据集进行加工:
55.对于边界,json中的为边界的两条边的起点坐标和终点坐标,在标注过程中,往往得到的是两条没有交点的线,且标注的顺序未知,难以得到其交点。所以我们根据数据的文件名得到其方向,然后根据json中的两条直线的四个点,使用距离公式求出距离最近的两个点,记为(point1,point2),随后根据四个点的相对位置,判断出该边界是属于哪个角。
56.首先先判断四个点中,哪两个点是属于横线,哪两个点是属于竖线。对直线l1,l2的起点和终点进行计算,计算两条直线各自起点和终点的横坐标之差与纵坐标之差,横坐标之差最小的直线即为竖线,记为l
c
,纵坐标之差最小的线为横线l
r

57.随后根据这两条线判断出该边界的具体方向。
58.如果横线l
r
的起点和终点的横坐标都小于竖线l
c
的起点和终点的横坐标,且l
r
的起点和终点的纵坐标都小于竖线l
c
的起点和终点的纵坐标,则该边界的方向为左上角;
59.如果横线l
r
的起点和终点的横坐标都大于竖线l
c
的起点和终点的横坐标,且l
r
的起点和终点的纵坐标都小于竖线l
c
的起点和终点的纵坐标,则该边界的方向为右上角;
60.如果横线l
r
的起点和终点的横坐标都小于竖线l
c
的起点和终点的横坐标,且l
r
的起点和终点的纵坐标都大于竖线l
c
的起点和终点的纵坐标,则该边界的方向为右下角;
61.如果横线l
r
的起点和终点的横坐标都大于竖线l
c
的起点和终点的横坐标,且l
r
的起点和终点的纵坐标都大于竖线l
c
的起点和终点的纵坐标,则该边界的方向为左上角;
62.随后根据得到的方向,分别向水平方向和垂直方向进行延伸,得到交点,记为(xx,yy)。
63.对于圆孔,json中的为圆心坐标(x,y),圆周上某一点的坐标(x`,y`),可以根据欧几里得距离公式,得到其半径得到加工后的标签(x,y,r)。
64.对于槽,json中的为两条槽边的起点坐标和终点坐标,在标注过程中,往往标注得到的不是一条垂直的线,所以为了得到更为精确的槽边的横坐标,需要以下操作,首先记得到两条槽边的起点坐标和终点坐标分别为:
65.leftstart
x
,leftstart
y
,leftend
x
,leftend
y
,rightstart
x
,rightstart
y
,rightend
x
,rightend
y

66.对于槽的关键点,可以用来得到两个槽边的横坐标,记为其标签(x1,x2)。
67.至此可以得到各类型的关键点信息。
68.s2、基于修改后的数据集对预构建的改进vgg19网络模型进行训练,得到检测模型;
69.s3、将待测样本输入到检测模型,得到检测结果;
70.s4、将检测结果标注在原图上。
71.进一步作为本方法的优选实施例,所述构建边界、圆孔、槽的数据集,并对数据集进行预处理,得到修改后的数据集这一步骤,其具体包括:
72.s11、分别获取边界、圆孔、槽的图片并制作其轮廓标签,得到对应的三种数据集,每张图片仅包含一个目标,三种类型的图片的数目相等;
73.s12、对三种数据集进行标签的加工,得到对应三种加工后的数据集;
74.s13、将三种加工后的数据集进行数据增强,得到对应三种扩充后的数据集;
75.s14、将三种扩充后的数据集进行数据集整合,得到修改后的数据集。
76.具体地,整合三种数据集,以(ishole,isslot,isedge,isa,isb,isc,isd,x,y,r,x1,x2,xx,yy)的方式作为新的标签,分别表示:是否为圆,是否为槽,是否为边界,是否为左上角,是否为右上角,是否为右下角,是否为左下角,圆心横坐标,圆心纵坐标,圆心半径,左槽边的横坐标,做槽边的纵坐标,边界交点的横坐标,边界交点的纵坐标,其中坐标是以图片左上角为原点,向下为y轴,向右为x轴建立的直角坐标系。至此可以得到修改后的数据集。
77.进一步作为本方法的优选实施例,所述对三种数据集进行标签的加工,得到对应三种加工后的数据集这一步骤,其具体包括:
78.s121、以图片左上角为原点,向下为y轴,向右为x轴做直角坐标系;
79.s122、针对边界数据集,基于两条边界的边界起点和边界终点,根据欧几里得距离公式计算最近的两个点,结合四个点的相对位置得到边界属于的方向;
80.s123、针对圆孔数据集,从原始标签中直接提取圆心坐标,通过圆上任意一点坐标和圆心坐标求解得到半径;
81.具体地,通过欧几里得距离公式求解半径。
82.s124、针对槽数据集,从原始标签中分别提取两条槽边的起点和终点的坐标,获取到两对起点和终点的坐标,对于每对起点和终点的坐标,将这两个点的横坐标相加后除2,得到关键点信息。
83.进一步作为本方法优选实施例,所述数据增强的方式包括随机水平翻转,随机垂直翻转及双边滤波。
84.具体地,通过随机水平反转、垂直翻转、中值滤波及双边滤波等方式,对其进行数据增强,扩充其数据量的数量到初始训练集的4倍,其中进行随机水平反转、垂直翻转,其标签也需一并操作。
85.进一步作为本方法优选实施例,所述预构建的改进vgg19网络模型包括六个部分、一个输入和三个输出,所述六个部分具体为:
86.第一部分由两个深度为64,卷积核为3、步长为1的卷积层、一个batchnorm层和一个步长为1的最大池化层组成;
87.第二部分由两个深度为128,卷积核为3的卷积层、一个batchnorm层、一个步长为1的最大池化层和一个relu激活函数组成;
88.第三部分由四个深度为256,卷积核为3的卷积层和一个步长为1的最大池化层和一个relu激活函数组成;
89.第四部分和第五部分均由四个深度为512,卷积核为3的卷积层和一个步长为1的最大池化层和一个relu激活函数组成;
90.第六部分由两个4096个节点全连接层和一个512个节点的全连接层组成。
91.另外,输入为一张224*224*3的图片,末尾加上三个分支输出:对于第一个分支,采用全连接 softmax,输出3个值,对应分类;对于第二个分支,采用全连接层 softmax,输出为4个值,对应为边界的方向;对于第三个分支,采用全连接层,输出为7个值,对应为圆孔、
槽、边界的关键点信息。
92.进一步作为本方法优选实施例,所述预构建的改进vgg19网络模型采用混合损失函数,分别采用权重不同的逻辑回归损失函数、逻辑回归损失函数和平方差损失函数对应三个输出分支。
93.具体地,对于损失函数,考虑到各项任务的重要性排序,优先完成分类任务,再完成判断方向的任务,其次完成关键点回归的任务。对于三个输出分别记为loss1,loss2,loss3,其中:
[0094][0095][0096][0097]
loss=10loss1 5loss2 loss3[0098]
其中y
i
为预测值,为真实值。
[0099]
vgg网络训练参数设置:在vgg网络的训练中,所有卷积层的权重由标准偏差为0.01的零均值高斯分布初始化,卷积层的偏差初始化为0。整个网络使用adam优化函数进行训练,其中学习率设为0.0001.对于损失函数,采用上述所述的混合损失函数。
[0100]
当网络的损失值在0.0001以下,且不再出现较大波动时,即视为训练完毕。
[0101]
进一步作为本方法的优选实施例,所述基于修改后的数据集对预构建的改进vgg19网络模型进行训练,得到检测模型这一步骤,其具体包括:
[0102]
s21、将修改后得到数据集按预设比例划分为训练集和测试集;
[0103]
s22、将训练集中的训练图片和标签文件对改进vgg19网络模型进行训练;
[0104]
s23、根据误差结果调节改进vgg19模型的参数,直到总损失值达到预设阈值以下,得到训练完成的检测模型。
[0105]
进一步作为本方法的优选实施例,所述将待测样本输入到检测模型,得到检测结果这一步骤,其具体包括:
[0106]
s31、将待测样本压缩至预设尺寸并输入到检测模型;
[0107]
s32、依次经过第一部分、第二部分、第三部分、第四部分和第五部分,逐步提取图片的特征并对特征进行线性组合,得到对应输出;
[0108]
具体地,依次进入第一至第五部分,网络会逐步提取图片的特征,卷积层会提取图片的相关特征,池化层能够提取图片最感兴趣的区域,而激活函数能够为整个网络提供非线性的关系,batchnorm能对节点的值进行标准化,增加其泛化能力。后面的全连接层能够将前五个部分得到的特征值进行线性组合,最后能够得到14个对应输出。
[0109]
所述对应输出分别是,是否为圆孔边界,是否为槽,是否为边界,边界方向是否为左上角,边界方向是否为右上角,边界方向是否为右下角,边界方向是否为左下角,圆孔圆心横坐标,圆孔圆心纵坐标,圆孔半径,槽左边横坐标,槽右边横坐标,边界交点横坐标,边
界交点纵坐标;
[0110]
s33、根据输出确定检测结果。
[0111]
具体地,基于改进vgg19模型检测的示意图参照图2。
[0112]
进一步作为本方法优选实施例,所述将检测结果标注在原图上这一步骤,其具体包括:
[0113]
若检测结果为圆孔类型,根据圆心横坐标,圆心纵坐标,圆孔半径,采用cv2.circle()函数将结果标注在原图上;
[0114]
若检测结果为槽类型,根据槽边的两个横坐标向上和向下延伸,得到对应两条槽边的起点和终点的坐标,采用cv2.line()函数将结果标注在原图上;
[0115]
若检测结果为边界类型,根据边界属于的方向、方向和边界的交点得到边界的两条直线,采用cv2.line()函数将结果标注在原图上,另外,如假设反向为左上角,则两条直线的起点和终点分别为((xx,yy),(512,yy),(xx,yy),(xx,512))。
[0116]
具体地,将检测结果标注在原图上的示意图参照图3。
[0117]
如图4所示,一种用于同时检测家具板材边界、圆孔、槽的系统,包括:
[0118]
数据集预处理模块,用于构建边界、圆孔、槽的数据集,并对数据集进行预处理,得到修改后的数据集;
[0119]
训练模块,基于修改后的数据集对预构建的改进vgg19网络模型进行训练,得到检测模型;
[0120]
检测模块,用于将待测样本输入到检测模型,得到检测结果;
[0121]
标注模块,用于将检测结果标注在原图上。
[0122]
上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
[0123]
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本技术权利要求所限定的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献