周其当,刘春晓,吕金龙,冯才博
1.浙江工商大学信息与电子工程学院,杭州 310018;2.浙江工商大学计算机科学与技术学院,杭州 310018
曲线图是数据呈现的重要形式,但是在没有原始数据的情况下难以查询其中蕴含的具体数值,这给数据重用、聚合与分析造成很多不便。学术研究和科研调查所需要的很多数据资料是以图表的形态呈现的,当需要用到图表中的原始数据做进一步分析计算的时候,难以高效准确地提取图表中的数据就成了科研与学术进步的一大障碍。
对于图数转化,现在有很多像Engauge Digitizer、OriginLab、GetData Graph Digitizer 和Graph Digitizer Scout 等图数转化软件,但是它们都需要大量的人工辅助操作。1)用户通过鼠标选取曲线上的像素点,软件会选出与之颜色相似的像素来提取曲线。然而,当曲线图中其他元素的颜色与曲线颜色相似时,将会选中其他元素,干扰曲线提取。2)由于曲线具有一定的宽度,同一个X 轴坐标对应曲线上的多个像素点,难以判断待测点的具体位置,这给图数转化的准确度带来了一定的挑战。曲线细化方法可以减小曲线线宽对图数转化造成的误差。ZS(zhang-suen)曲线细化方法(Zhang 和Suen,1984)对曲线图中曲线的细化结果为曲线的中心线。据观察,曲线图中的曲线在极值点附近的细化结果会更靠近端点,在两极值点中间的曲线细化结果则表现出不规则的特点。由于Zhang和Suen提出的曲线细化方法并不具备自适应细化曲线的能力,所以准确度较低。3)输入坐标轴上的坐标标签的最大值并用鼠标标记最大值和零点的位置,建立起坐标轴坐标与像素坐标的变换关系公式。由于用户鼠标点击的位置会有一定的偏差,无法精确地标记最大值和零点的位置,这进一步增加了图数转化的误差。总之,上述图数转化软件需要大量的人工操作,费时费力且准确度难以保证。全自动高精度的图数转化技术和软件属于目前的技术空白,相关核心算法亟待研发。
对于曲线提取方面,考虑到曲线提取是图数转换的关键一步,它跟边缘检测方法具有较高的相关性,在此对现有边缘检测方法在曲线提取中的应用展开讨论。现有的边缘检测方法可以分为图像处理和深度学习两种方法。基于图像处理的传统边缘检测方法通常使用低层次视觉信息来获取边缘,如Canny 算子(Canny,1986)使用了颜色和对比度等信息。然而,它们容易受到曲线图中的背景色、网格线、曲线颜色和线宽以及坐标轴尺度等复杂非数据因素的干扰,做不到只提取用户关心的曲线,所以还需要使用基于霍夫变换的直线检测方法去除网格线,或需要设计基于像素遍历的坐标轴去除等启发式规则,甚至需要通过大量繁杂的实验来微调众多参数或阈值才能达到一定的曲线提取效果。操作过程复杂,准确度较低且运行速度慢。
目前,基于深度学习的边缘检测方法已经突破了传统边缘检测方法的限制,通过大量的训练数据学习神经网络模型参数,借助图像的深层语义信息自适应地提取出用户关心的曲线。虽然神经网络模型中的卷积层和池化层增加了不同尺度的语义信息,但是池化操作会导致边界模糊。Xie 和Tu(2015)提出的HED(holistically-nested edge detection)通过深监督学习丰富的层次特征,加强边缘特征的提取性能。U-Net(Ronneberger 等,2015)在全卷积神经网络的解码器和编码器相应层之间添加跳跃连接,丰富了特征的位置信息。为了解决HED 计算量大和准确度不高的问题,Liu等人(2017)提出的RCF(richer convolutional features for edge detection)利用侧结构引导把Simonyan 和Zisserman(2015)的VGG(visual geometry group network)的部分特征堆叠起来,从而获得更加丰富的特征信息,大幅度提高了边缘检测的性能。为了使网络更容易收敛,He 等人(2019)在RCF 的基础上提出了双向级联结构引导每一部分网络的训练。由于RCF 的侧结构引导中含有多次插值得到的上采样层,模糊了边缘特征,使网络的性能受到了一定的限制。Soria 等人(2020)提出的DexiNed(dense extreme inception network)中的上采样层主要由卷积层和反卷积层组成,这使得上采样的特征更加清晰。Deng 和Liu(2020)提出了一种端到端的边缘检测方法,有效地利用多尺度和多层次特征,进一步丰富特征信息。受到传统边缘检测算子的启发,Su 等人(2021)提出的PiDiNet(pixel difference networks for efficient edge detection)引入了基于图像处理的传统边缘检测方法,提高了边缘检测的准确度,但是它的边界依然较模糊。Pu等人(2022)提出的EDTER(edge detection with Transformer)使用了计算量巨大的ViT(vision Transformer)。受到这些方法的启发,本文提出了基于侧结构引导与拉普拉斯卷积的曲线提取神经网络(side structure guidance and Laplace convolution based curve extraction neural network,SLCENet),它的侧结构引导和拉普拉斯模块有效地保留了清晰的曲线边缘,并利用深监督(Lee 等,2014)进一步加强了曲线提取的性能。
本文的主要贡献如下:1)提出基于曲线提取与细化神经网络的图数转化算法,实现全自动高精度的图数转化,并大大提高了图数转化的速度;2)提出基于侧结构引导与拉普拉斯卷积的曲线提取神经网络SLCENet,在保证准确度和鲁棒性的同时,兼具运行速度快和计算量小的特点;3)提出基于曲线走势特征和多层感知机的曲线细化方法(curve trend features and MLP based curve thinning method,CMCT),实现高精度的曲线细化。
本文提出了一种基于曲线提取与细化神经网络的图数转化算法,图1 是整体框架,曲线图首先通过基于侧结构引导与拉普拉斯卷积的曲线提取神经网络SLCENet 提取曲线,然后用基于曲线走势特征和多层感知机的曲线细化方法CMCT 细化曲线,利用PaddleOCR(Paddle optical character recognition)(Li等,2022)识别X坐标轴上的坐标标签及其X像素坐标位置,并建立变换关系式,具体为
图1 整体框架Fig.1 Overview of our technical framework
利用PaddleOCR 识别Y坐标轴上的坐标标签及其Y像素坐标位置,并建立变换关系式,具体为
最后通过坐标变换完成图数转化。
1.2.1 网络结构
基于深度学习的边缘检测方法通常需要多个卷积层和池化层,这虽然增加了不同尺度的语义信息,但是多个池化操作会导致边界模糊。另外,侧结构引导中的每一层网络也不可能学习到跟曲线掩膜图GT完全一样的特征。为了解决上述问题,本文设计了基于侧结构引导与拉普拉斯卷积的曲线提取神经网络SLCENet,以修改过的ResNet(deep residual network)(He 等,2016)作为骨干网络,通过侧结构引导和拉普拉斯模块来加强曲线提取性能,并且约束每一层网络的输出,使每一层网络更好地学习到曲线掩膜图中的特征。
SLCENet 如图2 所示,先通过80 个卷积核把输入的3通道图像变为80个通道的特征。侧结构引导包含4个不同的尺度,每个尺度的主干网络由4个残差块组成。每个残差块由depth-wise 卷积、ReLU(rectified linear unit)、卷积和残差组成。本文在侧结构引导中设计了能进一步丰富多尺度曲线信息的多尺度膨胀模块(multi-scale dilation module,MDM)、减少特征图中噪点的降噪模块(noise reduction module,NRM)和加强曲线细节提取性能的拉普拉斯模块(Laplace module,LM)。侧结构引导中的曲线特征P1,P2,P3,P4通过反卷积放大到输入图像的尺寸并堆叠起来,再通过1 个卷积核降维和Sigmoid 归一化得到曲线掩膜图E1。曲线特征P1,P2,P3,P4分别通过双线性插值放大到输入图像的尺寸,然后通过Sigmoid 归一化得到曲线掩膜图E2,E3,E4,E5。曲线掩膜图E1,E2,E3,E4,E5都与GT做监督,使每一层网络更好地学习到GT中的细节。
图2 SLCENet网络架构图Fig.2 SLCENet architecture((a)entire architecture;(b)LM;(c)NRM;(d)MDM)
如图2(a)所示,拉普拉斯模块首先通过反卷积将特征放大到输入图像的尺寸,再通过拉普拉斯卷积得到特征LA1。由于曲线边缘的梯度较大,拉普拉斯模块使用图像插值缩放前后的像素差获取图像边缘,来提高曲线边缘的清晰度。通过1 个卷积核把3 通道的输入图像变为1 个通道的特征LA2,并用双线性插值缩小到输入图像尺寸的1/2 再放大到原尺寸得到特征LA3,输入图像的边缘梯度LA4=|LA2-LA3|。如果LA4>θ,加入该处的拉普拉斯卷积特征LA=LA1(LA4>θ),能加强曲线提取的性能。
1.2.2 损失函数
本文对曲线掩膜图E1,E2,E3,E4,E5使用了深监督。一般来说,曲线掩膜图中曲线的像素数量远远小于非曲线的像素数量,所以本文使用了带权重的交叉熵损失(周志华,2016)平衡损失函数对曲线和非曲线像素的惩罚。对于曲线掩膜图Ej中第i个像素的值来说,它的损失函数为
式中,GTi表示GT中第i个像素的值,γ表示GT中值为0的像素占所有像素的比例,λ是一个超参数。网络总的损失函数为
为了减小曲线线宽对图数转化的误差,并综合考虑计算复杂度和准确度,设计了10 个能够反映曲线走势的特征,提出了基于曲线走势特征和多层感知机的曲线细化方法CMCT,实现了高精度的曲线细化目标。
本文的多层感知机包含5 个隐藏层,每层都含有200个连接点。曲线掩膜图E1通过二值化操作得到曲线二值图M,再把待测点m的X坐标轴坐标通过公式变换成X像素坐标Xm。如图3 所示,曲线二值图M中第Xm列曲线上下边缘的Y像素坐标差为Hm,曲线二值图M中第Xm列曲线上边缘与真实位置的Y像素坐标GTym的差为GTm,多层感知机学习的目标A=GTm/Hm。
图3 曲线细化目标参数Fig.3 Curve thinning target parameters
10个曲线走势特征含义如图4所示,具体计算为
图4 曲线走势特征参数Fig.4 Parameters of curve trend feature
本文制作了一个曲线图图数转化数据集,包含曲线上关键点的坐标轴坐标、曲线图和曲线掩膜图。首先随机生成关键点坐标,然后在matplotlib 中设置背景色、网格线、曲线线宽和曲线颜色等变量都为随机值,画出曲线图。接下来在matplotlib 中关闭网格线和坐标轴等干扰,画出无干扰的曲线图并通过上下遍历曲线边缘,得到曲线掩膜图。
数据集中的一组数据如表1 和图5 所示,表1 中的第2列是关键点的X坐标轴坐标,第3列是关键点的Y坐标轴坐标。
表1 关键点数据示例Table 1 Example of key point data
图5 数据集示例Fig.5 One example of our dataset((a)curve image;(b)curve mask)
评价指标分为曲线提取和图数转化两部分。对于曲线提取部分,F-measure(Sokolova 等,2006)是精度P和召回率R(Sahiner 等,1997)的谐波平均值,具体为
式中,本文的β=1。
使用全局最优阈值指标(optimal dataset scale,ODS)和局部最优阈值指标(optimal image scale,OIS)来评价曲线提取的准确度。ODS是对所有的测试图像共同使用0 到255 中的一个阈值进行二值化操作,求得最大的平均Fβ。OIS 是对每幅测试图像分别使用0到255中的一个阈值进行二值化操作,求得最大的平均Fβ。
对于图数转化部分,使用归一化均值误差(normalized mean error,NME)和归一化平方误差(mormalized square error,NSE)来评价图数转化的准确度,计算为
本文模型使用NVIDIA RTX 3090 在PyTorch 框架中训练的。在训练阶段使用了2 000幅图像,输入图像尺寸为640 × 480 像素,样本批处理大小为9,λ=0.86,θ=0.04。使用零填充来使输出特征与输入特征的大小一致;在拉普拉斯模块中,使用对称填充来使输出特征与输入特征的大小一致。本文选择Adam(Kingma 和Ba,2017)作为优化器,初始学习率设置为0.005,每经过10 轮下降到原来的30%,总共训练150轮。
为了验证本文算法的准确性和快速性,与现有方法进行比较。
2.4.1 可视化比较
图6 展示了在受到JPEG 压缩攻击的曲线图中SLCENet 和现有方法曲线提取的可视化比较。Engauge Digitizer 在图数转化中得到了广泛的应用,但是由于使用了启发式规则和人工交互辅助的现有方法,当图像内容对比度低、干扰多时,难以获取清晰的曲线掩膜图。HED、RCF 和DexiNed 则难以实现曲线提取。另外,PiDiNet 等现有方法难以去除网格线等干扰,时常出现无法完全去除网格线或去除了部分曲线的情况。而SLCENet能自适应提取清晰的曲线掩膜图,尤其是在去除网格线和坐标轴等干扰中表现出较好的性能。
图6 曲线提取效果的视觉比较Fig.6 Visual comparison of curve extraction effects((a)curve image;(b)curve mask;(c)Engauge Digitizer;(d)HED;(e)RCF;(f)DexiNed;(g)PiDiNet;(h)SLCENet)
2.4.2 指标比较
本文测得了1 000 幅曲线图的ODS、OIS 和算法运行耗时(Time)指标来评价曲线提取的性能,其中,ODS和OIS越高越好,Time越低越好。
表2 展示了SLCENet 和现有方法的曲线提取性能指标比较。根据实验结果可得,SLCENet 的ODS和OIS 都远超现有方法。虽然运行速度不及HED、RCF 和DexiNed,但是它们的曲线提取效果太差,难以满足用户需求。在兼顾曲线提取准确度和运行速度的情况下,SLCENet达到了最好的性能。
表2 曲线提取性能指标比较Table 2 Comparison of curve extraction performance
为了更进一步说明SLCENet优越的曲线提取性能,用加入了JPEG 压缩、图像缩放和添加噪声等攻击类型生成的曲线图进行实验,如表3所示。
表3 攻击数据集曲线提取性能指标比较Table 3 Comparison of curve extraction performance for attack datasets
本文测得了1 000 幅曲线图的NME、NSE 和Time 指标来评价图数转化的性能,表4 展示了本文算法与现有方法图数转化性能指标的比较。根据实验结果可得本文算法的NME、NSE 和Time 指标都要优于现有方法,运行速度更是超过了第2 名的OriginLab 90倍以上。
表4 图数转化性能指标比较Table 4 Comparison of curve-to-data conversion performance
2.4.3 消融实验
首先使用修改过的ResNet 作为比较的基本模型,然后依次加入侧结构引导、深监督、拉普拉斯模块和CMCT,来验证这些模块对算法性能的影响。
对于曲线提取部分如图7 所示,ResNet 难以实现曲线提取;侧结构引导能使网络更加有效地融合多尺度信息,学习到更加清晰的曲线特征;深监督则能使每一层网络更好地学习到曲线掩膜图中的细节,进一步提高曲线提取的准确度;拉普拉斯模块保留了曲线的细节,使曲线掩膜图更加清晰。
图7 曲线提取消融实验的视觉比较Fig.7 Visual comparison of curve extraction ablation experiment((a)curve image;(b)curve mask;(c)ResNet;(d)ResNet+side structure guidance;(e)ResNet+side structure guidance+deep supervision;(f)ResNet+side structure guidance+deep supervision+Laplace module)
曲线提取消融实验结果如表5 所示,在ODS 指标上,相比ResNet,加入侧结构引导能提高0.749 的准确度,加入深监督能再提高0.03 的准确度,加入拉普拉斯模块还能再提高0.054的准确度。
表5 曲线提取消融实验性能指标比较Table 5 Comparison of curve extraction performance for ablation experiment
对于图数转化部分如表6 所示,其中NME 和NSE 越低越好。相比ZS 曲线细化算法,CMCT 实现了高精度的曲线细化目标,大大减小了曲线线宽对图数转化造成的误差。
表6 曲线细化性能指标比较Table 6 Comparison of curve thinning performance
为了更好地说明本文CMCT 曲线细化方法的有效性,制作了曲线细化效果可视化图。如图8 所示,左下角小图为橙色小框部分的放大图,黑线是有一定宽度的原始曲线,红线是ZS 曲线细化算法的可视化结果,蓝线是本文CMCT的可视化结果。
图8 曲线细化效果的视觉比较Fig.8 Visual comparison of curve thinning effects
SLCENet 模型占用内存仅约17 MB,以轻量化的模型实现了较高的准确度。为了使CMCT 也能兼顾准确度和空间复杂度,本文使用了random forest(Breiman,2001),linear regression(Guo 等,2023),KNN(k-nearest neighbor)(Liao 等,2023),AdaBoost(adaptive boosting)(Chelmis 和Qi,2021),GBRT(gradient boost regression tree)(Gu 等,2015),Bagging(Li和Tian,2021),extra-trees(Sciavicco 和Stan,2020),decision tree(Lee 等,2022)来训练CMCT。实验结果如表7 所示,其中,NME、NSE、Parameters 和Time 都是越低越好。如果仅考虑图数转化的准确度,decision tree表现出最好的性能,但是综合考虑图数转化的准确度、空间复杂度和运行速度,本文最终选择了多层感知机。
表7 不同机器学习模型的曲线细化性能指标比较Table 7 Comparison of curve thinning performance with different machine learning models
大量的实验结果和指标都表明,本文算法以轻量化的模型实现了高精度的曲线提取与图数转化,摆脱了图数转化需要大量人工交互辅助的限制。
针对曲线图难以转化为原始数据的问题,本文提出了一个基于曲线提取与细化神经网络的图数转化算法。首先,本文提出了基于侧结构引导与拉普拉斯卷积的曲线提取神经网络SLCENet,以轻量化的模型解决了现有的曲线提取算法中池化操作会导致边界模糊的问题,提高了曲线提取的准确度。其次,为了减小曲线线宽对图数转化造成的误差,并综合考虑计算复杂度和准确度,本文设计了10 个能够反映曲线走势的特征,提出了基于曲线走势特征和多层感知机的曲线细化方法CMCT,实现了高精度的曲线细化。最后,利用PaddleOCR 识别坐标轴上的坐标标签,并建立起坐标轴坐标与像素坐标的变换关系,通过坐标变换完成图数转化。实验结果证明本文算法在准确度和运行速度上都要远远超过现有方法,更是摆脱了图数转化需要大量人工交互辅助的限制,提高了曲线图数据的重用效率。
对于JPEG 压缩、图像缩放和添加噪声等攻击类型生成的曲线图,尽管本文的曲线提取和细化方法表现出较高的准确度,但是PaddleOCR 不能准确识别出该类曲线图中坐标轴上的坐标标签,给坐标转换的准确度带来了一定的影响。