藺廣逢,劉廷金,楊 戩
(1.西安理工大學印刷包裝與數字媒體學院,西安 710048;2.西安碑林博物館,西安 710001)
在“十四五”期間,為加快社會主義文化繁榮發展,明確要求加快數字化發展,加強對古籍碑文保護的研究。因此,準確、有效地檢測和分割碑文文字,是對石刻碑文保護的有效途徑。
目前對于石刻碑文檢測和分割的研究相對較少。傳統方法中,部分學者對較為成熟的計算機光學字符識別(OCR)進行改進。然而,由于石刻碑文背景雜亂、字體殘損、字體風格多樣、訓練圖像單一等原因,導致傳統識別算法的效果較差。同時,傳統識別算法的性能主要取決于特征的提取,而人工設計的提取器只適用于特定場景,因此所提取的特征信息區分度低。深度學習下的文字檢測分割主要分為2 類:第1 類,借鑒語義分割方法,將文字識別問題轉化為語義分割問題,對輸入文字圖像的每個像素點進行分類,實現像素級的預測分割;第2 類,利用目標定位、檢測進行分割,包含兩階段的算法R-CNN[1](region-convolutional neural networks)、Fast R-CNN[2](fast regionconvolutional neural networks)、Faster R-CNN[3](faster region-convolutional neural networks)等以及一階段的算法SSD[4](single shot multibox detector)、YOLO[5](you only look once)、SOLO[6](segmenting objects by locations)等。
現有算法都是對文字的整體進行檢測和分割,但是文字種類繁多,常用文字就有2 500 多個,而且對于殘損文字檢測效果較差,因此提出了文字部件的檢測和分割方法。文字部件相對較少,只有393 個,而且對于殘損文字的判別和修復可提供有效支持。針對文字部件檢測和分割的需求,基于深度學習的文字部件實例分割,探索現有實例分割框架對文字部件分割的有效性,然后采用SOLOv2 改進算法,將高層語義特征和底層細粒度特征進行充分融合,優化部件邊界分割精度。最后,通過實例驗證了所提算法的有效性。
本實驗擬以SOLOv2 模型為基準,實現對文字部件的實例分割。圖1 為SOLOv2 改進算法流程及詳細框架。圖1(a)為所提出的SOLOv2 改進算法流程,對文字圖像進行預處理,然后輸入改進的SOLOv2 模型中,通過置信度篩選和非極大值抑制確定部件類別和部件掩碼。圖1(b)為SOLOv2 改進算法的詳細框架,層級融合模塊(HIM)和邊界增強模塊(BEM)為提出的改進模塊。圖像經過骨干網絡(ResNet50[7])特征提取后得到不同深度的特征C2、C3、C4、C5、C6(Cn表示原圖的1/2n大小特征),然后傳入層級融合模塊(HIM)得到融合后特征的P2、P3、P4、P5、P6。P2~P6充分融合細粒度特征和語義信息,特征大小依次為輸入圖像的1/4、1/8、1/16、1/32、1/64,再利用SOLOv2算法的原始共享頭部進行類別預測和掩碼預分割。最后,將預分割掩碼和Sobel檢測的邊緣先驗信息傳入邊界增強模塊,通過注意力機制融合掩碼特征和邊緣先驗信息,以增強預分割掩碼的邊界信息,提高掩碼精度。

圖1 SOLOv2改進算法流程及詳細框架
PANet[8](path aggregation network)和FPN[9](feature pyramid networks)僅傳遞了多尺度信息,沒有對這些信息進行選擇性融合。因此,借鑒文獻[10]中提出的特征金字塔生成范式,提出層級融合模塊。
層級融合模塊如圖2 所示。在FPN 之后,將FPN層不同尺度的特征P =(P2,P3,P4,P5,P6)作為輸入,通過特征壓縮復制(FCR)模塊在通道上進行壓縮復制,然后將特征進行分組、組合和融合。

