本发明涉及机器人导航技术领域,具体而言,涉及一种基于元学习的3d点云语义分割迁移方法。
背景技术:
在机器人导航技术领域,语义分割是一种细粒度的分类任务,是计算机视觉任务中实现场景理解的一个基础问题,是实现机器人从粗略推理到精细推理的重要步骤。
目前3d点云数据的语义分割方法由图像的语义分割发展而来,根据数据的表达形式不同,主要有以下两种方法:
多视角投影:将3d点云数据投影到不同的平面,得到不同视角下的2d图像,分别利用图像语义分割的方法处理2d图像,再融合不同视角下的数据信息,得到完整3d点云数据的结果。这种方法丢弃了3d点云数据的优势,而且在投影和融合阶段会损失数据的空间几何关系特征,因此不能适应复杂环境。
3d卷积:将点云数据转换为空间上有依赖关系的体素网络,与图像类似,具有一定的空间结构,利用三维卷积进行处理。由于3d点云数据采集本身导致数据分布不均匀,数据的稀疏性会影响特征提取的准确性,同时,三维卷积操作计算量大,数据处理效率低,因此该方法难以应用。
上述两种方法不能直接利用点云数据,需要转换点云数据,该过程存在信息损失,而且效率较低;另外,需要的标注数据量多,尤其对于语义分割任务而言,需要像素级的数据标注,工作量大,成本高。
技术实现要素:
本发明在于提供一种基于元学习的3d点云语义分割迁移方法,其能够缓解上述问题。
为了缓解上述的问题,本发明采取的技术方案如下:
本发明提供了一种基于元学习的3d点云语义分割迁移方法,包括以下步骤:
s100、构建pointnet网络模型;
s200、输入训练环境的3d点云数据集,将3d点云数据集分成若干子数据集,利用pointnet网络模型检测各子数据集的相似度,选取相似度最小的n个子数据集分别作为场景语义分割迁移的n个训练数据集;
s300、对于每个训练数据集,对其中的数据进行预处理,利用其中不同类别的数据形成训练任务集;
s400、构建元学习框架,其包括梯度更新框架和元学习更新框架;
s500、根据元学习框架,通过各训练任务集对pointnet网络模型进行训练;
s600、获取新环境3d点云数据集,对新环境3d点云数据集进行预处理,利用其中不同类别的数据形成测试任务集;
s700、将测试任务集输入训练好的pointnet网络模型进行测试,直至模型的梯度更新值收敛,完成3d点云语义分割的迁移。
本技术方案的技术效果是:在新环境任务中通过加载已经训练完成的模型,使用最优的相似任务参数,仅仅训练几步即可完成新任务的场景语义分割方法的训练;由于加载的训练模型参数是多种相似任务的最优参数,更有利于新任务的训练,相比于重新训练神经网络和微调神经网络可以更快收敛,减少训练时间。通过元学习框架学习了不同任务的语义分割能力,确保学习特征可以适用于不同的迁移环境,提高了模型的泛化性能,相比在单一环境任务的室内场景语义分割的神经网络的迁移,可迁移性更强。
进一步地,所述步骤s200中,训练数据集的选择方法具体包括:设定相似度阈值,将相似度小于相似度阈值的子数据集作为所述训练数据集。
进一步地,所述步骤s200中,训练环境分成六个区域,子数据集有六个,所述子数据集与所述区域一一对应,所述训练数据集至少有2个。
本技术方案的技术效果是:在训练过程中采取至少2个训练数据集,可以采取更多不同类别的数据,形成不同的任务集,提高数据样本的泛化性,更好地体现不同环境之间的迁移性能。如果仅仅在1个数据集之间进行迁移训练,数据相似度更大,易导致模型训练过拟合,降低了模型的泛化性,无法实现不同环境的迁移学习。
进一步地,所述步骤s300具体包括:对于每个训练数据集,从中随机抽取k类数据,每类数据中取m个数据形成一个k-waym-shot任务,选取若干个k-waym-shot任务构成训练任务集;各训练数据集的训练任务集不同。
本技术方案的技术效果是:该方法不仅增加了训练数据量,避免了训练数据集样本不足;同时每个训练任务集代表多个类别,有利于模型学习通用特征。
更进一步地,所述步骤s400中,元学习框架的元学习超参数有两个,分别为梯度更新学习率α和元学习更新学习率β,α和β均为自定义参数,均通过若干次试验得到。
更进一步地,所述步骤s500具体包括:
s501、对于每个训练任务集,从中随机采样一批任务,对于该批任务中的每个任务,将其中的少量数据作为元训练数据集,将其中的其它数据作为元测试数据集,利用元学习框架的梯度更新框架调用pointnet网络模型,将元训练数据集输入至pointnet网络模型得到元训练损失值,利用元训练损失值计算期望参数,将元测试数据集输入至网络参数为期望参数的pointnet网络模型,得到元测试损失值;
利用元学习框架的元学习更新框架调用pointnet网络模型,将所有的元测试损失值输入元学习更新框架,对各任务的元测试损失值进行求和得到训练损失值,然后根据训练损失值对pointnet网络模型的参数计算元学习更新值,并利用元学习更新值更新pointnet网络模型的参数;
s502、重复步骤s501,直到元学习更新值收敛,完成pointnet模型的训练。
本技术方案的技术效果是:在迁移训练过程中,可以通过少量不同类别的训练样本组成多个训练任务,利用元学习框架学习多个类别的通用特征,提高模型的泛化性能;与随机初始化网络参数和加载某特定任务的神经网络参数相比,元学习训练的参数作为迁移过程中的初始化参数效果更好。
进一步地,所述步骤s600具体包括:获取新环境3d点云数据集,从新环境3d点云数据集中随机抽取k类数据,每类数据中取m个数据形成一个k-waym-shot任务,选取若干个k-waym-shot任务构成测试任务集。
本技术方案的技术效果是:所需要的新环境3d点云训练数据较少,通过形成测试任务集增加训练样本,减少了新环境数据的采集和标注,降低了成本。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举本发明实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是实施例中基于元学习的3d点云语义分割迁移方法流程图;
图2是实施例中pointnet网络模型示意图;
图3是实施例中元学习框架的示意图;
图4是实施例中元学习调用pointnet的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1~图4,本实施例提供了一种基于元学习的3d点云语义分割迁移方法,包括以下步骤:
s100、构建pointnet网络模型。
s200、输入训练环境的3d点云数据集,将3d点云数据集分成若干子数据集,利用pointnet网络模型检测各子数据集的相似度,选取相似度最小的n个子数据集分别作为场景语义分割迁移的n个训练数据集。
在本实施例中,训练数据集的选择方法具体包括:设定相似度阈值,将相似度小于相似度阈值的子数据集作为训练数据集。
在本实施例中,训练环境分成六个区域,子数据集有六个,子数据集与区域一一对应,训练数据集为2个,除此之外,也可大于2个。
s300、对于每个训练数据集,对其中的数据进行预处理,从训练数据集中随机抽取k类数据,每类数据中取m个数据形成一个k-waym-shot任务,选取若干个k-waym-shot任务构成训练任务集。
s400、构建元学习框架,其包括梯度更新框架和元学习更新框架。
在本实施例中,元学习框架如图3所示,其元学习超参数有两个,分别为梯度更新学习率α和元学习更新学习率β,α决定梯度更新的步长,β决定元学习更新的步长,α和β均为自定义参数,均通过若干次试验得到。
s500、根据元学习框架,通过各训练任务集对pointnet网络模型进行训练,请参照图4,其具体训练过程如下:
s501、对于每个训练任务集,从中随机采样一批任务,对于该批任务中的每个任务,将其中的少量数据作为元训练数据集,将其中的其它数据作为元测试数据集,利用元学习框架的梯度更新框架调用pointnet网络模型,将元训练数据集输入至pointnet网络模型得到元训练损失值,利用元训练损失值计算期望参数,将元测试数据集输入至网络参数为期望参数的pointnet网络模型,得到元测试损失值。
在本实施例中,元训练损失值的计算公式如下:
根据元训练损失值计算期望参数,通过如下公式实现:
其中,θ为模型f的初始化参数,θi′为期望参数值,(x(j),y(j))为所选ti任务中的数据样本对,
利用元学习框架的元学习更新框架调用pointnet网络模型,将所有的元测试损失值输入元学习更新框架,对各任务的元测试损失值进行求和得到训练损失值,然后根据训练损失值对pointnet网络模型的参数计算元学习更新值,并利用元学习更新值更新pointnet网络模型的参数。
在本实施例中,训练损失函数通过如下公式实现:
其中,基于训练损失值计算元学习更新值,优化pointnet网络参数,通过如下公式实现:
其中,β是元学习更新学习率。
s502、重复步骤s501,直到元学习更新值收敛,完成pointnet模型的训练,保存训练好的pointnet网络模型,如图2所示。
s600、获取新环境3d点云数据集,对新环境3d点云数据集进行预处理,从新环境3d点云数据集中随机抽取k类数据,每类数据中取m个数据形成一个k-waym-shot任务,选取若干个k-waym-shot任务构成测试任务集。
s700、将测试任务集输入训练好的pointnet网络模型进行测试,直至模型的梯度更新值收敛,完成3d点云语义分割的迁移。
本发明所述基于元学习的3d点云语义分割迁移方法,具有以下特点:
1)泛化性能好。在迁移训练过程中,可以通过少量不同类别的训练样本组成多个训练任务,利用元学习框架学习多个类别的通用特征,提高模型的泛化性能。在迁移训练过程中,通用的初始化参数同样适用于新环境任务。与随机初始化网络参数和加载某特定任务的神经网络参数相比,元学习训练的参数作为迁移过程中的初始化参数效果更好。
2)收敛速度快。在新环境任务中通过加载已经训练完成的模型,使用最优的相似任务参数,仅仅训练几步即可完成新任务的室内场景语义分割方法的训练。由于加载的训练模型参数是多种相似任务的最优参数,与原任务越相似的新任务,最优初始化参数越有利于新任务的训练,相比于重新训练神经网络和微调神经网络可以更快收敛,减少训练时间。
3)可迁移性强。本发明通过元学习框架学习了不同任务的语义分割能力,确保学习特征可以适用于不同的迁移环境,提高了模型的泛化性能。相比在单一环境任务的室内场景语义分割的神经网络的迁移,本发明的可迁移性更强。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
1.一种基于元学习的3d点云语义分割迁移方法,其特征在于,包括以下步骤:
s100、构建pointnet网络模型;
s200、输入训练环境的3d点云数据集,将3d点云数据集分成若干子数据集,利用pointnet网络模型检测各子数据集的相似度,选取相似度最小的n个子数据集分别作为场景语义分割迁移的n个训练数据集;
s300、对于每个训练数据集,对其中的数据进行预处理,利用其中不同类别的数据形成训练任务集;
s400、构建元学习框架,其包括梯度更新框架和元学习更新框架;
s500、根据元学习框架,通过各训练任务集对pointnet网络模型进行训练;
s600、获取新环境3d点云数据集,对新环境3d点云数据集进行预处理,利用其中不同类别的数据形成测试任务集;
s700、将测试任务集输入训练好的pointnet网络模型进行测试,直至模型的梯度更新值收敛,完成3d点云语义分割的迁移。
2.根据权利要求1所述基于元学习的3d点云语义分割迁移方法,其特征在于,所述步骤s200中,训练数据集的选择方法具体包括:设定相似度阈值,将相似度小于相似度阈值的子数据集作为所述训练数据集。
3.根据权利要求1所述基于元学习的3d点云语义分割迁移方法,其特征在于,所述步骤s200中,训练环境分成六个区域,子数据集有六个,所述子数据集与所述区域一一对应,所述训练数据集至少有2个。
4.根据权利要求1所述基于元学习的3d点云语义分割迁移方法,其特征在于,所述步骤s300具体包括:对于每个训练数据集,从中随机抽取k类数据,每类数据中取m个数据形成一个k-waym-shot任务,选取若干个k-waym-shot任务构成训练任务集;各训练数据集的训练任务集不同。
5.根据权利要求4所述基于元学习的3d点云语义分割迁移方法,其特征在于,所述步骤s400中,元学习框架的元学习超参数有两个,分别为梯度更新学习率α和元学习更新学习率β,α和β均为自定义参数,均通过若干次试验得到。
6.根据权利要求5所述基于元学习的3d点云语义分割迁移方法,其特征在于,所述步骤s500具体包括:
s501、对于每个训练任务集,从中随机采样一批任务,对于该批任务中的每个任务,将其中的少量数据作为元训练数据集,将其中的其它数据作为元测试数据集,利用元学习框架的梯度更新框架调用pointnet网络模型,将元训练数据集输入至pointnet网络模型得到元训练损失值,利用元训练损失值计算期望参数,将元测试数据集输入至网络参数为期望参数的pointnet网络模型,得到元测试损失值;
利用元学习框架的元学习更新框架调用pointnet网络模型,将所有的元测试损失值输入元学习更新框架,对各任务的元测试损失值进行求和得到训练损失值,然后根据训练损失值对pointnet网络模型的参数计算元学习更新值,并利用元学习更新值更新pointnet网络模型的参数;
s502、重复步骤s501,直到元学习更新值收敛,完成pointnet模型的训练。
7.根据权利要求1所述基于元学习的3d点云语义分割迁移方法,其特征在于,所述步骤s600具体包括:获取新环境3d点云数据集,从新环境3d点云数据集中随机抽取k类数据,每类数据中取m个数据形成一个k-waym-shot任务,选取若干个k-waym-shot任务构成测试任务集。
技术总结