日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OCR系列——文本检测任务

發布時間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OCR系列——文本检测任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 簡介

文本檢測任務是找出圖像或視頻中的文字位置。不同于目標檢測任務,目標檢測不僅要解決定位問題,還要解決目標分類問題。

目標檢測和文本檢測同屬于“定位”問題。但是文本檢測無需對目標分類,并且文本形狀復雜多樣。

當前所說的文本檢測一般是自然場景文本檢測,其難點在于:

  • 自然場景中文本具有多樣性:文本檢測受到文字顏色、大小、字體、形狀、方向、語言、以及文本長度的影響;
  • 復雜的背景和干擾;文本檢測受到圖像失真,模糊,低分辨率,陰影,亮度等因素的影響;
  • 文本密集甚至重疊會影響文字的檢測;
  • 文字存在局部一致性,文本行的一小部分,也可視為是獨立的文本;

2. 算法分類

3. 算法詳解

3.1 基于回歸的文本檢測

早期基于深度學習的文本檢測算法是從目標檢測的方法改進來的,支持水平文本檢測。常見方法有TextBoxes、CTRN等,隨著數據集的豐富,后期又增加了傾斜文本檢測和彎曲文本檢測。

(1)水平文本檢測

TextBoxes根據SSD改進的,將默認的文本框更改為適應文本方向和寬高比的規格的四邊形,特點有

?CTPN是基于Fast-RCNN算法,擴展RPN模塊并且設計了基于CRNN的模塊讓整個網絡從卷積特征中檢測到文本序列,二階段的方法通過ROI Pooling獲得了更準確的特征定位。

(2)任意角度文本檢測

TextBoxes++在TextBoxes基礎上進行改進,支持檢測任意角度的文本。從結構上來說,TextBoxes++針對多角度文本進行檢測,首先修改預選框的寬高比,調整寬高比aspect ratio為1、2、3、5、1/2、1/3、1/5。其次是將1?51*51?5的卷積核改為3?53*53?5,更好的學習傾斜文本的特征;最后,TextBoxes++的輸出旋轉框的表示信息。

EAST針對傾斜文本的定位問題,提出了two-stage的文本檢測方法,包含 FCN特征提取和NMS部分。EAST提出了一種新的文本檢測pipline結構,可以端對端訓練并且支持檢測任意朝向的文本,并且具有結構簡單,性能高的特點。FCN支持輸出傾斜的矩形框和水平框,可以自由選擇輸出格式。

  • 如果輸出檢測形狀為RBox,則輸出Box旋轉角度以及AABB文本形狀信息,AABB表示到文本框上下左右邊的偏移。RBox可以旋轉矩形的文本。
  • 如果輸出檢測框為四點框,則輸出的最后一個維度為8個數字,表示從四邊形的四個角頂點的位置偏移。該輸出方式可以預測不規則四邊形的文本。

MOST提出TFAM模塊動態的調整粗粒度的檢測結果的感受野,另外提出PA-NMS根據位置信息合并可靠的檢測預測結果。此外,訓練中還提出 Instance-wise IoU 損失函數,用于平衡訓練,以處理不同尺度的文本實例。該方法可以和EAST方法結合,在檢測極端長寬比和不同尺度的文本有更好的檢測效果和性能。

(3)彎曲文本檢測

簡單思路是用多點坐標描述彎曲文本的邊界多邊形,然后直接預測多邊形的頂點坐標。

CTD提出了直接預測彎曲文本14個頂點的邊界多邊形,網絡中利用Bi-LSTM層以細化頂點的預測坐標,實現了基于回歸方法的彎曲文本檢測。

LOMO針對長文本和彎曲文本問題,提出迭代的優化文本定位特征獲取更精細的文本定位,該方法包括三個部分,坐標回歸模塊DR,迭代優化模塊IRM以及任意形狀表達模塊SEM。分別用于生成文本大致區域,迭代優化文本定位特征,預測文本區域、文本中心線以及文本邊界。迭代的優化文本特征可以更好的解決長文本定位問題以及獲得更精確的文本區域定位。

Contournet基于提出對文本輪廓點建模獲取彎曲文本檢測框,該方法首先使用Adaptive-RPN獲取文本區域的proposal特征,然后設計了局部正交紋理感知LOTM模塊學習水平與豎直方向的紋理特征,并用輪廓點表示,最后,通過同時考慮兩個正交方向上的特征響應,利用Point Re-Scoring算法可以有效地濾除強單向或弱正交激活的預測,最終文本輪廓可以用一組高質量的輪廓點表示出來。

PCR提出漸進式的坐標回歸處理彎曲文本檢測問題,總體分為三個階段,首先大致檢測到文本區域,獲得文本框,另外通過所設計的Contour Localization Mechanism預測文本最小包圍框的角點坐標,然后通過疊加多個CLM模塊和RCLM模塊預測得到彎曲文本。該方法利用文本輪廓信息聚合得到豐富的文本輪廓特征表示,不僅能抑制冗余的噪聲點對坐標回歸的影響,還能更精確的定位文本區域。