圖2 層級融合模塊網絡結構
層級融合具體的步驟如下:以矩陣乘法的形式對特征P進行加權,并壓縮特征維度,使其在通道上更加緊湊,同時進行復制,用于后續多尺度特征組合和融合。融合后特征Xk可表示為
式中:⊙表示矩陣乘法;ReC×H×W(·)和ReC×HW(·)分別表示將輸入張量重塑為三維C×H×W和二維C×HW,HW表示H和W的乘積,其中C是通道數,H是特征圖的高,W是特征圖的寬;Gk(·)表示特征壓縮復制模塊中特征變換部分。特征壓縮復制模塊結構如圖3 所示。首先輸入特征Pk進行全局池化(GAP),然后經過2 個卷積提升通道維度,最后重塑為C′×C,得到特征P′k,該特征與輸入特征Pk進行矩陣乘法,以通道加權的方式對特征壓縮復制。對于加權后的特征Xk,每C′/5 個通道為一組,以進行多尺度特征融合。圖3 中,ReC′×C表示將輸入張量重塑為C′×C大小,其他的張量重塑有類似的意義。實驗中C為256,C′為320。

圖3 特征壓縮復制模塊網絡結構
將特征壓縮復制模塊的輸出Xk在通道維度上劃分成五部分:Xk=(X2k,X3k,X4k,X5k,X6k),2≤k≤6,然后將多尺度的特征進行組合并融合,表達式如下所示:
式中:concat(·)表示特征連接操作;Convs(·)表示2層卷積核為3 ×3 的卷積、批歸一化(BN)層和ReLU激活函數操作。
文字部件結構復雜多樣,為了得到更好的分割效果,提出了邊界增強模塊,如圖4 所示。圖4 中通道注意力模塊以特征s 每個通道為token。結合邊緣檢測算子,得到原圖像的邊緣先驗信息,然后通過注意力機制增強預分割掩碼的邊緣特征,以提升掩碼精度。

圖4 邊界增強模塊
將原始圖像x 和SOLOv2 算法預分割掩碼特征fpre_mask作為輸入。原始圖像經過下采樣、Sobel 邊緣檢測和卷積處理后得到原始圖片的邊緣先驗信息fedge_prior,表達式如下所示:
式中:D(·)表示下采樣操作;S(·)表示Sobel 邊緣檢測算子。預分割掩碼特征具有高級語義信息,但是仍然存在大量實例內部的雜亂邊緣信息,該信息會嚴重影響預測掩碼的精度。將激活的邊緣先驗信息和預分割掩碼特征在通道上進行連接,然后采用通道注意力模塊(CAB)[11]在通道維度上屏蔽雜亂的邊緣信息,表達式如下所示:
式中:σ(·)表示Sigmoid激活函數;⊕表示在通道上進行拼接;?表示對應元素相乘;CAB(·)表示通道注意力模塊。經過Sigmoid激活函數得到通道之間的注意力得分,然后對輸入特征在通道上進行加權,重新計算得到的特征,最后添加殘差連接,將原始特征和加權后的特征對應像素相乘,表達式如下所示:
式中:T(·)表示矩陣維度轉置(將H×W×C置換為C×H×W);aAtt表示注意力得分。
在通道注意力模塊后,經過2 層卷積Convs(包含卷積核為3 ×3 的卷積層、BN 層、ReLU 激活函數層和卷積核為1 ×1 的卷積層)進行特征融合并降維,得到預測掩碼。
邊界增強模塊中,原始圖像通過Sobel 邊緣檢測算子處理得到原圖的邊緣先驗信息,并在損失函數的指導下優化這些邊緣,以引導模型將注意力集中在文字部件的邊界上。
文字不僅種類繁多(僅常用文字就有2 500 多個),而且結構復雜。在數據采集的過程中由于人為疏忽、自然環境的影響,可能存在破壞石碑的風險,因此難以采集足夠的在碑文上每個字的訓練樣本。國家語言文字工作委員會發布的語言文字規范對常用的2 500 多個文字進行結構和部首的拆分,得到336個文字部件。模擬現實中石刻碑文圖像是一個有效解決碑文訓練樣本少的方法。
通過旋轉、縮放、拉伸、剪切、顏色模型空間色調變換等方式,在336 個文字部件中隨機選取2~6 個不同的文字部件復制到石碑雜亂背景,同時加入椒鹽噪聲,隨機生成白點或者黑點,模擬現實中的石刻碑文圖像,如圖5 所示。圖5 的左上圖中僅存在2 個部件,旋轉角度較小;右上圖中存在多個部件,旋轉角度較大的;左下圖中存在多個部件,并且相互重疊;右下圖中背景噪聲干擾嚴重。數據集詳細信息如表1 所示。數據集下載地址為https:∥github.com/Liutingjin/Rad-ical-Instance-Segmentation/releases/download/datasets/radical2coco.zip。

