王趙宇, 周國帆, 舒 挺
(浙江理工大學計算機科學與技術學院, 杭州 310018)
可視化可以將不可見的數(shù)據(jù)現(xiàn)象轉化為可見的圖形符號,折線圖是其主要形式之一,有廣泛的應用場景。 在醫(yī)療領域,聽力圖是一種特殊的折線圖,表示各種頻率下的聽力水平,可以診斷聽力損失,為患者選擇合適的助聽器;在科學文獻中,大量的實驗數(shù)據(jù)通常也可以以折線圖的形式展現(xiàn),而沒有提供實驗原始數(shù)據(jù),從而制約了對實驗的復現(xiàn)和對數(shù)據(jù)的分析復用。 因此,抽取圖表的底層數(shù)據(jù)在包括醫(yī)療、科研諸多領域具有重要應用價值。
折線圖數(shù)據(jù)解析是指從缺乏底層數(shù)據(jù)的圖表圖像中,按照圖形比例、位置等信息逆向提取折線數(shù)值的過程。 圖表自動化提取相比于人工估算,速度更快,可靠性更高。 解決折線圖數(shù)據(jù)解析問題主要面臨以下3 個挑戰(zhàn):
(1)由于原始圖片分辨率不高,導致軸標簽檢測的精確度下降;
(2)由于軸標簽字體多樣化,導致軸標簽的識別難度增加;
(3)由于折線與背景顏色差異不明顯、網(wǎng)格粗細和顏色多樣使得分割準確折線更加困難。
當前圖表解析的主流方法分為兩類:基于圖形學的方法和基于神經(jīng)網(wǎng)絡的方法。 在基于圖形學的方法中,Huang[1]等利用連通區(qū)域分析分離文本和圖中的數(shù)字信息,使用邊映射和特定規(guī)則提取圖形元素;Jayant[2]及Falk[3]等開展了文本方向的相關工作,有助于文本識別;Yan Ping Zhou[4]等使用邊界追蹤和霍夫變換識別柱狀圖中的柱形。 上述基于圖形學的方法能夠實現(xiàn)較高精準度,使得抽樣數(shù)據(jù)更加可靠,但效率不高,且大多基于特定的圖表規(guī)則,對于多變的折線圖效果欠佳。 神經(jīng)網(wǎng)絡具有自學習能力,通常更高效。 Mathieu[5]等采用基于神經(jīng)網(wǎng)絡的目標檢測模型,對目標物體定位,獲取數(shù)值信息,此方法僅對散點圖有效;Noah[6]等和Jorge[7]等提出了定位數(shù)字和分析內容的方法,為多類圖表數(shù)據(jù)提取提供了解決思路;Li[8]等提出了一種能夠自動提取完整聽力圖信息的可行模型,但僅能夠提取部分帶有標記的數(shù)據(jù),難以完整提取折線數(shù)據(jù)。 基于神經(jīng)網(wǎng)絡的方法應用范圍廣,操作效率高,但精準度不如圖形學方法。
針對線條與背景色顏色接近、圖表分辨率不高等情況,本文提出了基于神經(jīng)網(wǎng)絡和圖形學方法結合的兩階段折線圖解析算法,利用神經(jīng)網(wǎng)絡解決圖形學方法逐像素遍歷效率不高的問題,利用圖形學方法的高準確性解決神經(jīng)網(wǎng)絡由于線條邊緣大量過渡顏色的像素導致數(shù)值提取不準的問題。 本文使用神經(jīng)網(wǎng)絡高效獲取初步提取結果,使用圖形學方法基于色彩進一步完善線條分割效果,提出了一種折線圖數(shù)據(jù)解析方法,使用擅長小目標檢測的Faster-RCNN 模型進行軸標簽的目標檢測,使用線性回歸過濾掉因字號微小或字體多樣導致識別錯誤的軸標簽,使用雙色彩篩選算法修正Unet++語義分割模型的分割圖提高折線圖數(shù)值提取的準確度。 折線圖數(shù)據(jù)解析的兩階段方法如圖1 所示。
圖1 折線圖數(shù)據(jù)解析的兩階段方法Fig. 1 A two-stage approach on data analysis of line graphs
本文提出的折線圖數(shù)據(jù)解析算法如下:
(1)使用目標檢測網(wǎng)絡對原始圖表進行目標檢測, 得到每個標簽的信息:其中,boxi為標簽的位置信息,依次為左、上、右、下邊界,valuei為標簽所代表的真實數(shù)值。
(2)借助boxi進行掩膜,使用Canny 邊緣檢測和FAST(Feature from Accelerated Segment Test)角點檢測算法檢測表格邊界和表格角點以及表格網(wǎng)格。
(3)使用語義分割網(wǎng)絡進行線條分割配合色彩篩選算法,得到折線
(4)根據(jù)軸標簽值和標簽像素坐標進行映射計算。
折線圖數(shù)據(jù)解析的兩階段方法主體流程如圖2所示。
圖2 折線圖數(shù)據(jù)解析的兩階段方法主體流程Fig. 2 The main process of two - stage method for data analysis of line graph
Faster R-CNN 能夠更好地檢測小目標,對于本任務中的檢測軸標簽具有天然優(yōu)勢。
軸標簽檢測在圖片中找到標簽位置,并對標簽進行識別,算法如下:
首先,用Faster R-CNN 模型對圖表中的數(shù)字進行目標檢測,得到標簽的加載預訓練權重模型,用多尺度折線圖數(shù)據(jù)抽樣數(shù)據(jù)集進行微調訓練,生成新的網(wǎng)絡模型。 利用boxi邊框信息將軸標簽裁剪,使用灰度圖進行邊界調整,如果邊界像素灰度值大于255?0.95,判定為數(shù)字部分,從而得到更加精準的數(shù)字框。
將數(shù)字框覆蓋的圖像內容輸入位數(shù)分類網(wǎng)絡:經(jīng)過卷積層、激活函數(shù)、最大池化層對圖像進行特征提取,全連接層進行分類,最終分為3 類(本文假設軸標簽位數(shù)最大為3 位,可根據(jù)實際情況調整),并得到預測結果;根據(jù)數(shù)字位數(shù)對數(shù)字進行等分裁切,將單個數(shù)字框輸入數(shù)字識別卷積神經(jīng)網(wǎng)絡,在全連接層將數(shù)字分為十個類別,再進行數(shù)字組合,從而得到軸標簽數(shù)值。
最后,通過線性回歸過濾錯誤值。 軸標簽一般是符合線性遞增排列的,可以對一列標簽數(shù)值和像素坐標根據(jù)最小二乘法進行線性擬合,從而過濾錯誤值,算法具體描述見表1。
表1 線性回歸過濾錯誤值算法Tab. 1 Linear regression error filtering algorithm
在折線圖數(shù)值提取之前,需要進行邊界檢測、角點檢測、網(wǎng)格檢測等預處理。 使用標簽定位與識別的結果掩膜,進行Canny 邊緣檢測,根據(jù)色彩階躍變化對包含角點的外邊界進行調整;使用FAST 特征點檢測算法進行角點檢測;使用與邊界檢測類似的方法進行網(wǎng)格檢測。
采用Unet++語義分割模型對折線圖進行語義分割,得到一階段的分割圖。
折線圖往往線條很細,且包含網(wǎng)格背景等無用信息,本文設計了雙色彩篩選算法得到第二階段分割圖,具體步驟如下:
(1)對第一階段分割圖進行像素色彩統(tǒng)計,選擇數(shù)量最多的像素值進行第一次色彩篩選;
(2)從圖表邊界向內延伸進行色彩統(tǒng)計,進行第二次色彩篩選,生成第二階段分割圖。
最后,在第二階段分割圖中仍存在邊緣不清晰、跨度大、內部殘缺的問題,需要進行填充修補。 從左邊界向右掃描,將最高點和最低點之間進行填充,得到飽滿的折線;依照目標色彩從原圖中向四周探尋,將第二階段分割圖向外延伸,獲得完整的折線。 部分線條會由于網(wǎng)格、過渡像素等的干擾形成中斷缺失,使用左右兩點的計算均值代替該列的像素值和位置。
針對折線圖數(shù)值映射計算,本文給出以下定義:
(1)像素坐標:目標像素點距圖表上界的像素數(shù)量為yp,目標像素點距離作邊界的像素數(shù)量差值為xp,像素坐標記為(xp,yp);
(2)圖表坐標:目標點經(jīng)映射計算后在圖表中所代表的真實橫縱坐標值,記為(xr,yr);
(3)由于線條存在寬度,故取分割圖中每一列像素中點作為映射輸入點。
獲取到線條的分割圖后,需要根據(jù)軸標簽的中心位置和映射輸入點進行計算。 首先,將標簽集合K中的每一個軸標簽記為其中,(txi,tyi) 為標簽的中心像素坐標,vi為標簽所代表的真實數(shù)值。
分別取相鄰軸標簽的軸向像素數(shù)量差值和真實數(shù)值差值,兩兩之間計算單位像素坐標值所代表的真實圖表坐標值,取平均值,對于每一個待求圖表坐標的映射輸入點,與每一個軸標簽pi進行如公式(1)的計算,var 即所求坐標數(shù)值,即可完成對于折線圖的數(shù)據(jù)解析。
其中,dy表示當前標簽的縱向像素值;distave表示圖表單位像素的坐標值跨度范圍;len(pi) 表示標簽個數(shù)。
本文實驗設計主要測試算法在以下兩個方面的效果:
(1)測試本文方法針對不同字號、不同字體樣式的適應能力。 在含有50 種不同字體、隨機字號的數(shù)據(jù)集上計算單字符、完整標簽的識別精確率、召回率、F1 值檢測軸標簽衡量算法對不同大小、字號軸標簽定位和內容識別的準確程度,并比較線性回歸策略對算法的提升效果;
(2)測試本文方法針對折線、網(wǎng)格、背景顏色接近的性能。 在含有多種背景、線條、網(wǎng)格樣式的數(shù)據(jù)集上,計算線條分割的平均交并比、準確度、精確度、平均歐式距離,衡量算法在不同的干擾背景下抽取線條和數(shù)值映射的準確程度,并比較雙色彩篩選策略對算法的提升效果。
目前還沒有公開的大規(guī)模折線圖數(shù)據(jù)抽樣數(shù)據(jù)集,為了驗證本文方法的實用性和有效性,構建一個折線圖數(shù)據(jù)抽樣數(shù)據(jù)集,包含具有50 種軸標簽字體、隨機軸標簽位置、9 種背景顏色、隨機網(wǎng)格顏色、3 種網(wǎng)格寬度、7 種網(wǎng)格數(shù)量、隨機折線顏色、12 種折線寬度的5 000 張折線圖。 針對軸標簽檢測實驗,本文引入ICDAR 2019 掃描收據(jù)數(shù)據(jù)集,該數(shù)據(jù)集具有1 000 個完整的掃描收據(jù)圖像,在此數(shù)據(jù)集的基礎上引入本文設計的數(shù)據(jù)集共6 000 張圖片進行軸標簽檢測算法的性能評估。
2.3.1 實驗設置
將數(shù)據(jù)集按照比例6 ∶3 ∶2 劃分訓練集、驗證集和測試集。 軸標簽檢測實驗參數(shù)設置見表2。
表2 軸標簽檢測實驗參數(shù)設置Tab. 2 Parameter setting in axis label detection experiment
2.3.2 評價指標
本文使用標準的目標檢測評價指標來衡量軸標簽檢測的性能,即單字符識別精確率、單字符識別召回率、完整標簽識別精確率、完整標簽識別召回率、F1- Score。 精確率計算公式(2)、召回率計算公式(3)如下:
其中,TP表示真正例,即被分類器正確地判定為正例的樣本數(shù);FP表示假正例,即被分類器錯誤地判定為正例的樣本數(shù);FN表示假負例,即被分類器錯誤地判定為負例的樣本數(shù);TN表示真負例,即被分類器正確地判定為負例的樣本數(shù)。
2.3.3 實驗結果
軸標簽檢測實驗結果見表3。 軸標簽檢測實驗結果示意圖如圖3 所示。 軸標簽檢測實驗中采用的線性回歸策略對結果優(yōu)化對比結果如圖4 所示。
表3 軸標簽檢測實驗結果Tab. 3 Axis label detection results
圖3 軸標簽檢測實驗結果示意圖Fig. 3 Schematic diagram of axis label detection results
圖4 線性回歸策略對結果優(yōu)化對比圖Fig. 4 Comparison of results on linear regression strategy
實驗測試了使用線性回歸方法對實驗結果的影響,實驗結果表明該方法可以濾除錯誤的軸標簽識別結果,即會提升精確率并降低召回率,但考慮到本文采用坐標值映射的方法是最多等值策略,故算法的精確率更為重要,即允許漏識別,避免誤識別,因此經(jīng)過線性回歸后會過濾掉部分錯誤識別的結果,雖然會使得字符召回率和軸標簽召回率下降,但對整體算法的準確度是有益的。 同時對于少部分圖片,由于字體過小導致個別字符識別錯誤或因字體樣式(如部分字體的9 和0 過于相似)導致個別字符識別錯誤,線性回歸能夠大幅減弱軸數(shù)字檢測錯誤帶來的副作用,有利于提高后續(xù)數(shù)值提取的準確度。
2.4.1 實驗設置
選用數(shù)據(jù)集中4 000 張圖片進行訓練,1 000 張圖片用于測試。 參數(shù)設置見表4。
表4 折線圖數(shù)值提取實驗參數(shù)設置Tab. 4 Parameter setting in line graph value extraction experiment
2.4.2 評價指標
本文使用標準的語義分割評價指標來衡量線條分割的性能,指標為平均交并比(mIoU)、 準確度、精確度。 平均交并比計算,公式(4):
本文采用平均歐式距離作為評價指標評估預測值與真實值的偏離程度,將圖標橫向5 等分,通過5個點與軸標簽的中點之間的像素差值和軸便簽的單位值(即兩個鄰接軸標簽的數(shù)值差值)計算折線所表示數(shù)值,公式(5):
其中,yi表示真實值;y′i表示預測值;k表示縱坐標最大標簽值。
2.4.3 實驗結果
折線圖數(shù)值提取實驗結果見表5。 折線圖數(shù)值提取實驗結果示意圖如圖5 所示。 折線圖數(shù)值提取實驗雙色彩篩選策略對結果優(yōu)化對比圖如圖6 所示。 本文算法計算的平均歐氏距離為0.087。
表5 折線圖數(shù)值提取實驗結果Tab. 5 Experimental results of numerical extraction of line graph results
圖5 折線圖數(shù)值提取實驗結果示意圖Fig. 5 Schematic diagram of experimental results of line graph value extraction
圖6 雙色彩篩選策略對結果優(yōu)化對比圖Fig. 6 Effect of dual color screening strategy on final results
實驗測試了雙色彩篩選算法對實驗結果的影響。 實驗結果表明,相比于只使用深度神經(jīng)網(wǎng)絡的方法,結合傳統(tǒng)的圖形學方法進行調整,大幅提高了線條分割的精準度,提升幅度為53.2%,這主要是由于一些邊緣像素導致神經(jīng)網(wǎng)絡進行語義分割的結果包含了大量無用信息,算法濾除了無用信息且修復了殘缺的線條,從而提高了性能,但不可避免的引入一些耗時操作。 對于難以界定的邊緣像素,無論將其歸于線條類還是折線線條類都會導致分割線條不夠平滑,不過由于坐標映射時會將該列像素值的中點作為映射輸入,故只要對于上下兩側的邊緣像素以同種策略進行篩選則不會影響結果。 坐標值映射產(chǎn)生的誤差的主要原因是網(wǎng)格顏色與線條顏色過于接近導致的映射縱坐標取值錯誤、邊界定位出錯導致的橫坐標取點出錯。 雖然本文的方法是有效的,但仍然存在一些局限性,如訓練不是端對端的,有些工作是重復的會降低操作效率。
為了重新抽取圖表中的數(shù)據(jù)信息,本文提出了一整套折線圖數(shù)據(jù)解析方法,使用擅長小目標檢測的Faster R-CNN 和Unet++兩大模型,分別對標簽數(shù)字進行定位識別和對曲線進行語義分割;使用線性回歸輔助解決字號微小、容易識別錯誤的問題;使用雙色彩篩選算法修正語義分割模型的結果,提高對于細微線條提取的準確度。 另外,本文方法還可以拓展,對于現(xiàn)實中更多復雜的表格類型,可以抽取相應的特征點,進一步地細化折線圖解析方法。