李新利 鄒昌銘 楊國田 劉 禾
發(fā)票是財務系統(tǒng)的重要組成部分,發(fā)票的識別和處理是財務人員的首要工作.人工智能已被廣泛應用在人臉識別、車輛識別、物體檢測等各個領域,而基于人工智能的發(fā)票識別,可為財務人員節(jié)省大量的時間.目前發(fā)票自動識別根據(jù)使用場景不同,可分為移動客戶端、云端和本地客戶端.移動端客戶端發(fā)票識別是通過手機端的離線SDK,集成到公司財務系統(tǒng)的APP 內(nèi),自動檢測發(fā)票的邊線并拍照識別,提取發(fā)票上的關鍵信息;云端發(fā)票識別是通過調(diào)用云平臺的API 接口,將拍照或者掃描的發(fā)票圖像傳送到云平臺上進行識別;而本地客戶端識別是識別軟件與掃描儀硬件配合使用進行識別.三種方式本質(zhì)都是基于識別軟件進行的.由于發(fā)票種類繁多,格式不固定,有的發(fā)票存在手寫的內(nèi)容,且不同人手寫字的風格不一,因此基于傳統(tǒng)數(shù)字圖像處理的識別軟件,相應識別準確率較低.隨著卷積神經(jīng)網(wǎng)絡的興起,包括表格線定位、手寫文字識別等問題得到很好的解決.文獻[1]采用卷積神經(jīng)網(wǎng)絡實現(xiàn)增值稅發(fā)票批量識別,通過對發(fā)票圖像進行采集、預處理、字符切割,基于CNN 神經(jīng)網(wǎng)絡進行字符識別,同時融入人工修改,提高識別率.但是發(fā)票上的印章對發(fā)票識別準確率依舊具有一定影響,且印章是每張發(fā)票必不可少的,因此如何消除印章也是現(xiàn)在OCR (Optical character recognition)領域的研究熱點.目前大多數(shù)研究者對于發(fā)票印章的研究主要是印章識別與驗證[2?4].針對發(fā)票印章的去除問題,若通過印章定位,而后直接挖除印章則會丟失印章下的發(fā)票內(nèi)容;若采用過濾顏色的方式來消除,會導致發(fā)票中與印章顏色相近的文字變得模糊不清,而且不同發(fā)票的印章顏色不同.文獻[5]提出一種基于彩色圖像的二次分割算法來去除印章,但是對于發(fā)票的要求較高,需要保證印章的顏色為紅色或者藍色,票據(jù)不能出現(xiàn)明顯的扭曲和變形,字體還需要求是黑色或灰色,其實用性較差.文獻[6]針對印章覆蓋、發(fā)票折痕等干擾因素影響發(fā)票號碼分割的問題,采用基于數(shù)字結構特征的識別算法,通過對噪聲粘連區(qū)域進行修復,解決干擾因素對數(shù)字分割的影響,實現(xiàn)發(fā)票號碼識別.但是如何判斷噪聲區(qū)域最小連通面積的閾值是算法關鍵,當發(fā)票數(shù)量增多,印章顏色深度和位置不統(tǒng)一時,消除印章干擾則很困難.
各種圖像處理軟件也可用在印章消除上,如PhotoShop,但需要基于軟件進行手動處理,大量發(fā)票的印章消除則會新增大量工作量,反倒得不償失.因此研究如何自動消除發(fā)票印章,對提高發(fā)票識別準確率具有重要意義.生成式對抗網(wǎng)絡GAN (Generative adversarial network)是Goodfellow 等在2014 年提出的一種生成式網(wǎng)絡[7].在GAN 提出之前,常見的生成式網(wǎng)絡有最大似然估計法、近似法[8]、馬爾科夫鏈法[9]等.這些方法的基本步驟是,先對樣本數(shù)據(jù)進行分布假設,然后利用數(shù)據(jù)樣本直接對假設分布的參數(shù)進行擬合,這會導致學習到的生成式模型受到限制[10].而GAN 不同于上述的生成網(wǎng)絡,該方法采用對抗學習方式,先通過判別器學習生成分布和真實分布之間的差異,再驅(qū)使生成器去縮小差異.GAN 相比于其他的生成網(wǎng)絡,對數(shù)據(jù)的分布不做顯性的限制,從而避免了人工設計網(wǎng)絡分布[11].GAN 目前常用于實現(xiàn)圖像的風格遷移以及超分辨圖像的生成.本文基于生成對抗網(wǎng)絡提出用于消除印章的SealGAN 網(wǎng)絡.SealGAN 借鑒了CycleGAN 網(wǎng)絡的循環(huán)結構,采用兩個獨立的分類器來取代判別網(wǎng)絡,并針對印章的特點去設計生成網(wǎng)絡,實現(xiàn)發(fā)票圖像的帶印章到不帶印章的風格遷移,從而達到消除發(fā)票印章的效果.
生成式對抗網(wǎng)絡結構如圖1 所示,包括一個生成網(wǎng)絡(G)和一個判別網(wǎng)絡(D).生成網(wǎng)絡用于生成目標圖像,而判別網(wǎng)絡用于判斷圖像是生成的虛假圖像還是真實目標圖像.在訓練時,生成網(wǎng)絡會在損失函數(shù)的牽引下讓生成的圖像盡可能地逼近目標圖像,判別網(wǎng)絡則將生成圖像和真實目標圖像區(qū)分開,由此構成對抗博弈的訓練方式.通過競爭方式,生成網(wǎng)絡生成的圖像會越來越真實,而判別網(wǎng)絡的判別能力也會越來越強[7].
圖1 生成式對抗網(wǎng)絡結構Fig.1 Generative adversarial networks structure
圖1 中LG是更新生成網(wǎng)絡G的損失,LD是更新判別網(wǎng)絡D的損失,如下式所示:
式中zi表示的是第i個輸入,xi表示對應的真實圖像.生成網(wǎng)絡和判別網(wǎng)絡的損失函數(shù)均為交叉熵損失,只是判別網(wǎng)絡的目標是讓真實圖像的判別結果趨近于1,生成圖像結果趨近于0,而生成網(wǎng)絡則希望生成圖像的判別結果趨近于1[7].
生成式對抗網(wǎng)絡的概念提出后,便成為學術界研究的熱點.在此基礎上,一些改進網(wǎng)絡結構相繼被提出,如引入卷積神經(jīng)網(wǎng)絡的DCGAN[12],用于生成超分辨圖像的SRGAN、LapGAN[13?14],用于風格遷移的pix2pix、cVAE-GAN[15?16].但是大部分生成式對抗網(wǎng)絡都要求待處理圖像和目標圖像一一匹配.針對帶印章的發(fā)票,則很難獲取印章圖像與其對應的無章圖像.2017 年,伯克利大學的研究團隊在ICCV 上提出了CycleGAN 網(wǎng)絡,其最大特點是不需要待處理圖像和目標圖像一一匹配,只需要兩個分布不同的數(shù)據(jù)集即可實現(xiàn)數(shù)據(jù)集之間的相互風格遷移.
CycleGAN 的基本思想是采用兩個基礎的生成式對抗網(wǎng)絡,采用循環(huán)的方式訓練,其網(wǎng)絡結構如圖2 所示[17].
圖2 CycleGAN 的網(wǎng)絡結構Fig.2 GycleGAN networks structure
假設有兩個不同分布的數(shù)據(jù)集A與B,CycleGAN 中包含兩個基礎GAN 網(wǎng)絡,一個負責把A類數(shù)據(jù)轉化成B類數(shù)據(jù),記作GANA to B,另一個負責把B類數(shù)據(jù)轉化成A類數(shù)據(jù),記作GANB to A.設原始的A類圖像為XA,通過GANA to B,可以得到原始圖像對應的B類風格圖像X′B.如果采用傳統(tǒng)圖像對模式,則存在XA對應的真實圖像XB,這時只需將X′B和XB做均方差之類的損失計算,通過反向傳播更新生成網(wǎng)絡參數(shù)即可驅(qū)使生成式網(wǎng)絡生成內(nèi)容相匹配的圖像.當無法獲取圖像對時,CycleGAN 則把生成的X′B輸入GANB to A,生成相應的A類圖像X′A,換言之就是試圖把生成的X′B還原成原圖像XA,此時計算XA和X′A之間的損失即可反向傳播去更新兩個生成對抗網(wǎng)絡.這種循環(huán)的訓練模式巧妙地實現(xiàn)了不存在圖像對時的兩類數(shù)據(jù)集之間相互轉化.
SealGAN 網(wǎng)絡結構如圖3 所示,GENA to B和GENB to A是生成式對抗網(wǎng)絡中抽取出來的生成網(wǎng)絡,采用循環(huán)訓練的方式.與CycleGAN 網(wǎng)絡相比,本文所提出的SealGAN 中,每個生成網(wǎng)絡并沒有配備相應的專屬判別網(wǎng)絡,而是采用原始圖像和所有生成圖像單獨訓練了兩個分類器,其中ClassifierAB用于區(qū)分A類和B類數(shù)據(jù),ClassifierRF用于區(qū)分真實圖像和生成圖像,然后將兩個分類器所計算出的損失加入到總損失中來更新整體網(wǎng)絡的參數(shù).
圖3 SealGAN 網(wǎng)絡結構Fig.3 SealGAN networks structure
在CycleGAN 網(wǎng)絡中,采用GANA to B和GANB to A兩個基礎的生成式對抗網(wǎng)絡進行循環(huán)訓練,且有各自的判別網(wǎng)絡.以GANA to B為例,它的判別網(wǎng)絡既需要判斷輸入圖像是屬于A類還是B類,還需要判斷輸入圖像是生成圖像還是原始真實圖像.其實,生成對抗網(wǎng)絡中的判別網(wǎng)絡是一個分類器,對于分類器而言,分類要求越高則分類效果越差,而且兩個判別網(wǎng)絡雖然相互獨立,但是分類要求相似,采用的訓練樣本交集較大.因此本文所提出的SealGAN 網(wǎng)絡采用兩個獨立的分類器取代兩個判別網(wǎng)絡,一個分類器用于區(qū)分A類和B類數(shù)據(jù),另一個分類器用于區(qū)分生成圖像和真實圖像.相當于用兩個獨立的分類器來取代原本的判別網(wǎng)絡,網(wǎng)絡整體參數(shù)數(shù)量沒有太大變化,但是對于單個分類器其分類要求降低,分類效果更好.
CycleGAN 中有兩種生成網(wǎng)絡結構,殘差網(wǎng)絡ResNet 結構和UNet 結構.ResNet 結構用于解決層數(shù)較深的網(wǎng)絡難以訓練的問題.在ResNet 結構提出之前,研究人員在提升網(wǎng)絡性能上往往是單純的疊加網(wǎng)絡層數(shù).盡管網(wǎng)絡層數(shù)的增加能夠提高網(wǎng)絡的特征容量,理論上能更好地對樣本進行擬合.但是實際訓練中,當網(wǎng)絡層數(shù)過大時,參數(shù)的訓練難度也大幅提升,過分引入的卷積層和非線性激活不僅無法提升網(wǎng)絡性能,而且還難以維持淺層網(wǎng)絡所達到的效果,從而出現(xiàn)了模型退化問題[18].Res-Net 結構的核心是采用了跨層連接思想,引入了捷徑連接的概念[19].殘差網(wǎng)絡結構如圖4 所示,由于捷徑連接的存在,在訓練過程中,擬合的不再是目標分布,而是目標分布和上一層網(wǎng)絡輸出之間的殘差.當淺層網(wǎng)絡能夠達到較好效果時,殘差趨近于零.盡管在擬合殘差時也引入了卷積和非線性激活,但是要想擬合零只需要把所有參數(shù)都趨向零即可,網(wǎng)絡訓練易于實現(xiàn).因此,ResNet 結構的引入能夠在加深網(wǎng)絡層數(shù),提高網(wǎng)絡擬合能力的同時,也能保證達到淺層網(wǎng)絡的效果,從而消除網(wǎng)絡退化問題.圖4 中F(x) 為待擬合的殘差函數(shù),H(x) 為待擬合的完整目標函數(shù).
圖4 殘差網(wǎng)絡結構Fig.4 Residual networks structure
UNet 結構常用于圖像分割領域,其網(wǎng)絡結構如圖5 所示.UNet 結構包括下采樣和上采樣的過程.在上采樣過程中,先把下采樣和上采樣中尺度相同的層拼接在一起,再進行卷積和反卷積操作.上采樣層和下采樣層之間的連接是UNet 結構的亮點,這些連接使得在上采樣過程中可保留了更多的原始圖像的紋理信息[20].
圖5 UNet 網(wǎng)絡結構示意圖Fig.5 Schematic diagram of UNet structure
本文提出的SealGAN 網(wǎng)絡中,生成網(wǎng)絡結合ResNet 和UNet 兩種結構,搭建了一個下采樣?精煉?上采樣的網(wǎng)絡結構,如圖6 所示.由于在消除印章的同時,也希望能盡可能地保留印章下的內(nèi)容,而UNet 結構的優(yōu)勢正是能更多地保留原始圖像紋理信息,因此在SealGAN 網(wǎng)絡的生成網(wǎng)絡中,上下采樣部分采用了UNet 結構,而精煉部分采用了ResNet 結構以保證網(wǎng)絡的效果.
圖6 SealGAN 生成網(wǎng)絡結構示意圖Fig.6 Schematic diagram of SealGAN generative networks structure
輸入圖像的尺寸統(tǒng)一縮放為 256×256,并把圖像像素歸一化到[?1,1]區(qū)間.為了保證消除印章后能夠盡可能保留印章下的內(nèi)容,下采樣通道數(shù)應多于上采樣通道數(shù),以保證在上采樣時能夠有足夠多的原始圖像信息.多次實驗發(fā)現(xiàn),下采樣的通道數(shù)與上采樣的通道數(shù)的比例設置為1.5 :1 時效果最佳.在生成網(wǎng)絡中,除了輸出層,其余層的激活函數(shù)均采用LeakyReLU.
輸出層采用tanh 激活函數(shù),保證輸出結果在[?1,1]區(qū)間內(nèi).
分類器網(wǎng)絡前四層的激活函數(shù)采用LeakyReLU,最后一層沒有激活.生成網(wǎng)絡以及分類器的相關參數(shù)如表1 所示.
表1 生成網(wǎng)絡和分類器參數(shù)表Table 1 Parameters of the generative network and classifier
損失函數(shù)包括兩個分類器的損失LossAB、LossRF和一個循環(huán)回來的圖像之間的像素損失LossG.設z為原始圖像,G為生成網(wǎng)絡,D是分類器,A為帶印章圖像,B對應的無印章圖像.原始的生成式對抗網(wǎng)絡所使用的損失均為交叉熵損失,在最近的研究中發(fā)現(xiàn),采用交叉熵損失存在梯度消失和模型坍塌的風險[21].相比于交叉熵損失,最小二乘損失效果更佳[22].因此,SealGAN 采用了最小二乘損失替換了交叉熵損失.除此以外,在計算生成圖像和原始圖像的內(nèi)容損失時,也不再使用常見的L2損失,而是采用L1損失,因為L2損失驅(qū)動下的生成圖像更為模糊.在訓練分類器時,損失函數(shù)如式(5)、(6)所示.當訓練生成網(wǎng)絡時,損失函數(shù)如式(7)、(8)、(9)所示.其中,LossAB和LossRF的權重為1,LossG的權重為10 時,生成效果最佳.
為了能夠更好地評價網(wǎng)絡的性能,本文提出針對印章消除的綜合評價指標Evaluation-score(ES),包含風格評價指標Class-score (CS1)和內(nèi)容評價指標Content-score (CS2),如下式所示.
式中的α和β是超參數(shù),可基于需求重要性進行調(diào)整,本文實驗中α和β均為1.
風格評價指標需要搭建一個分類網(wǎng)絡,采用的訓練樣本是真實的發(fā)票樣本,包含帶印章和不帶印章的樣本.本論文所搭建的分類網(wǎng)絡借鑒GoogleNet 網(wǎng)絡結構[23],損失函數(shù)采用余弦損失函數(shù),目標是讓帶印章樣本的輸出趨向于0,不帶印章樣本的輸出趨向于1.采用余弦損失函數(shù)能夠更好地增大類間距離,公式如式(11)所示[24].將生成的圖像通過訓練好的分類網(wǎng)絡,所得到的結果即為CS1,得分越高,則消除印章的效果越好.
內(nèi)容評價指標則是利用生成圖像和原帶章圖像之間的均方根誤差計算的,均方根誤差越小,意味著保留的內(nèi)容越多.定義的內(nèi)容評價指標如下:
訓練圖像一共有六千余張發(fā)票圖,其中帶印章樣本和不帶印章樣本的比例約為1 :1,印章樣本包含了出租車票印章、增值稅發(fā)票印章、高速公路收費票據(jù)印章、定額發(fā)票印章以及各類企業(yè)單位加蓋的公章.在訓練網(wǎng)絡過程中,為選擇最佳的訓練集和測試集比例,對CycleGAN-ResNet 網(wǎng)絡和CycleGAN-UNet 網(wǎng)絡,以及本文所提的SealGAN 網(wǎng)絡等三種網(wǎng)絡,采用不同的訓練集和測試集劃分比例,包括7 :3、8 :2 和9 :1 三種,進行對比實驗,并基于網(wǎng)絡性能綜合評價指標ES進行評價.三種網(wǎng)絡不同數(shù)據(jù)集劃分比例的綜合評價指標如圖7 所示.
圖7 三種網(wǎng)絡在不同數(shù)據(jù)集劃分比例下的性能指標Fig.7 Performance indices of three networks under different division proportion of data set
由圖7 可知,隨訓練集和測試集比例增大,網(wǎng)絡綜合性能評價指標也在提升.為了讓每種網(wǎng)絡效果達到最佳,因此在論文實驗中采用訓練集和測試集比例為9 :1 分布進行實驗比對.
本文分別使用了文獻[5]的二次分割方法、采用ResNet 和UNet 生成網(wǎng)絡的CycleGAN 網(wǎng)絡,以及SealGAN 網(wǎng)絡,進行發(fā)票印章消除實驗.訓練模型時,針對三種常見的優(yōu)化器Momentum、RMSProp 和Adam 進行實驗對比,最終選擇穩(wěn)定性最佳的Adam 優(yōu)化器.每種網(wǎng)絡均訓練了20 個Epoch,Batch Size 均為4.學習率的初始值是0.0002,每訓練一個Epoch,學習率下降10 %.在CycleGAN 模型中,針對生成器和判別器不同的損失權重比,包括1 :1,5 :1,10 :1 和15 :1,通過網(wǎng)絡綜合評價指標ES進行測試對比,可知10:1 為最佳損失權重比.基于上述的參數(shù)設定進行實驗,圖8 是四種方法對發(fā)票印章消除的效果.
圖8 基于二次分割、CycleGAN-ResNet、CycleGAN-UNet 和SealGAN 的印章消除對比Fig.8 Comparsion of effect of the seal elimination based on re-segmentation,CycleGAN-ResNet,CycleGAN-UNet and SealGAN
由圖中可知,采用二次分割的方法效果最差,由于方法的核心思想是對顏色進行閾值分割來獲取印章部分再進行修改,所以當發(fā)票顏色復雜時,對印章部分的定位不完整,導致印章消除不全,而且對于獲取到的印章部分采用直接填充背景方法,對發(fā)票內(nèi)容造成影響.采用ResNet 生成網(wǎng)絡的CycleGAN,生成的結果比較模糊,色彩與原圖相比,色差巨大;除此以外,內(nèi)容丟失也很嚴重.采用UNet生成網(wǎng)絡的CycleGAN,由于UNet 在進行上采樣時融合了下采樣層的特征,保證了上采樣過程中保留更多的原始信息,因此色彩問題得到解決,但是依舊有明顯的內(nèi)容丟失,特別是當內(nèi)容的顏色與印章的顏色相近時.基于SealGAN 網(wǎng)絡的印章消除,采用了下采樣?精煉?上采樣的生成結構,而且上采樣過程也融入了下采樣層的原始信息,因此色差問題基本不存在,生成的結果相比于前兩個網(wǎng)絡的實驗結果要清晰很多.除此以外,由于SealGAN 并不是簡單地用兩個基礎GAN 網(wǎng)絡搭建的循環(huán)結構,而是用兩個專門的分類器來替代判別器,其中一個分類器專門區(qū)分真實樣本和生成樣本,另一個專門區(qū)分帶章樣本和不帶章樣本.這種替換使得網(wǎng)絡能夠更好地學習到哪些部分屬于印章,哪些部分不屬于印章,因此SealGAN 網(wǎng)絡可更好地保留非章內(nèi)容.
三種不同網(wǎng)絡消除發(fā)票印章的評價如表2 所示,可知SealGAN 具有最高得分.
表2 三種網(wǎng)絡性能評價指標Table 2 Performance evaluation indices of three kinds of network
本文針對發(fā)票上消除印章的問題,分析了Cycle-GAN 網(wǎng)絡的優(yōu)缺點,并基于此進行相應改進,提出SealGAN 網(wǎng)絡結構,設計了包括風格評價和內(nèi)容評價的網(wǎng)絡綜合評價指標.SealGAN 網(wǎng)絡用兩個獨立的分類器來取代原本的判別網(wǎng)絡,可降低單個分類器的分類要求,提高網(wǎng)絡的學習效果,同時生成網(wǎng)絡結合ResNet 和Unet 兩種結構,實現(xiàn)下采樣?精煉?上采樣的過程,能夠生成更加清晰的圖像.基于發(fā)票印章消除實驗,與原始的CycleGAN 進行對比可看出,本文所提出的SealGAN 無論是在模糊程度、生成色彩等圖像細節(jié)上,還是內(nèi)容的保留程度上都要明顯優(yōu)于原始的CycleGAN 網(wǎng)絡,且綜合評價指標高于CycleGAN 網(wǎng)絡,實驗結果表明了所提出的SealGAN 網(wǎng)絡的有效性.未來可進一步提高非章內(nèi)容的保留效果,尤其是當印章與印章下的發(fā)票內(nèi)容顏色很相近時,并可針對發(fā)票復印件進行印章消除研究.