表1 文字部件數據集

圖5 部件數據集示例圖片
所提出模型的整體損失函數可以表示為
式中:Lcls、Lpre-mask分別表示SOLOv2 模型的原始類別損失和實例分割的掩碼損失;LBEM-mask表示邊界增強后實例分割的掩碼損失;λ和μ為損失權重,在實驗中設置為3,用來平衡Lcls、Lpre-mask和LBEM-mask。
Lcls為Focal損失,是在交叉熵損失的基礎上加入α和γ 超參數平衡因子,平衡難以分類樣本的損失貢獻。Lcls的表達式如下所示:
式中:p為部件的真實標簽值,為模型分類結果。Lpre-mask為Dice損失,用于計算預分割掩碼與真實掩碼的重疊區域,表達式如下所示:
式中:M為真實分割掩碼;為預分割掩碼分支預測掩碼。LBEM-mask是在Dice損失的基礎上添加交叉熵損失(BCE),表達式如下所示:
在文字部件數據集上進行實驗,使用平均精度(AP)作為實驗的評估指標,分別評估了邊界框檢測和實例分割掩碼的amAP(平均精度在不同IoU 閾值上平均)、aAP50(IoU閾值為0.50 時的平均精度)、aAP75(IoU閾值為0.75 時的平均精度)、aAPs和aAPm(不同尺度的平均精度,s表示實例面積小于322,m表示實例面積大于322且小于962),所有實驗的主干網絡均為ResNet50,并利用ImageNet數據集[12]上預訓練的權重初始化網絡參數。硬件設備為NVIDIA RTX 3090 24 G、CUDA v11.1 和Ubuntu 16.04。實驗使用隨機梯度下降(SGD)訓練,進行1.8 ×105次迭代訓練優化,初始學習率為0.005,每批量為8 張圖像,在迭代1.2 ×105和1.6 ×105次時,學習率均降低10 倍。權重衰減系數和動量系數分別設置為1.0 ×10-4和0.9。基于Detectron2[13]開源庫,在訓練期間,輸入圖像大小被調整為短邊在[640,800]范圍內,而長邊小于或等于1 333,也可使用左右翻轉數據增強。訓練得到的損失曲線如圖6 所示,損失值在訓練開始時急劇下降,隨著訓練的進行逐漸放緩,最終趨于穩定,模型收斂。測試時,不使用任何數據增強,按比例縮放圖像的分辨率至少為800 × 800。這項工作的推理在單個RTX 3090GPU上測試,每批量為1 張圖像。在相同的實驗環境下,使用相同的訓練方式,訓練了Mask RCNN[14],CenterMask[15]、Transfiner[16]和CondInst[17]模型,用于對比分析。

圖6 訓練過程的損失曲線
為了驗證現有經典模型和所提出模型對碑文部件數據集的檢測和分割能力,進行了實驗和對比,結果如表2 所示。在實驗中發現,在CenterMask 模型中,若全卷積一階段目標檢測效果較差,則裁剪得到的特征存在部件特征缺失,可能使部件退化為另一部件,導致掩碼分支像素點分類錯誤。例如,部件特征缺失后,“甲”“申”“電”“由”可能會變成“田”。