3.2 基于分割的文本檢測

基于回歸的方法雖然在文本檢測上取得了很好的效果,但是對解決彎曲文本還存在問題,且模型復雜。因此,提供了基于分割的文本檢測方法,先從像素層面做分類,判別每一個像素點是否屬于一個文本目標,得到文本區域的概率圖,通過后處理方式(opencv,polygon等后處理)得到文本分割區域的包圍曲線。

Pixellink采用分割的方法解決文本檢測問題,分割對象為文本區域,將同屬于一個文本行(單詞)中的像素鏈接在一起來分割文本,直接從分割結果中提取文本邊界框,無需位置回歸就能達到基于回歸的文本檢測的效果。但是基于分割的方法存在一個問題,對于位置相近的文本,文本分割區域容易出現“粘連“問題。Wu, Yue等人[8]提出分割文本的同時,學習文本的邊界位置,用于更好的區分文本區域。另外Tian等人[9]提出將同一文本的像素映射到映射空間,在映射空間中令統一文本的映射向量距離相近,不同文本的映射向量距離變遠。

MSR針對文本檢測的多尺度問題,提出提取相同圖像的多個scale的特征,然后將這些特征融合并上采樣到原圖尺寸,網絡最后預測文本中心區域、文本中心區域每個點到最近的邊界點的x坐標偏移和y坐標偏移,最終可以得到文本區域的輪廓坐標集合。

針對基于分割的文本算法難以區分相鄰文本的問題,PSENet提出漸進式的尺度擴張網絡學習文本分割區域,預測不同收縮比例的文本區域,并逐個擴大檢測到的文本區域,該方法本質上是邊界學習方法的變體,可以有效解決任意形狀相鄰文本的檢測問題。

假設用了PSENet后處理用了3個不同尺度的kernel,如上圖s1,s2,s3所示。首先,從最小kernel s1開始,計算文本分割區域的連通域,得到(b),然后,對連通域沿著上下左右做尺度擴張,對于擴張區域屬于s2但不屬于s1的像素,進行歸類,遇到沖突點時,采用“先到先得”原則,重復尺度擴張的操作,最終可以得到不同文本行的獨立的分割區域。

Seglink++針對彎曲文本和密集文本問題,提出了一種文本塊單元之間的吸引關系和排斥關系的表征,然后設計了一種最小生成樹算法進行單元組合得到最終的文本檢測框,并提出instance-aware 損失函數使Seglink++方法可以端對端訓練。

PAN針對文本檢測預測速度慢的問題,從網絡設計和后處理方面進行改進,提升算法性能。首先,PAN使用了輕量級的ResNet18作為Backbone,另外設計了輕量級的特征增強模塊FPEM和特征融合模塊FFM增強Backbone提取的特征。在后處理方面,采用像素聚類方法,沿著預測的文本中心(kernel)四周合并與kernel的距離小于閾值d的像素。PAN保證高精度的同時具有更快的預測速度。

FCENet提出將文本包圍曲線用傅立葉變換的參數表示,由于傅里葉系數表示在理論上可以擬合任意的封閉曲線,通過設計合適的模型預測基于傅里葉變換的任意形狀文本包圍框表示,從而實現了自然場景文本檢測中對于高度彎曲文本實例的檢測精度的提升。

DBNet提出可微分閾值(Differenttiable Binarization module)采用動態的閾值區分文本區域和背景。通過網絡去預測圖片每個位置處的閾值,而不是采用一個固定的值,更好的分離文本背景與前景。

?在傳統的圖像分割算法中,獲取概率圖后,會使用標準二值化(Standard Binarize)處理,但是二值化的方法是不可微的(可微的定義:左右極限存在,且相等),無法進行end to end 訓練,公式為

?可微二值化將標準二值化中的階躍函數進行了近似,公式為

?其中,P是上下文獲得的概率圖(Probability Map),T是上下文獲得的閾值圖(Threshold Map),k是增益因子,然后得到近似二值圖(Approximate Binary Map),當損失函數為交叉熵損失函數時,正負樣本的loss是

?對x求偏導:

?DB模型主要分為三個部分:

  • Backbone網絡,負責提取圖像的特征

DB文本檢測網絡的Backbone部分采用的是圖像分類網絡,可以是ResNet,MobileNetV3等模型,,DB的Backbone用于提取圖像的多尺度特征,如下代碼所示,假設輸入的形狀為[640, 640],backbone網絡的輸出有四個特征,其形狀分別是 [1, 16, 160, 160],[1, 24, 80, 80], [1, 56, 40, 40],[1, 480, 20, 20],使用方法:

from ppocr.modeling.backbones.det_mobilenet_v3 import MobileNetV3model_backbone = MobileNetV3() model_backbone.eval()#打印網絡結構 print(model_backbone)
  • FPN網絡,特征金字塔結構增強特征,FPN網絡的輸入為Backbone部分的輸出,輸出特征圖的高度和寬度為原圖的四分之一。

