本发明涉及逆向工程领域,特别是涉及基于cnn的无标定曲面所包含拼接曲面个数识别方法。
背景技术:
逆向工程是根据现有的产品模型,利用数字化测量设备如激光扫描仪获取实体数据如点云,然后对这些实体数据进行分割与拟合,来构建一个完整的cad模型。
由于点云具有存储方便,计算灵活的特点,是计算机图形学中一种重要的元数据形式,点云逆向重建是点云计算中的一项重要技术。近年来,随着数字化精度的不断提高以及扫描对象曲面的复杂化,对于三维激光扫描仪或ct扫描仪等设备所获取的海量点云在进行分割处理环节非常耗时。
考虑到曲面所包含的拼接曲面个数能够反应出该曲面的点云的分割信息,因此,如何识别无标定曲面所包含的拼接曲面的个数是本领域技术人员亟待解决地问题。
技术实现要素:
本发明的目的是提供一种基于cnn的无标定曲面所包含拼接曲面个数识别方法,从而通过拼接曲面的个数得到点云的分割信息。
为解决上述技术问题,本发明提供一种基于cnn的无标定曲面所包含拼接曲面个数识别方法,包括:
cnn拼接曲面个数识别器训练过程:
步骤a,在目标曲面的表面均匀采集n个目标曲面点云,并根据椭球曲面的拟合方法计算每个所述目标曲面点云对应的两个主曲率,然后选取每个所述目标曲面点云的三维坐标值及两个主曲率作为代表所述目标曲面点云的五个特征,从而获得所述目标曲面五维点云组;
步骤b,利用主元分析pca方法将所述目标曲面五维点云组降维至二维,从而获得目标曲面二维点云组;
步骤c,预先通过人工标定方式找出所述目标曲面所包含拼接曲面个数,并对所述目标曲面二维点云组进行标定,构成一组已标定训练数据;
步骤d,对x个不同的所述目标曲面重复步骤a至步骤c,获得x组所述已标定训练数据,从x组所述已标定训练数据中随机选取m组构成训练集p,剩余的所述已标定训练数据构成测试集s,通过所述训练集p和所述测试集s对cnn拼接曲面个数识别器进行训练,直至所述cnn拼接曲面个数识别器训练成功为止;
待识别目标曲面所包含拼接曲面个数识别过程:
步骤e,在待识别目标曲面的表面均匀采集n个待识别目标曲面点云,并根据椭球曲面的拟合方法计算每个所述待识别目标曲面点云对应的两个主曲率,然后选取每个所述待识别目标曲面点云的三维坐标值及两个主曲率作为代表所述待识别目标曲面点云的五个特征,从而获得待识别目标曲面五维点云组;
步骤f,利用主元分析pca方法将所述待识别目标曲面五维点云组降维至二维,从而获得待识别目标曲面二维点云组,并将该待识别目标曲面二维点云组作为一组待识别目标曲面数据;
步骤g,将步骤f获得的所述待识别目标曲面数据输入已训练成功的所述cnn拼接曲面个数识别器中以输出所述待识别目标曲面所包含拼接曲面个数;
其中,n、x、m均为正整数,且m小于x。
优选地,所述cnn拼接曲面个数识别器训练方法具体包括:
创建所述cnn拼接曲面个数识别器的cnn模型,所述cnn模型采用lenet结构并且最后3层使用mlp,所述cnn模型中所有激活函数采用relu函数;随机初始化所述cnn模型中所有权值和阈值,根据用户需要分别初始化所述cnn模型的学习率、批量训练样本数目及最小误差nm;
对所述训练集p中各组所述已标定训练数据进行归一化处理,并从所述训练集p中依次选取一组所述已标定训练数据输入到所述cnn模型,按照前向传播的公式计算相应的模型输出;按照误差公式计算出该组已标定训练数据输入到所述cnn模型后的模型输出和所述人工标定方式得到的结果之间的误差,并按照反向传播算法调节所述cnn模型所有权值和阈值;
一次训练完成后,计算整体误差n,若整体误差n<最小误差nm,则所述cnn模型训练结束,否则按照上述训练步骤继续训练所述cnn模型,直至整体误差n<最小误差nm则结束训练;
将所述测试集s进行归一化处理,并从所述测试集s中依次选取一组已标定训练数据输入到已完成训练的所述cnn模型中,按照前向传播的公式计算相应的模型输出,并与所述人工标定方式得到的结果进行对比,计算所述测试集s的整体错误率m,若所述整体错误率m满足要求,则所述cnn模型训练成功,否则所述cnn模型训练失败,需再次不断循环重复步骤a至步骤c以增加所述训练集p的已标定训练数据组数,按照所述cnn模型训练步骤继续训练,直至所述整体错误率m满足要求。
优选地,所述获得所述目标曲面五维点云组的方法包括:
定义所述目标曲面点云的第一特征为所述目标曲面点云的x轴坐标值,第二特征为上述目标曲面点云的y轴坐标值,第三特征为所述目标曲面点云的z轴坐标值,第四特征为两个主曲率中的最大曲率r1,第五特征为两个主曲率中的最小曲率r2。
本发明所提供的基于cnn的无标定曲面所包含拼接曲面个数识别方法,利用主元分析pca方法将待识别目标曲面的五维点云组降维至二维,从而获得待识别目标曲面的二维点云组,并将该二维点云组作为一组待识别目标曲面数据,然后将该待识别目标曲面数据输入已训练成功的cnn拼接曲面个数识别器中以输出待识别目标曲面所包含拼接曲面个数。本方法中根据训练成功的cnn拼接曲面个数识别器实现了输出待识别目标曲面所包含拼接曲面个数,识别速度快,识别准确度高。另外,通过主元分析pca方法对五维点云组进行降维可以较大程度上降低计算量,从而提高识别的速度。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于cnn的无标定曲面所包含拼接曲面个数识别方法的流程图;
图2为本发明实施例提供的一种cnn模型结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种基于cnn的无标定曲面所包含拼接曲面个数识别方法,从而通过拼接曲面的个数得到点云的分割信息。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明实施例提供的一种基于cnn的无标定曲面所包含拼接曲面个数识别方法的流程图。如图1所示,该方法包括:cnn拼接曲面个数识别器训练过程和待识别目标曲面所包含拼接曲面个数识别过程,分别如下:
cnn拼接曲面个数识别器训练过程:
步骤a,在目标曲面的表面均匀采集n个目标曲面点云,并根据椭球曲面的拟合方法计算每个所述目标曲面点云对应的两个主曲率,然后选取每个所述目标曲面点云的三维坐标值及两个主曲率作为代表所述目标曲面点云的五个特征,从而获得所述目标曲面五维点云组;
步骤b,利用主元分析pca方法将所述目标曲面五维点云组降维至二维,从而获得目标曲面二维点云组;
步骤c,预先通过人工标定方式找出所述目标曲面所包含拼接曲面个数,并对所述目标曲面二维点云组进行标定,构成一组已标定训练数据;
步骤d,对x个不同的所述目标曲面重复步骤a至步骤c,获得x组所述已标定训练数据,从x组所述已标定训练数据中随机选取m组构成训练集p,剩余的所述已标定训练数据构成测试集s,通过所述训练集p和所述测试集s对cnn拼接曲面个数识别器进行训练,直至所述cnn拼接曲面个数识别器训练成功为止;
待识别目标曲面所包含拼接曲面个数识别过程:
步骤e,在待识别目标曲面的表面均匀采集n个待识别目标曲面点云,并根据椭球曲面的拟合方法计算每个所述待识别目标曲面点云对应的两个主曲率,然后选取每个所述待识别目标曲面点云的三维坐标值及两个主曲率作为代表所述待识别目标曲面点云的五个特征,从而获得待识别目标曲面五维点云组;
步骤f,利用主元分析pca方法将所述待识别目标曲面五维点云组降维至二维,从而获得待识别目标曲面二维点云组,并将该待识别目标曲面二维点云组作为一组待识别目标曲面数据;
步骤g,将步骤f获得的所述待识别目标曲面数据输入已训练成功的所述cnn拼接曲面个数识别器中以输出所述待识别目标曲面所包含拼接曲面个数;
其中,n、x、m均为正整数,且m小于x。
需要说明的是,本发明中提到的目标曲面是作为训练所用到的曲面,而待识别目标曲面是要进行识别的曲面。
在具体实施中,目标曲面的点云具有多个,选取其中一部分作为实际使用的该目标曲面点云,即选取n个目标曲面点云,例如,预定数量可以为16372个。可以理解的是,预定数量可以灵活选取,本实施例只是一种具体的实施方式。
将获得的上述16372个点云根据椭球曲面的拟合方法分别计算每个点云对应的两个主曲率,然后选取每个点云的三维坐标值及其两个主曲率作为描述该点云的五个特征,从而获得该目标曲面的五维点云组,该五维点云组包含上述16372个点云。
作为优选地实施方式,目标曲面点云对应的两个主曲率具体为目标曲面点云对应的最大主曲率和最小主曲率。
其中,目标曲面五维点云定义方法包括:
定义目标曲面点云的第一特征为目标曲面点云的x轴坐标值,第二特征为上述目标曲面点云的y轴坐标值,第三特征为目标曲面点云的z轴坐标值,第四特征为两个主曲率中的最大曲率r1,第五特征为两个主曲率中的最小曲率r2。
本实施例中,通过主元分析pca方法对目标曲面五维点云数据组降维的具体过程如下:
首先,分别对目标曲面五维点云数据组求解每一维上的均值和方差,并对目标曲面五维点云数据组中每个目标曲面点云分别减去对应维数上的均
值,组成行数等于所述目标曲面五维点云数据组中点云数量、列数等于维数的目标曲面样本矩阵q;
接着,求解目标曲面五维点云数据组的目标曲面五维协方差矩阵k,即:
求解目标曲面五维协方差矩阵k的5个特征值γ1、γ2、γ3、γ4、γ5,并由大到小排序获得其中最大值特征值δ1和次大特征值δ2,并求解目标曲面五维协方差矩阵k对应δ1的特征向量β1和对应δ2的特征向量β2,特征向量β1和特征向量β2为单位化的五维列向量,并组成目标曲面映射矩阵t=[β1,β2];
然后,将目标曲面样本矩阵q和目标曲面映射矩阵t相乘获得目标曲面二维点云矩阵y,目标曲面二维点云矩阵y中的每一行即为目标曲面五维点云数据组降维至二维的一个目标曲面点云,从而获得目标曲面二维点云数据组。
目标曲面五维点云数据组通过主元分析pca方法降维至二维后,能最大限度保留目标曲面点云数据的有用信息,大大降低了目标曲面点云数据的冗余,提高cnn模型所需输入数据的有效性和计算效率。
步骤d中,可以选取6200个不同的目标曲面进行训练,即x=6200。下文中以6200个目标曲面为例说明。对6200个不同的目标曲面重复步骤a至步骤c,获得6200组训练数据,从该6200组训练数据中随机选取6000组训练数据归一化后构成cnn拼接曲面个数识别器的训练集p,剩余的200组训练数据归一化后构成cnn拼接曲面个数识别器的测试集s,通过上述训练集p和测试集s对cnn拼接曲面个数识别器进行训练,直至所述cnn拼接曲面个数识别器训练成功为止。
在具体实施中,本步骤中的目标曲面的个数和训练集p中的训练数据的个数可以灵活选取,本实施例只是一种具体的实施方式。
在具体实施中,步骤d中cnn拼接曲面个数识别器训练方法具体包括:
首先,对预设数量6200个不同的目标曲面重复步骤a至步骤c,获得6200组已标定训练数据,从该6200组已标定训练数据中随机选取预设数量6000组构成训练集p,剩余的200组构成测试集s;
然后,创建cnn拼接曲面个数识别器的cnn模型,cnn模型采用lenet结构并且最后3层使用mlp,cnn模型中所有激活函数采用relu函数;随机初始化cnn模型中所有权值和阈值,学习率初始化为0.01,批量训练样本数目设置为50,最小误差nm设置为0.0001;
在具体实施中,本步骤cnn模型中的所有激活函数、学习率、批量训练样本数目及最小误差nm可以根据用户实际需要灵活选取,本实施例只是一种具体的实施方式。
接着,对训练集p中各组已标定训练数据进行归一化处理,并从训练集p中从上至下依次选取一组已标定训练数据输入到cnn模型,按照前向传播的公式计算相应的模型输出;按照误差公式计算出该组已标定训练数据输入到cnn模型后模型输出和人工标定的标签之间的误差,并按照反向传播算法调节cnn模型所有权值和阈值;
可以理解的是,在目标曲面二维点云数据组中,第一维数据和第二维数据可能处于数量级相差较大的情况,若该情况下将原始数据直接输入至cnn模型中,则可能导致数量级较小的那一维数据对模型的影响被完全被忽略,整个模型的最终结果只受数量级较大的那一维数据影响,考虑到这一问题,在具体实施中,在将训练集p中的二维点云数据输入cnn模型之前,将训练集p中的二维点云数据进行归一化处理。通过归一化处理使得第一维度和第二维度的数据在一个数量等级上,即0-1之间,解决了上述两cnn模型输入量因数量级不同而产生的数据信息丢失问题,而且能够大大提高后续计算的速度。
一次训练完成后,计算整体误差n,若整体误差n<最小误差nm,则cnn模型训练结束,否则按照上述cnn模型训练步骤继续训练cnn模型,直至整体误差n<最小误差nm结束训练;
本步骤中,如果当前的整体误差n>最小误差nm,说明当前的cnn模型中权值和阈值还没有达到理想值,因此,需要继续训练,直至当前的整体误差n<最小误差nm为止。
最后,将测试集s进行归一化处理,并从该测试集s中从上至下依次选取一组已标定训练数据输入到已完成训练的cnn模型中,按照前向传播的公式计算相应的模型输出,并与对应人工标定的标签进行对比,计算测试集s的整体错误率m,若整体错误率m满足要求,则该cnn模型训练成功,否则该cnn模型训练失败,需再次不断循环重复步骤a至步骤c以增加训练集p的已标定训练数据组数,按照上述cnn模型训练步骤继续训练网络,直至整体错误率m满足要求。
本步骤中,通过测试集s对训练完成的cnn模型进行测试,如果该cnn模型能够使得测试集s的整体错误率满足设定要求,则说明该cnn模型可以作为cnn拼接曲面个数识别器正常使用,否则说明该cnn模型训练仍未足够,训练样本数量不够,需要重复步骤a至步骤c获取更多的训练样本满足该cnn模型训练。
对待识别目标曲面,在待识别目标曲面的表面均匀采集n个待识别目标曲面点云,并根据椭球曲面的拟合方法计算每个所述待识别目标曲面点云对应的两个主曲率,然后选取每个所述待识别目标曲面点云的三维坐标值及两个主曲率作为代表所述待识别目标曲面点云的五个特征,从而获得待识别目标曲面五维点云组。
在得到待识别目标曲面对应的待识别目标曲面五维点云组后,利用主元分析pca方法将该待识别目标曲面的五维点云数据组降维至二维。在得到待识别目标曲面二维点云组后,将该待识别目标曲面二维点云组作为一组待识别目标曲面数据。在具体实施中,需要对待识别目标曲面二维点云组进行归一化,即归一化后得到一组待识别目标曲面数据,然后输入至已训练成功的cnn拼接曲面个数识别器,cnn拼接曲面个数识别器输出该待识别目标曲面所包含拼接曲面的个数。
其中,待识别目标曲面五维点云定义方法包括:
定义每个待识别目标曲面五维点云的第一特征为x轴坐标值x',第二特征为y轴坐标值y',第三特征为z轴坐标值z',第四特征为两个主曲率中的最大曲率r1',第五特征为两个主曲率中的最小曲率r2'。
本实施例中,通过主元分析pca方法对待识别目标曲面五维点云数据组降维的具体过程如下:
首先,设待识别目标曲面样本矩阵q'为(x',y',z',r1',r2'),然后,将待识别目标曲面样本矩阵q'和目标曲面映射矩阵t相乘,最后获得待识别目标曲面二维点云矩阵y',待识别目标曲面二维点云矩阵y'中仅有的一行即为待识别目标曲面五维点云组降维至二维的一个待识别目标曲面点云,从而获得待识别目标曲面二维点云组。
待识别目标曲面五维点云数据组通过主元分析pca方法降维至二维后,能最大限度保留待识别目标曲面点云数据的有用信息,大大降低了待识别目标曲面点云数据的冗余,提高cnn模型所需输入数据的有效性和计算效率。
通过步骤g中识别出的待识别目标曲面所包含拼接曲面个数就可以得到待识别目标曲面对应的点云的分割信息。
本实施例提供的基于cnn的无标定曲面所包含拼接曲面个数识别方法,利用主元分析pca方法将待识别目标曲面的五维点云组降维至二维,从而获得待识别目标曲面的二维点云组,并将该待识别目标曲面二维点云组作为一组待识别目标曲面数据;然后将该待识别目标曲面数据输入已训练成功的cnn拼接曲面个数识别器中以输出待识别目标曲面所包含拼接曲面个数。本方法中根据训练成功的cnn拼接曲面个数识别器实现了输出待识别目标曲面所包含拼接曲面个数,识别速度快,识别准确度高。另外,通过主元分析pca方法对五维点云组进行降维可以较大程度上降低计算量,从而提高识别的速度。
cnn模型的构建方式有多种,本实施例中采用lenet结构,且最后3层为mlp。图2为本发明实施例提供的一种cnn模型结构图。如图2所示,如图2所示,所述cnn拼接曲面个数识别器的cnn模型结构包括六个卷积层c1、c3、c5、c7、c9、c11,六个池化层s2、s4、s6、s8、s10、s12,以及三个全连接层f13、f14及输出层,神经元个数分别为75、35和1,输入层为16372×16372的二维数据,卷积均是10×10的模板,stride=1,池化均是4×4的模板,激活函数均是relu函数。
以上对本发明所提供的基于cnn的无标定目标曲面所包含拼接曲面个数识别方法进行了详细介绍。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,或对本发明进行若干改进和修饰,这些其它具体实施方式、改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。