表2 不同模型的精度 單位:%
由表3 可以看出,Mask R-CNN 和Transfiner 模型的分割效果較差,但是沒有出現CenterMask 模型那種失效的情況。SOLOv2 模型的amAP達到了47.4%,遠遠高于其他模型的分割效果,而且SOLOv2 模型只進行分類和分割,分割速度更快,具有良好的實時性。相對于SOLOv2 和CondInst 模型,SOLOv2 +HIM +BEM模型和CondInst +HIM +BEM模型的性能都有不同程度的提高,CondInst +HIM +BEM 模型的amAP提升0.8%,SOLOv2 +HIM +BEM 模型的amAP提升1.4%,驗證了改進后文字部件分割方法的有效性。

表3 在CondInst模型上消融實驗數據對比 單位:%
為證明提出的層級融合模塊和邊界增強模塊對模型的貢獻,在SOLOv2 和CondInst 模型上進行消融實驗。在消融實驗中,分別將層級融合模塊和邊界增強模塊單獨添加到相應的模型,對文字部件進行檢測和分割。實驗中骨干網絡都采用ResNet50 模型,實驗結果如表3 和表4 所示。優后的模型在文字部件檢測和分割任務中性能均得到了提升。在CondInst模型中加入層級融合模塊后amAP、aAP50、aAP75、aAPs、aAPm分別提升0.7%、0.6%、0.9%、0.4%、0.8%;在SOLOv2 模型中加入層級融合模塊后amAP、aAP50、aAP75、aAPs、aAPm分別提升0.5%、-0.1%、1.8%、0.4%、0.4%,盡管aAP50有0.1%的下降,但是對小物體和中等物體的分割精度得到了提升。

表4 在SOLOv2 模型上消融實驗數據對比 單位:%
邊界增強模塊主要作用為掩碼分支,由表3 和表4 可以看出,其對檢測并無促進效果,但是對掩碼精度的提升有一定的效果。CondInst模型在添加邊界增強模塊后amAP、aAP75、aAPs、aAPm分別提升0.3%、0.6%、0.1%、0.5%;在SOLOv2 模型中加入邊界增強模塊后amAP、aAP50、aAP75、aAPs、aAPm分別提升0.9%、0.2%、2.6%、0.9%、1.1%。
層級融合模塊和邊界增強模塊分別作用于網絡的不同模塊中,層級融合模塊可以為后續分割提供更好的特征。由實驗結果可以看出,這2 個模塊并不會產生沖突,能夠促進檢測和分割效果。CondInst 模型在添加層級融合模塊和邊界增強模塊后amAP、aAP50、aAP75、aAPs、aAPm分別提升0.8%、0.6%、1.0%、0.3%、1.2%;在SOLOv2 模型中加入層級融合模塊和邊界增強模塊后amAP、aAP50、aAP75、aAPs、aAPm分別提升1.4%、0.3%、3.6%、1.4%、1.3%。圖7 為SOLOv2 模型上的可視化結果。由圖7 可見,SOLOv2 原始模型能夠很好地檢測和分割文字部件,但是在一些邊界細節上處理得并不精細,而改進后的模型從特征融合和邊緣增強方面促進掩碼分支分割精度的提高。

圖7 可視化分割結果
對文字部件的檢測和分割進行了初次探索,達到了較好的效果。首先,基于文字部件,利用數據增強方式模擬雜亂碑文背景,生成了大量文字部件實例分割數據集;其次,探索了現有實例分割模型對文字部件數據集的分割效果,基于感興趣區域對齊、池化操作的實例分割框架會使檢測部件退化為另一部件,導致像素點分類錯誤,分割效果較差甚至不起作用;最后,將所提出的層級融合模塊和邊界增強模塊對SOLOv2 和CondInst模型進行改進。