本发明涉及人工智能技术,尤其是牛体格测量方法、模型训练方法和系统。
背景技术:
:牛体体尺测量主要测量牛的体高、体斜长、十字部高、胸围、胸深、腹围等数据。牛体体尺性状数据反映了牛的生长发育情况,可以直接用于评价牛体的营养状况。同时,不同月龄的体尺数据也是种牛选育过程中性能测定的基础和依据。快速精确的肉牛体尺性状测量具有极高的生产价值。传统的肉牛体尺数据测量是人工使用卷尺、测杖等工具直接对牛体进行测量。由于肉牛体格高大,人工测量时至少需要两个人配合才能完成整套体尺数据的统计,测量的过程费时费力并且伴有一定的风险。另一方面,人工测量由于工作人员的测量经验不一,得出的结果存在一定的误差。对牛进行非接触式测量,不仅省时省力,而且能够避免牛伤人等各种弊端,一直是畜牧界急于解决的难题之一。目前,一种方式是采用2d视觉成像,通过检测及分割图像中的牛体,在图像上对牛体进行测量;另一种方式是对牛进行3d成像,在3d数据上给定待测量数据的位置点,直接计算两点的距离进行测量。基于2d的方法很容易受光照等因素的影响,无法精确地分割出牛体。另外,由于2d成像没有深度信息,像牛的胸围等数据无法测量。基于3d的方法,通常需要在三维数据上找到待测牛的具体位置,进行对应点的距离计算。这种操作方式极为繁琐,而且很容易受到点云噪声数据的影响。近年来,随深度学习技术绽放的强悍性能,一些学者也将深度学习技术引入到了3d点云数据的处理任务上。这类方法通常将n个三维数据排列成一个nx3的矩阵,使用深度学习中的卷积、池化等操作完成相关的任务。但是现有技术忽略了点云数据之间的空间关系,其精度并不理想。技术实现要素:有鉴于此,本发明的目的在于:提供一种牛体格测量方法、模型训练方法和系统,以提测量精度。根据本发明实施例提供的第一种方案:一种牛体格测量方法,包括以下步骤:获取待测对象的3d点云数据;获取与所述3d点云数据处于同一坐标系下的三维点阵,其中,所述三维点阵的尺寸为a*b*c,a、b和c均为正整数,所述三维点阵中处于同一轴向上的任意两个相邻点的距离相同;根据所述3d点云数据中的各点与所述三维点阵中点的位置关系,将所述3d点云数据的各点的位置信息映射到所述三维点阵中,得到点阵信息;根据所述点阵信息得到多通道图像;将所述多通道图像输入到经过训练的模型中得到测量结果。在部分实施例中,所述三维点阵为三维矩阵,任意两个相邻点的距离均等,其中,两个点相邻是指两个点的距离最近。在部分实施例中,所述点阵信息由所述三维点阵中点的灰度值表示。在部分实施例中,所述根据所述3d点云数据中的各点与所述三维点阵中点的位置关系,将所述3d点云数据的各点的位置信息映射到所述三维点阵中,得到点阵信息,包括:计算所述三维点阵中每个点的灰度信息,其中,所述三维点阵中点的灰度信息根据所述3d点云数据中的点与三维点阵中的点的距离计算,所述多通道图像各点的灰度值以所述点阵信息中对应位置的点的灰度值表示。在部分实施例中,所述三维点阵中点的灰度信息根据3d点云数据中的点与三维点阵中的点的距离计算,具体为通过以下公式计算:其中,‖.‖2是一个l2范数,用于计算两个点的坐标距离,m(m)表示m通道图像中点m的灰度值,s是指三维矩阵中与点m对应的点,是3d点云数据中的点,表示点s的第k个支撑点的坐标,ts表示点s的支撑点的数量,当点距离所述三维点阵中最近的点为点s,则称点是点s的支撑点。在部分实施例中,所述三维点阵中点的灰度信息根据3d点云数据中的点与三维点阵中的点的距离计算,具体为通过以下公式计算:其中,σ为用户设定的值,‖.‖2是一个l2范数,用于计算两个点的坐标距离,m(m)表示m通道图像中点m的灰度值,s是指三维矩阵中与点m对应的点,表示第k个点s的支撑点的坐标,t表示点s的支撑点的数量,所有的3d点云数据中的点均为点s的支撑点。在部分实施例中,所述模型为卷积神经网络模型。根据本发明实施例提供的第二种方案:一种牛体格测量模型训练方法,包括以下步骤:获取多个训练样本和多个所述训练样本对应的标签,所述训练样本为3d点云数据;获取与所述3d点云数据处于同一坐标系下的三维点阵,其中,所述三维点阵的尺寸为a*b*c,a、b和c均为正整数,所述三维点阵中处于同一轴向上的任意两个相邻点的距离相同;初始化模型参数;通过多个所述训练样本和多个所述训练样本对应的标签对模型进行训练,直到满足停止条件;在每一次的训练中,包括以下步骤:根据所述3d点云数据中的各点与所述三维点阵中点的位置关系,将所述3d点云数据的各点的位置信息映射到所述三维点阵中,得到点阵信息;根据所述点阵信息得到多通道图像;将所述多通道图像输入到当前的模型中得到测量结果;根据所述测量结果与所述训练样本对应的标签,更新模型参数。根据本发明实施例提供的第三种方案:一种牛体格测量系统,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现所述的牛体格测量方法。根据本发明实施例提供的第四种方案:一种牛体格测量模型训练方法,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现所述牛体格测量模型训练方法。从上述实施例可知,本方案具有以下技术效果:通过将点云数据的位置信息映射到三维网格中,再通过得到的点阵信息得到多通道图像,相当于将从点云数据中的位置信息转换为多通道图像,接着通过经过训练的模型得到最终的测量结果,相对于现有技术,可以更好地提取到点云中数据点之间的位置信息,使得测量结果更加准确。附图说明通过阅读参考以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:图1为根据本发明实施例提供的牛体格测量方法的一种流程图;图2为根据本发明实施例提供的牛体格测量方法的另一种示意图;图3为根据本发明实施例提供的牛体格测量模型训练方法的示意图。具体实施方式下面对本发明实施例中出现的名词进行解释,以辅助理解本发明实施例。人工智能(artificialintelligence),英文缩写为ai。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工神经网络(artificialneuralnetworks,简写为anns)也简称为神经网络(nns)或称作连接模型(connectionmodel),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。卷积神经网络(convolutionalneuralnetworks,cnn)是一类包含卷积计算且具有深度结构的前馈神经网络(feedforwardneuralnetworks),是深度学习(deeplearning)的代表算法之一。卷积神经网络具有表征学习(representationlearning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariantclassification),因此也被称为“平移不变人工神经网络(shift-invariantartificialneuralnetworks,siann)。点云:在逆向工程中通过测量仪器得到的产品外观表面的点数据集合也称之为点云,通常使用三维坐标测量机所得到的点数量比较少,点与点的间距也比较大,叫稀疏点云;而使用三维激光扫描仪或照相式扫描仪得到的点云,点数量比较大并且比较密集,叫密集点云。在相关技术中,将深度学习技术引入到了3d点云数据的处理任务上。这类方法通常将n个三维数据排列成一个nx3的矩阵,使用深度学习中的卷积、池化等操作完成相关的任务。这种操作在目标分类等任务具有一定的判别能力。直接将三维点排列成一个nx3的矩阵,忽略了三维点在空间位置上的相邻关系,使用卷积操作时无法精确的提取物体的局部结构信息,使其很难精确地实现测量任务。因为往往对测量起作用的是局部位置的点对关系。为了能够使用深度学习测量牛体,本发明将3d点云数据转换为具体局部空间结构信息的多通道图像数据,进而利用现有的深度学习技术回归出牛体体尺数据。依托于深度学习技术的强悍的特征挖掘能力,本发明不需要进行用户指定具体的测量点,可以直接给出牛体的相关数据。参照图1和图2,本实施例公开了一种牛体格测量方法,包括以下步骤:步骤110、获取待测对象的3d点云数据。在本步骤中获取的数据可以从硬盘中获取,也可以通过现场使用双目视觉或激光扫描等设备对牛体扫描获得3d点云数据,在实际应用中,由于牛成左右对称型,对牛构建3d点云时可以只扫描牛的一侧。这样可以减少数据量,降低模型体积和运算量。同理,在训练模型的过程中,通过扫描多个牛的体积以及通过人工方法测量得到对应的数据作为标签,即可以形成训练集。步骤120、获取与所述3d点云数据处于同一坐标系下的三维点阵,其中,所述三维点阵的尺寸为a*b*c,a、b和c均为正整数,所述三维点阵中处于同一轴向上的任意两个相邻点的距离相同;可以在3d点云数据的坐标系中构建三维点阵,其中,三维点阵在x轴、y轴和z轴方向的点的数量分别是a、b和c。在本实施例中,只要保证三维点阵在同一轴向上点的间距等距,即可以将点阵信息映射到多通道图像中。当然,在部分实施例中,为了削减运算量,可以将所有的相邻的点之间的距离设置成一样,也可以减小a、b和c的大小。步骤130、根据所述3d点云数据中的各点与所述三维点阵中点的位置关系,将所述3d点云数据的各点的位置信息映射到所述三维点阵中,得到点阵信息。根据点云数据中的点和三维点阵中的点的关系进行映射,可以将点云数据中各点的空间关系映射到三维点阵中,使得模型可以学习到这些信息,进而得到一个准确的结果。其中,需要理解的是,可以将和三维点阵中的点之间的位置关系满足一定条件的数据点的位置信息进行映射。在本实施例中引入支撑点的概念,三维点阵点中每个点都有0~n个支撑点,可以将所有点云数据都作为三维点阵中每个点的支撑点,也可以将接近三维点阵中某个点的数据点作为该点的支撑点。这样做的目的是通过空间关系,决定要将哪些点云数据中的数据点映射到三维点阵的某个点中,以提取出局部的空间关系信息。步骤140、根据所述点阵信息得到多通道图像。在本步骤中,可以将三维点阵中的点从左到右、从上到下、从前到后地映射到多通道图像上,即x方向坐标映射图像的列,y方向坐标映射图像的行,z方向坐标映射图像的通道。步骤150、将所述多通道图像输入到经过训练的模型中得到测量结果。在本步骤中,所选取的模型可以是卷积神经网络。采用卷积神经网络可以对多通道图像进行较好的处理。下面给出一种卷积神经网络结构:当3d点云转换为多通道图像后,本发明实施例则可以采用普通的深度学习网络来回归牛体体尺信息。输入为多通道的图像,标签为体尺数值。前面网络采用卷积、池化层(表1给出两个卷积层的结构,实际应用中不限于两层,可以是多层)。网络的后面采用全连接层,最后输出为牛体体尺信息。假设通过等间隔撒点后计算得到的多通道图像的大小为224*224*30,表1给出了一个具体的网络结构。表1输入224*224*30输出卷积核3*3*30@16224*224*16最大池化112*112*16卷积核3*3*16@32112*112*32最大池化56*56*32卷积核3*3*32@4856*56*48最大池化28*28*48卷积核3*3*48@5628*28*56最大池化14*14*56卷积核3*3*56@6414*14*64最大池化7*7*64特征展开7*7*64=1*3136全连接3136*10001*1000全连接1000*1001*100全连接100*1l*1其中,224*224*30:表示图像的大小为224*224,共有30幅,即通道数为30。3*3*30@16:表示有16个卷积核大小为3*3*30的滤波器,其实就是当前层的参数。最大池化后,图像的宽高会变为原来的一半。特征展开就是将一个多维的向量拉成一个一维的向量,数据内容不变。最后输出长度l是牛体体尺的数据个数。在部分实施例中,所述三维点阵为三维矩阵,任意两个相邻点的距离均等,其中,两个点相邻是指两个点的距离最近。本实施例有助于简化计算过程。在部分实施例中,所述点阵信息由所述三维点阵中点的灰度值表示。在部分实施例中,所述根据所述3d点云数据中的各点与所述三维点阵中点的位置关系,将所述3d点云数据的各点的位置信息映射到所述三维点阵中,得到点阵信息,包括:计算所述三维点阵中每个点的灰度信息,其中,所述三维点阵中点的灰度信息根据所述3d点云数据中的点与三维点阵中的点的距离计算,所述多通道图像各点的灰度值以所述点阵信息中对应位置的点的灰度值表示。其中,计算多通道图像各点的灰度值可以通过以下两种方式进行。为了方便描述,用符号c表示规格化的点云数据;s表示在包含点云数据c的三维空间上等间隔撒点形成的一个规则排列的点集,即一个a*b*c的三维点阵,其中a、b、c表示在坐标系三个轴向上的点的数量。因为s是规则排列的点集,所以可以通过一一映射到多通道的图像m上。其中,一种映射过程就是依次将s的点从左到右、从上到下、从前到后与多通道图像m的相应的坐标对应,即x方向坐标映射图像的列,y方向坐标映射图像的行,z方向坐标映射图像的通道。假设规则排列点集s中的点s与多通道图像m中的坐标m相对应,用m(m)表示多通道图像m在坐标m处的值。第一种方式,对点云数据c中每一个点,在规则排列点集s中寻找离其最近的点,并作为该点的一个支撑点。这样规则排列点集s中的每个点会有t≥0个支撑点。不失一般性假设规则排列点集s中的点s有ts个支撑点,记为那么使用平均距离作为与点s相对应的多通道图像m中的坐标m的灰度值。因此,所述三维点阵中点的灰度信息根据3d点云数据中的点与三维点阵中的点的距离计算,具体为通过以下公式计算:其中,因为s和都是坐标,是一个3x1的向量,不能直接计算距离。因此,取范数。‖.‖2是一个l2范数,用于计算两个点的坐标距离,m(m)表示m通道图像中点m的灰度值,s是指三维矩阵中与点m对应的点,需要理解的是多通道图像可以理解为一个三维矩阵,将点s映射到多通道图像的时候,实际上每个点s都有位置对应的点m,是3d点云数据中的点,表示点s的第k个支撑点的坐标,ts表示点s的支撑点的数量,当点距离所述三维点阵中最近的点为点s,则称点是点s的支撑点。例如,在一个有三个通道的多通道图像中,每个通道的图像大小为100*100,因此多通道图像中的第n个点mn可以描述成(x1n,y1n,z1n),其中,x1n={0,1,2,…,99},y1n={0,1,2,…,99},z1n={0,1,2},n={0,1,…,29999}。假设三维点阵中的规模是200*200*6,第n个点sn可以描述成(x2n,y2n,z2n),x2n={0,2,4,…,198},y2n={0,2,4,…,198},z2n={0,2,4},三维点阵的点数量正好与多通道图像的点数量一样,因此每个点都有对应关系。第二种方式,点云数据c中所有点对规则排列点集s中的每一个点都进行支撑。支撑的力度由其距离的远近来决定。不失一般性考虑规则排列点集s中的点s,所有的点云数据都是s的支撑点。假设点云数据中共有t个点,记为c1,c2,…,ct。使用高斯函数来度量每个点的贡献。因此,所述三维点阵中点的灰度信息根据3d点云数据中的点与三维点阵中的点的距离计算,具体为通过以下公式计算:其中,σ为用户设定的值,σ通常取s撒点间隔的1-3倍。‖.‖2是一个l2范数,用于计算两个点的坐标距离,m(m)表示m通道图像中点m的灰度值,s是指三维矩阵中与点m对应的点,是3d点云数据中的点,表示点s的第k个支撑点的坐标,t表示点s的支撑点的数量,所有的3d点云数据中的点均为点s的支撑点。从上面公式中可知,这样当点云的点ck离s距离很远时,趋于0,贡献很小;相反,当点云的点ck离s距离很近时,有较大的值,贡献大。因此,灰度值可以反映局部的位置信息。参照图3,本实施例公开了一种牛体格测量模型训练方法,包括以下步骤:获取多个训练样本和多个所述训练样本对应的标签,所述训练样本为3d点云数据;获取与所述3d点云数据处于同一坐标系下的三维点阵,其中,所述三维点阵的尺寸为a*b*c,a、b和c均为正整数,所述三维点阵中处于同一轴向上的任意两个相邻点的距离相同;初始化模型参数;通过多个所述训练样本和多个所述训练样本对应的标签对模型进行训练,直到满足停止条件;在每一次的训练中,包括以下步骤:根据所述3d点云数据中的各点与所述三维点阵中点的位置关系,将所述3d点云数据的各点的位置信息映射到所述三维点阵中,得到点阵信息;根据所述点阵信息得到多通道图像;将所述多通道图像输入到当前的模型中得到测量结果;根据所述测量结果与所述训练样本对应的标签,更新模型参数。从本实施例可知,通过大量标注数据的训练可以得到一个精度较好的模型。本实施例中所采取的训练方法可以利用数据增强、对抗训练等方式提高鲁棒性。本实施例公开了一种牛体格测量系统,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现所述的牛体格测量方法。本实施例公开了一种牛体格测量模型训练方法,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现所述牛体格测量模型训练方法。综上所述,本发明所提供的实施例具备以下优点:a.能够很好的描述点云的局部结构信息;多通道图像m中的每一个灰度值描述了相应的局部点云结构。b.传统基于视频处理的3d深度学习技术完全可以应用到3d点云数据上;此时,输入的多帧视频数据等同于输入的多通道图像。c.针对图像网络结构设计会变得很灵活,不用完全依赖现有的直接使用点云数据进行卷积的网络结构。d.规则排列点集s撒点的密度不同,变相地代表了空间尺度信息,完全可以用于提升精度。因此,可以通过撒点距离调整模型精度。需要说明的是,本发明的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是,但不限:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备实现上述的方法实施例。可以以一种或多种程序设计语言或其组合来编写用于执行本发明的实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、smalltalk、c++,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。描述于本发明的实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元、获取单元、第一生成单元和第二生成单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,接收单元还可以被描述为“接收终端发送的查询请求的单元”。以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。当前第1页12