圖像處理的兩種方式:上采樣(upsample)和下采樣(downsample),上采樣是增大圖像,下采樣是縮小圖案。這里的upsample是獲取將較小特征上采樣和大特征進行累加。

  • Head網絡,計算文本區域概率圖,文本區域閾值圖以及文本區域二值圖。
import math import paddle from paddle import nn import paddle.nn.functional as F from paddle import ParamAttrclass DBHead(nn.Layer):"""Differentiable Binarization (DB) for text detection:see https://arxiv.org/abs/1911.08947args:params(dict): super parameters for build DB network"""def __init__(self, in_channels, k=50, **kwargs):super(DBHead, self).__init__()self.k = k# DBHead詳細實現參考 https://github.com/PaddlePaddle/PaddleOCR/blob/release%2F2.4/ppocr/modeling/heads/det_db_head.pydef step_function(self, x, y):# 可微二值化實現,通過概率圖和閾值圖計算文本分割二值圖return paddle.reciprocal(1 + paddle.exp(-self.k * (x - y)))def forward(self, x, targets=None):shrink_maps = self.binarize(x)if not self.training:return {'maps': shrink_maps}threshold_maps = self.thresh(x)binary_maps = self.step_function(shrink_maps, threshold_maps)y = paddle.concat([shrink_maps, threshold_maps, binary_maps], axis=1)return {'maps': y}

其他模塊:

  • DB模型后處理

DB后處理函數根據概率圖中文本區域的響應計算出包圍文本響應區域的文本框坐標。由于網絡預測的概率圖是經過收縮后的結果,所以在后處理步驟中,使用相同的偏移值將預測的多邊形區域進行擴張,即可得到最終的文本框。

DB的輸出結果是文本區域的二值圖,屬于文本區域的響應更高,非文本的背景區域響應值低。DB的后處理即是求這些響應區域的最小包圍框,進而得到每個文本區域的坐標。 另外,通過修改后處理參數可以調整文本框的大小,或者過濾檢測效果差的文本框。

DB后處理有四個參數,分別是:

  • thresh: DBPostProcess中分割圖進行二值化的閾值,默認值為0.3
  • box_thresh: DBPostProcess中對輸出框進行過濾的閾值,低于此閾值的框不會輸出
  • unclip_ratio: DBPostProcess中對文本框進行放大的比例
  • max_candidates: DBPostProcess中輸出的最大文本框數量,默認1000
  • 損失函數定義

模型輸出是3個預測圖,則總得損失函數是

?其中,L是總損失函數,Lb是文本二值圖的損失函數,Ls是概率圖損失,Lt是閾值圖損失,是權重系數。

?Lb是Dice Loss,比較文本二值圖和標簽之間的相似度,常用于二值圖分割。

?Ls是Dice Loss(OHEM),采用帶OHEM的Dice Loss,目的是為了改善正負樣本不均衡的問題。OHEM為一種特殊的自動采樣方式,可以自動的選擇難樣本進行loss的計算,從而提升模型的訓練效果。這里將正負樣本的采樣比率設為1:3。

Lt是Mask L1 Loss,計算預測的文本閾值圖和標簽間的L1距離。

  • 評估指標

文本檢測的計算指標有三個,分別是Precision,Recall和Hmean,三個指標的計算邏輯為:

  • 創建[n, m]大小的一個矩陣叫做iouMat,其中n為GT(ground truth)box的個數,m為檢測到的框數量;其中n,m為除去了文本標定為###的框數量;
  • 在iouMat中,統計IOU大于閾值0.5的個數,將這個值除以gt個數n得到Recall;
  • 在iouMat中,統計IOU大于閾值0.5的個數,將這個值除以檢測框m的個數得到Precision;
  • Hmean的指標計算方式同F1-score的計算方式,公式如下:

4.存在問題

(1)文字漏檢

?原因,GT和預測框的重疊部分小,則可以增加IOU閾值,縮小GT和預測框的差距。另外,漏檢測的本質原因在于,一部分文字的特征沒有響應,歸根結底是網絡沒有學習到漏檢測部分文字的特征。建議具體問題具體分析,可視化預測結果分析漏檢測的原因,是否是因為光照,形變,文字較長等因素導致的,然后針對性的使用數據增強、調整網絡、或者調整后處理等方法優化檢測結果。

參考:

飛槳AI Studio - 人工智能學習與實訓社區集開放數據、開源算法、免費算力三位一體,為開發者提供高效學習和開發環境、高價值高獎金競賽項目,支撐高校老師輕松實現AI教學,并助力開發者學習交流,加速落地AI業務場景https://aistudio.baidu.com/aistudio/projectdetail/3335972

總結

以上是生活随笔為你收集整理的OCR系列——文本检测任务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。