基于深度学习的矢量曲线化简方法、模型及模型建立方法
文献发布时间:2023-06-19 13:49:36
技术领域
本发明属于曲线化简领域,特别涉及一种基于深度学习的矢量曲线化简方法、模型及模型建立方法。
背景技术
矢量曲线要素(如海岸线、河流、等高线、境界线等)是矢量电子地图数据库中最常见和最基本的地图要素之一,线化简在生成多比例尺电子地图中起着十分重要的作用。在数字地图应用中,大数据集的矢量线会导致数据传输和显示需要更长的响应时间,曲线化简可实现数据压缩和多尺度缩放可视化。因此曲线化简是矢量电子地图在互联网上传输或多尺度缩放时必不可少的技术。曲线化简的目标是在保持曲线的本质形状特征和空间位置坐标精度的基础上尽可能删除不重要的折点。其化简结果除了受明确的制图规范约束外,还受制图人员的经验、主观认知、视觉感受等诸多模糊因素的影响。
关于矢量曲线的化简方法,自上世纪70年代以来,研究者们提出了很多经典的线化简算法,如Douglas-Peucker(DP)算法,Li-Openshaw算法,Visvalingam-Whyatt算法,垂比弦法,Wang-Muller算法等。以上方法的提出有力提升了线要素化简的能力,但是这些算法的化简效果高度依赖于算法参数和阈值的确定,难以做到对化简力度的自动控制。
机器学习是近些年来用来提高制图综合自动化程度的一种解决方案,研究人员用它来自动协调各种几何变换知识,从而克服传统方法中存在的不足。机器学习提供了一种不需要对化简约束进行提前抽样的基于数据驱动的制图综合范式,能够通过学习某一制图综合环境下隐藏在制图员已有的化简案例中的特征指标间的模糊关系,来得到适用于同样环境下的与制图员思维相近的综合决策模型。这些基于机器学习的线化简方法有力地推动了线化简智能化的进程,但也需要很多人工专业知识的干预,其自动化、知识化和智能化程度尚需加强。
随着机器学习向深度学习技术的发展,算法的学习性能显著提高,基于深度学习的方法在栅格图像处理中取得了成功的应用,代表着栅格数据泛化的一个突破。基于深度学习的方法被认为在提高制图综合的效率和自动性上具有较大的应用前景。但仍存在以下一些问题:1)基于深度学习方法目前采用的都是语义分割或者对抗生成网络的思想,线要素的化简可以视为线要素化简单元的取舍二分类问题,目前从案例学习角度出发基于目标检测思想的运用还比较少;2)线要素在栅格化后生成的训练数据会出现信息稀疏的问题而导致模型训练效果不佳;3)以往的工作中线要素的化简结果都停留在栅格阶段,或将化简后的栅格结果通过栅格转矢量之后再使用DP算法对提取结果进行化简,不能实现网络的端到端训练。而且将栅格转矢量后,原来的矢量坐标发生了改变,坐标精度也存在损失。
发明内容
本发明的所要解决的技术问题是提供一种基于深度学习的矢量曲线化简方法、模型及模型建立方法。
本发明解决上述技术问题的技术方案如下:
基于深度学习的矢量曲线化简模型建立方法,包括以下步骤:
步骤1、从现有的化简前的矢量曲线数据集提取一个化简前的矢量曲线数据,从化简后矢量曲线数据集中选取对应的化简后的矢量曲线数据,分别利用化简前矢量曲线数据生成候选框数据和栅格数据,利用对应的化简后矢量曲线数据构建标签数据;
步骤2、用预设像素大小的裁剪框对生成的栅格数据、候选框数据和对应的标签数据进行切割,将完全包含在框内的数据保留,框外的数据舍去,分别得到切割后的栅格数据、切割后的候选框数据和切割后的标签数据,将对应矢量曲线同一位置的切割后的栅格数据、切割后的候选框数据和切割后的标签数据作为同一个训练样本进行存储;
步骤3、重复进行步骤1-2,得到包括多个训练样本的训练样本集;
步骤4、从训练样本集中提取一个训练样本,对训练样本中的切割后的栅格数据进行曲线要素特征提取,得到栅格线要素的特征图数据;使用训练样本中的切割后的候选框数据,从栅格线要素的特征图中裁出候选框对应的折线弯曲的特征图;
步骤5、将步骤4从特征图中裁出的折弯特征图执行ROI Pooling操作,得到统一大小的折线弯曲的特征图;
步骤6、将步骤5中得到的统一大小的折线弯曲的特征图利用二分类模型进行分类,依据IoU指标对候选框的正负进行判断,将与真实标签完全重合即IoU=1的候选框判断为正,剩余候选框判断为负,保留判断为正的候选框,对判断为负的候选框不进行处理直接忽略;
步骤7、判断当前迭代次数是否大于最高迭代次数,若是,则转到步骤8,若否,则利用损失函数对步骤6中所保留的候选框与训练样本中的切割后的标签数据进行损失值计算,判断损失函数是否收敛,若是,则转到步骤8,若否,则通过Adam优化器更新权重矩阵和偏置向量后,迭代次数加1,转到步骤4;
步骤8、保存最后一次的权重矩阵和偏置向量参数,得到基于深度学习的矢量曲线化简模型。
进一步的,所述步骤1中利用化简前矢量曲线数据生成候选框数据的方法包括以下步骤:
步骤1.1、从训练样本数据集中的化简前矢量曲线数据中逐个取出线要素;
步骤1.2、获取线要素上的所有坐标点,假设所有坐标点为(P
进一步的,所述步骤1中利用化简前矢量曲线数据生成栅格数据的方法包括以下步骤:
从训练样本数据集中的化简前矢量曲线数据中逐个取出线要素,逐个进行栅格化,在对曲线上每一个坐标点进行栅格化时,记录其栅格化后的行列值及对应的原始坐标值,栅格化时图片分辨率根据Li-Openshaw最小可分辨率理论计算公式Fc=D/S来计算,其中,Fc为栅格图像的像素大小,S为要素比例尺,D为最小可分辨对象。
进一步的,所述步骤1中利用对应的化简后矢量曲线数据构建标签数据方法具体为:获取化简后矢量曲线要素上的所有坐标点,假设所有坐标点为(P
进一步的,步骤2中,用预设像素大小的裁剪框对生成的栅格数据、候选框数据和对应的标签数据进行切割的方法为,利用预设像素大小的裁剪框作为滑动窗口对待切割的数据从上到下,从左到右依次按照重合度为50%的形式进行连续分割,直到滑动窗口完全覆盖整个要素线的范围停止滑动裁剪,若滑动的裁剪框中含有待切割的数据则保留,若没有则舍弃。窗口滑动时,相邻左右或上下两个框有50%的部分重叠,重叠部分的数据同时作为两个框内的数据。
进一步的,步骤4中采用MobileNetv2对切割后的栅格曲线数据进行要素特征提取。
进一步的,还包括对二分类模型进行训练的步骤,具体训练方法为,根据每个训练样本中的候选框数据构建候选框样本,对应标签数据作为正样本,标签数据的个数决定当前训练样本中的候选框负样本个数,依据IoU指标来对候选框样本进行评分,然后按照IoU得分对候选框样本进行从高到低排序,设当前有n个正样本,则将IoU排名最后n个设置为负样本,根据正负样本的数量对二分类模型的参数进行调整。
进一步的,步骤7中的损失函数为交叉熵损失函数。
基于深度学习的矢量曲线化简模型,由上述的方法建立得到。
基于深度学习的矢量曲线化简方法,包括以下步骤:
步骤1、利用待化简矢量曲线数据生成候选框数据和栅格数据;
步骤2、用预设像素大小的滑动窗口框对生成的栅格数据、候选框数据按照从上到下,从左到右进行重合度为50%的形式连续分割,将完全包含在框内的数据保留,框外的数据舍去,分别得到切割后的栅格数据、切割后的候选框数据,将对应矢量曲线同一位置的切割后的栅格数据、切割后的候选框数据作为同一个测试样本进行存储,得到包括多个测试样本的测试样本集;
步骤3、从测试样本集中提取一个测试样本,使用基于深度学习的矢量曲线化简模型对测试样本中的切割后的栅格数据进行曲线要素特征提取,得到栅格线要素的特征图数据;使用测试样本中的切割后的候选框数据,从栅格线要素的特征图中裁出候选框对应的折线弯曲的特征图;
步骤5、将步骤4从特征图中裁出的折弯特征图执行ROI Pooling操作,得到统一大小的折线弯曲的特征图;
步骤6、将步骤4中得到的统一大小的折线弯曲的特征图利用已训练好的二分类模型进行分类,对判断为正的候选框,保留该候选框对应的矢量曲线折弯部分的首尾两个点作为该折弯化简后的结果,对判断为负的候选框不进行处理直接忽略;
步骤7、按坐标顺序顺次连接化简后的结果中的首尾两点,得到化简后的矢量折线。
本发明的有益效果为:1、提出了一个可端到端训练的神经网络模型,运用基于候选框的目标检测思想,直接提取出冗余折线弯曲并进行删除,保留要素特征点,模型智能化程度高,综合性能强,鲁棒性高,能被复用到多场景多尺度的线化简;2、提出一种新的候选框生成方式,利用了曲线上的顶点坐标,提高了模型的训练效率;3、实现了化简结果直接矢量化,避免了化简结果栅格转矢量过程中的信息损失及重复化简操作。
附图介绍
图1为本发明的模型训练方法流程示意图;
图2为本发明的模型建立方法流程示意图;
图3为候选框生成过程示意图;
图4为单个曲线切割示意图;
图5为真实曲线及部分候选框切割过程及结果;
图6为模型实验时的准确率变化示意图;
图7为复杂矢量曲线化简结果图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
1、训练样本数据获取
通过网上公开的数据集获取矢量曲线数据作为训练样本数据集,训练样本数据集中至少需要包含一组化简前的矢量曲线数据集(分辨率高)和对应的化简后矢量曲线数据集(分辨率低)。本文采用GSHHG数据集。该数据集有5种分辨率,分别为Full,High,Intermediate,Low,Crude;其中Full resolution的数据比例尺为1:100000,剩下每个比例尺一次减少80%的坐标数量和质量。本文选用Full resolution和High resolution数据分别作为训练样本和标签。
2、数据预处理
数据预处理包括根据训练样本数据集中的化简后矢量曲线数据构建标签数据,根据化简前矢量曲线数据生成候选框数据和栅格数据。下面分别给出其构建方法。
1)构建标签数据方法:从训练样本数据集中的化简后矢量曲线数据中逐个取出线要素,依次获取线要素上相邻两个点坐标的外接矩形框生成标签数据,记录为(xmin,ymin,xmax,ymax)。
2)生成候选框数据方法:Faster R-CNN是典型的目标检测神经网络,它采用Region Proposal Network(RPN)的方法来生成候选框。RPN引入了锚点的概念,即位置和大小固定的框。通过遍历特征图并在每个锚点上生成k个引用框,然后计算框的Intersection-over-Union(IoU,预测框与真实框的重合度)来判断框的得分,并求出位置修正,从而通过模型训练可以使生成的候选框接近真实框。然而,如果使用RPN生成候选框,图像上每一个像素点都会生成k个候选框,而实际上折线在图像上所占的像素是很少的,这就导致会生成大量无用的候选框,浪费计算资源。考虑到每张曲线图上的折点数量是一定的,因此本文以曲线上每两个折点及其中间的点所构成的弯曲的正外包矩形作为候选框。即从训练样本数据集中的化简前矢量曲线数据中逐个取出线要素,然后获取该线要素上的所有坐标点,假设为(P
如图3所示,左图以七个点的线条来解释候选框的生成过程,右图为实际图像中生成的候选框。
3)生成栅格数据方法:
由于目标检测的深度学习模型都是采用图片作为数据输入,因此需要先将矢量曲线数据转换为栅格图片。从训练样本数据集中的化简前矢量曲线数据中逐个取出线要素,逐个进行栅格化。由于矢量数据转栅格后,坐标精度会损失,为了能在化简后所获得的矢量线坐标保留原始的空间坐标,在对曲线上每一个坐标点进行栅格化时,记录其栅格化后的行列值及对应的原始坐标值,以便化简后通过点所在的行列值找到对应的原始空间坐标值。对于栅格化时图片分辨率大小的确定问题,可以根据Li-Openshaw最小可分辨率理论计算公式Fc=D/S来计算,其中,Fc为栅格图像的像素大小,S为要素比例尺,D为最小可分辨对象(SVO),一般取SVO=0.2mm,由于本实验采用的数据集比例尺为1:100000,所以图像的分辨率Fc=D/S=0.2mm*100000=20m。
4)数据切割:标签数据、候选框数据和栅格数据构建好后,按逐个线要素生成栅格图像的顺序,用像素大小为1024*1024的框对生成的栅格数据、候选框数据、以及对应的标签数据进行切割,将完全包含在框内的数据保留,框外的数据舍去,分别得到切割后的栅格数据、候选框数据和标签数据。在执行数据切割时,常用的切割方法有基于固定窗口和基于对象的方法,但是固定窗口分割会破坏要素完整性,基于对象的分割则会改变要素的几何形状。本文采用的图像分割方法为依次取出一条线要素,并根据线要素的范围大小,从上到下、从左到右按照重合度为50%的滑动窗口进行分割,这样的分割方法主要有两个优点,一是尽量保持要素的完整性,确保每个标签都能被保留,二是每一个分割结果中只会有一个要素,从而最后的提取结果能够方便地对应回要素中去。
如图4-5所示为本发明采用的图像分割方法,融合了按对象分割和按固定窗口分割的方法。
3、栅格线要素特征提取
基于切割后相同大小(1024*1024)的栅格图片数据集,采用MobileNetv2来提取栅格化后的曲线要素特征,从而得到栅格线要素的特征图数据。(MobileNets是Google提出的一种轻量级的神经网络。相较于标准的卷积操作,MobileNets提出了深度可分解卷积,将标准卷积分为一个1*1的点卷积和一个深度卷积,这种方法能够有效减少计算量,降低模型的大小。)使用第2步中第2)点生成的候选框,从特征图中裁出候选框对应的弯曲特征图像,此时,由于生成的候选框大小长宽比不一致,无法进行分类回归计算,因此采用ROI Pooling统一折线弯曲的特征图大小。
4、ROI Pooling
由于第3步中根据生成的候选框从特征图中裁出的折弯特征图大小比例不一致,因此执行ROI Pooling操作统一特征图的大小。ROI Pooling是Fast R-CNN提出的用于解决提取的目标候选框(ROI)大小不同的一层最大池化采样层。由于卷积网络要求输入图像大小一致,而图像上目标对象的大小往往不同,如果采用裁剪或缩放等手段来改变目标对象大小势必会改变它的形状特征,因此ROI Pooling借鉴了SSPNet(Spatial PyramidPooling)思想,通过特定的池化操作来生成一定大小的图像。ROI Pooling的具体操作如下:基于栅格线要素的特征图数据(feature map)和对应切割后得到候选框数据的n个ROI坐标,根据原图与feature map的比例,将ROI映射到feature map对应的位置上(经过前面卷积层的特征提取图片尺寸已经下降了32倍,因此输入的ROI也要缩小32倍),将映射后的区域划分为相同的sections(section的数量由输出的维度大小决定,本实施例的网络结构输出大小为7*7),然后对每个section做max pooling操作,从而得到了统一大小的折线弯曲的特征图。
5、数据二分类
在执行完第4步后,需要对折弯特征图进行二分类判断,选择是否要保留此折弯或删除此折弯及组成折弯的折点。为了能准确执行特征图的二分类判断,需要首先对分类网络进行训练得到最优参数模型。在训练阶段,根据化简标签生成正样本,然后依据Intersection-over-Union(IoU)指标来生成正负样本,并按照IoU得分对剩下的候选框进行排序,设有n个正样本,则将IoU排名最后的n个设置为负样本,这样做能在每幅图正样本较少的情况下平衡正负样本的个数,从而减少训练误差。在测试阶段,将根据步骤2~4生成的统一大小的折线弯曲的特征图作为输入,使用训练得到的最优参数模型对输入进行正负判断。对判断为正的特征图,删除生成候选框所对应的点序列,也即删除提取出的冗余弯曲,仅保留首尾两点作为化简后的曲线上的折点;最后按顺序连接所有保留的折点,生成化简后的矢量折线。
6、计算损失值
使用损失函数对步骤5训练过程中使用模型的参数预测出的结果与真实标签之间的差异进行表示,并使用Adam优化器往损失函数减少的方向优化各个参数的设置,从而得到损失值最小的最优参数模型。本文所采用的分类损失函数为交叉熵损失函数,交叉熵可用于度量两个概率分布p,q之间的差异,其中p表示真实分布,q表示非真实分布,H(p,q)为交叉熵:
交叉熵用在神经网络中作为损失函数时,p表示真实标记的分布,q则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量p与q的相似性。
因为本文评估的损失是二分类损失,因此交叉熵可以写成:
loss=-[plnq+(1-p)ln(1-q)] (2)
二分类对于批量样本的交叉熵计算公式是:
其中m表示样本个数。步骤5中训练阶段的目的就是使这个损失函数达到最小。
7、模型训练
整个模型训练过程如图2所示。本文的模型训练首先采用5个epoch进行预热训练,将模型的学习率逐渐加到0.001,然后进行20个epoch的训练,epoch的学习率从0.001开始,当连续2个epoch的loss function不下降时,学习率变为原来1/3。本文所采用的使用南岛和北岛的海岸线作为训练数据集,以Stewart Island海岸线作为测试数数据集,模型的输入图像大小为1024*1024,窗口重叠率为50%,栅格的分辨率为20m。在模型中添加了批量归一化层来减少模型的损失,加速模型收敛,使用adam优化器对模型损失进行优化。
在预训练模型的基础上,使用本文的训练数据集重新训练30个epoch,实验的准确率变化如图6,前25个值为预训练模型的准确率,后30个epoch为对预训练模型进行微调得到的准确率,训练效果在总共训练55个epoch时基本趋于稳定,模型的准确率为0.86。
8、实验结果
利用训练好的模型对测试数据进行试验验证,试验结果如图7所示。从化简结果可视化可以看出,模型对点的化简力度比较大,形状保留较好,且结果中不存在自相交的部分,可以适应复杂曲线的自动化简。模型的智能性也很高,预训练模型可以被多次利用,如有不同程度的化简需求,不需要再反复调参寻求最合适的参数,只需要输入不同的训练数据即可,这对实现制图综合的自动化具有重要意义。
根据实验结果得知,本文提出的方法在复杂曲线的化简上具有较高地学习能力,能够做到较高精度的化简,同时模型的适用性强,鲁棒性高,能被多次利用,运用到不同的化简尺度中,只需对预训练模型进行微调即可达到较高精度,适用于多任务场景。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 基于深度学习的矢量曲线化简方法、模型及模型建立方法
- 基于深度学习的建筑物矢量轮廓化简方法、模型及模型建立方法