関連論文
のパッケージダウンロード- 抽出コード: 0822 : https://pan.baidu.com/s/1WDXf-erVIPWxmoJRVX3_XA?pwd=0822
2009.PP-OCR: 実用的な超軽量 OCR システム
2109.PP-OCRv2: Bag of超軽量 OCR システム 2206 の裏技。PP-OCRv3: 超軽量 OCR システム2308
の改善に向けたさらなる試み。: 現在のコードは公開されていますが (2023.08.07)、技術レポートは更新されていません。プロジェクト コード: github_PaddleOCR_2。 7 |国内 gitee_PaddleOCR
PP-OCRv4
概要
中国語モデルのサイズはわずか3.5M
6622 文字です。わずか280万個の63個の英数字記号を認識するモデル
1. PP-OCRv1モデルの構造
図中のモデルサイズは中英文
認識程度のものです。英数字記号認識の場合、テキスト認識のモデルサイズは1.6M~0.9Mです。残りのモデルは同じサイズです。
主なプロセスは: DB テキスト検出 + 方向分類 + CRNN 文字認識です。
アルゴリズムは文本检测
微分可能二値化アルゴリズムDB
文本识别
を使用し、アルゴリズムのトレーニングに97K 画像を使用し、 CRNNを使用し、1700 万枚を使用しますPPOCRv3 の採用 最も重要なのは、さまざまな方向のテキスト認識を処理するために、検出モジュールと認識モジュールの間に追加されるSVTR
テキスト方向分类
デバイス MobileNetv3 です。(600,000 以上の画像トレーニング)
下の画像内の黒いテキストは、改善された構造または戦略を示します。
モデルモジュールの意味の説明
§──transforms #ネットワークの画像変換モジュール
§──backbones #ネットワークの特徴抽出モジュール
§──necks #ネットワークの特徴拡張モジュール└──heads #ネットワーク
の出力モジュール通信網
2. 改善戦略(圧縮モデルのサイズ、高精度の調整と一般化)
物体検出モデルの最適化
1. テキスト検出用の軽量バックボーン ネットワーク (バックボーン)
MobileNetまたはShuffleNetシリーズを光バックボーンとして使用
2.軽量の文字検出ヘッド、
FPN の同様の構造を使用して、異なるスケールのフィーチャ レイヤーを融合します。 異なる解像度のフィーチャ マップのマージを容易にするために、通常、フィーチャ マップを同じチャネル数に減らすために使用されます。チャネル数は 256 から 96 に削減されます1×1卷积法
。この紙。
3. (バックボーン ネットワーク MobileNetv3 内の) (スクイーズ アンド 励起) モジュールを削除しました。SE
図 7 に示すように、SE ブロックはチャネル間の相互依存関係を明示的にモデル化し、チャネル方向の特性応答を適応的に再調整します。SE ブロックはビジョン タスクの精度を大幅に向上させることができるため、MobileNetV3
SE ブロックは の検索空間に含まれており、多くの SE ブロックが MobileNetV3 アーキテクチャに含まれています。ただし、 640×640 などの場合、 当输入分辨率很大时
SE ブロックを使用してチャネルごとの固有応答 ( channel-wise feature responses
)を推定することは困難です。精度の向上には限界がありますが、時間のコストが高くなります。その際从主干上将SE块移除
、モデルサイズは4.1Mから2.5Mに縮小されましたが、精度には影響がありませんでした。
4.コサイン学習率の減衰:
トレーニングの初期段階では、重みがランダムに初期化されるため、より速い収束のために比較的大きな学習率を設定できます。トレーニングの後半段階では、重みが最適値に近づくため、比較的小さい学習率を使用する必要があります。(学習率を低くすると、極小値を見逃すことがなくなりますが、収束が遅くなるということも意味します。)
5.学習率のウォームアップ
論文提案: 1812.Bag of Tricks for Imageclassification with Convolutional Neural Networks (畳み込みニューラル ネットワークに基づく画像分類のためのさまざまな手法) は、
warm-up
低い学習率 (0 など) から徐々に高い学習率に高めることで実現されます。ネットワーク トレーニングの「ウォームアップ」段階 (通常は 2 ~ 5 エポック)、学習率はトレーニングの進行につれて徐々に増加し、特定のレベルに達した後は、事前に設定された学習率をトレーニングに設定できます (トレーニング プロセスの開始時であるため) 、大きすぎる学習率を使用すると、数値が不安定になる可能性があります (数値の不安定性)。ネットワークの精度を向上させるために、より小さい学習率を使用することをお勧めします) 拡張読み取り: 学習率のウォームアップと学習率の
減衰
6. FPGM 剪枝
(剪定ばさみ)?
FPGM を使用すると、元のモデル内で重要でないサブネットワーク (サブネットワーク) が見つかります。
この方法では、幾何学的中央値を基準として取り、畳み込み層内の各フィルターをユークリッド空間内の点として扱います。次に、これらの点の幾何学的中央値を計算し、同様の値を持つフィルターを削除します。図に示すように、 PP-OCR は
論文1608.Pruning filters for Efficiency convnetsに従って各レイヤーの枝刈り感度を計算し、それを使用して各レイヤの冗長性を評価します。
方向分類の最適化手法
7. 方向分類スケルトン MobileNetV3 小型 x0.35 軽量
8. データ拡張方法
回転、遠近歪み、モーション ブラー、ガウス ノイズ。これらのプロセスは BDA (Base Data Augmentation) と呼ばれます。ランダムな拡張が最も効果的です。最後に、BDA とランダム拡張 ( RandAugment ) を方向分類用のトレーニング画像に追加します。
9.输入图像的分辨率
入力解像度を上げる
これまでのほとんどのテキスト認識方法では、正規化された画像の高さと幅はそれぞれ 32 と 100 に設定されていました。PP-OCR では、方向分類器の精度を向上させるために、高さと幅はそれぞれ 48 と 192 に設定されます。
10. PACT 量子化?
量子化により、ニューラル ネットワーク モデルのレイテンシー (latency )が低くなり、ボリューム (volume) が小さくなり、コンピューティング消費電力 (consumption) が低くなります准参数化剪切激活
。アクティベーションから一部の異常値を早期に除去します。このペーパーは、新しい構造に対応するために改良されています。
テキスト認識の最適化
11.バックボーン ネットワーク MobileNetV3 small x0.5 を特定します。
MobileNetV3 small x1.0 モデルに変更するのも良いですが、サイズを 2M 増やすだけです
12. データ拡張型 TIA
2003. テキスト認識のための共同データ拡張とネットワーク最適化
13. 特徴マップの解決
多语言识别
(多言語認識)、特に中国語認識に適応するために、 CRNN 入力の高さと幅は 32 と 320 に設定されます。, したがって、元の MobileNetV3 の步伐
(ストライド) はテキスト認識に適していないため、
最初のサンプリング特徴マップに加えて、ダウンサンプリング特徴マップのストライドを (2, 2) から (2, 1 ) に変更します。より多くの垂直情報を保持するために、2 番目のダウンサンプリングされた特徴マップのストライドを (2,1) から (1,1) にさらに変更します。したがって、第2のダウンサンプリングされた特徴マップs2のストライドは、特徴マップ全体の解像度とテキスト認識器の精度に大きく影響する。PP-OCR では、経験的なパフォーマンスを向上させるために、s2 は (1,1) に設定されます。
表: mobilenetv3 の検索
14. 正則化パラメータ
過学習 (トレーニング セットでは良好、テスト セットでは平均) を防ぐために、权重衰减
(重み減衰) は過学習を回避するために広く使用されている方法の 1 つです。最後の損失関数の後に、l2 正則化 (L2 減衰) が損失関数に追加されます。l2 正則化の助けを借りて、ネットワークの重みはより小さい値を選択する傾向があり、最終的にネットワーク全体のパラメーターは 0 になる傾向があり、それによってモデルの汎化パフォーマンスがそれに応じて向上します。テキスト認識の場合、l2 減衰は認識精度に大きな影響を与えます。
15. 軽量
完全な接続層を使用して、シーケンス特徴を通常の予測文字にエンコードします。(シーケンス特徴の次元) は、特に 6,000 以上の語彙を含む中国語認識の場合
序列特征的维度
、テキスト認識エンジンのモデル サイズに影響します。一方で、次元が高くなればなるほど配列特徴の表現力が強くなるわけではありません。PP-OCR では、シーケンス特徴の次元は経験的に 48 に設定されています。
16. 事前トレーニング済みモデル
トレーニング データが少ない場合は、既存のネットワークを微調整し、ImageNet などの大規模なデータ セットでトレーニングして、高速な収束と精度の向上を実現します。画像分類と物体検出における転移学習の結果は、上記の戦略が有効であることを示していますが、
実際のシナリオでは、テキスト認識用のデータが制限されることがよくあります。数千万のサンプルを使用してトレーニングした場合、即使是合成的
上記のモデルは精度を大幅に向上させることもできます。
17.-19 テキスト認識や画像検出に類似した手法
PACT 量子化とコサイン学習の減衰と学習率 ウォームアップ学習率のホット スタート
3. 生テキスト検出アルゴリズムDB
微分可能二値化に基づくリアルタイムシーンテキスト検出 1911.微分可能二値化によるリアルタイムシーンテキスト検出
3.1 DBアルゴリズムの概要
[10]に基づく方法分割
は、セグメンテーションの結果がさまざまな形状のシーン テキストをより正確に記述することができるため、テキスト検出で非常に一般的です。
出典: DBNet 読書メモ - Zhou Jun の記事 - Zhihu
セグメンテーション ベースのテキスト検出ネットワークでは、最終的なバイナリ マップは固定しきい値を使用して取得され、しきい値が異なるとパフォーマンスに大きな影響を与えます。自适应二值化
この論文では、二値化のしきい値由网络学习
がピクセルごとに取得され、二値化ステップがトレーニング用のネットワークに完全に追加されるため、最終的な出力画像はしきい値に対して非常に堅牢になります。ピクセルがテキストである確率を表す確率
マップ しきい値マップ、各ピクセルのしきい値バイナリ
マップ、適応的バイナリ化後に取得されたマップ
学習可能な 2 値化公式 (実際には係数を持つシグモイド):
DB モジュールを使用すると、2 値化演算が微分可能になり、トレーニング用にネットワークに追加できます。
Pi,j は確率マップ上の Ti,j を表し、
ネットワークから学習された適応しきい値マップです。
3.2 paddleocr で DB パラメータを調整する手順
このうち、DB アルゴリズムの関連パラメータは次のとおりです。
パラメータ名 | タイプ | デフォルト | 意味 |
---|---|---|---|
det_db_thresh | 浮く | 0.3 | DB が出力する確率マップでは、しきい値を超えるスコアを持つピクセルがテキスト ピクセルとみなされます。 |
det_db_box_thresh | 浮く | 0.6 | 検出結果のフレーム内のすべてのピクセルの平均スコアがしきい値より大きい場合、その結果はテキスト領域とみなされます |
det_db_unclip_ratio | 浮く | 1.5 | Vatti clipping アルゴリズムの拡張係数。このメソッドを使用してテキスト領域を拡張します。 |
最大バッチサイズ | 整数 | 10 | 予測されるバッチサイズ |
使用拡張 | ブール | 間違い | より良い検出結果を得るためにセグメンテーション結果を拡張するかどうか |
it_db_スコア_モード | str | "速い" | sum に対応した DB の検出結果スコアの計算方法は、fast ポリゴンの外接四角形内の全ピクセルに基づいて平均スコアを計算する方法と、元のポリゴン内の全ピクセルに基づいて平均スコアを計算する方法slow があります。計算速度は比較的遅いですが、より正確です。fast slow |
4. テキスト認識アルゴリズム(CRNN、SVTR)
4.1 CRNN
(古い、V1 ~ V2 で使用):
画像ベースのシーケンス認識のためのエンドツーエンドの訓練可能なニューラルネットワークおよびそのシーンテキスト認識への応用
1507。画像ベースのシーケンス認識のためのエンドツーエンドの訓練可能なニューラルネットワークおよびそのシーンテキスト認識への応用は、
以下の構造を有する。 、最初に畳み込み、次に LSTM 処理を使用します
4.2 SVTR
(トランスフォーマーベースのテキスト認識モデル)
2205.SVTR: 単一ビジュアル モデルによるシーン テキスト認識(単一ビジュアル モデル)
SVTR は RNN 構造を使用しなくなり、テキスト ライン イメージのコンテキスト情報をより効率的にマイニングするために Transformers 構造を導入し、それによってテキスト認識能力が向上しました。
構造の異なる認識モジュールの比較
5. 実験
5.1 実験データセット
※PP-OCRv1~v4の構造変更
1.PP -OCRV1
DB テキスト検出、検出枠補正、CRNN テキスト認識の 3 つの部分で構成されます。
最終的に、全体のサイズが 3.5M の超軽量の中国語と英語の OCR と、サイズが 2.8M の英語のデジタル OCR が得られます。詳細については、PP-OCRv1 技術ソリューションを参照してください。
このシステムは、バックボーン ネットワークの選択と調整、予測ヘッドの設計、データ強化、学習率変換戦略、正則化パラメーターの選択、事前トレーニング モデルの使用からなる 19 の効果的な戦略と、8 つの側面からの評価を採用しています模型自动裁剪量化
。各モジュールのモデルの効果チューニングとスリム化については、
FPGM クロッパーと PACT 量子化の実装はPaddleSlimを参照できます。
2.PP -OCRv2
( 红色框
) は v1 と比較した変更点を示し、緑色のボックスは v1 がすでに備えている構造を示します。
5つの大きな改善点
PP-OCR に基づいて、PP-OCRv2 は 5 つの側面でさらに最適化されています。検出
モデルは、コピーペースト データ拡張戦略を採用しています。
CML协同互学习知识蒸馏
認識モデルは、ネットワークとUDML の改良された知識蒸留戦略を採用しています。強化された CTC 損失損失関数の改善 (図を参照)上図の赤枠内)を実現し、さらに推論速度と予測効果の大幅な向上を実現しました。詳細については、PP-OCRv2 テクニカル レポートを参照してください。
LCNet 轻量级骨干
3.PP -OCRv3
( 红色框
) は v2 からの変更点、緑は v2 が既に備えている構造を示します
中国語シーンは PP-OCRv2 中国語モデルと比較して 5% 以上増加、
英語デジタルシーンは PP-OCRv2 英語モデルと比較し、 11% 向上、
多言語シーンでは 80 以上の言語の認識効果が最適化され、平均精度率は 5% 以上向上しました。
PP-OCRv3 の 9 つの主要な改善点
アルゴリズム改善アイデアの観点から、検出および認識モデルに対して合計 9 つの改善が行われました。
PP-OCRv3 の認識モジュールは、SVTR
テキスト認識アルゴリズムに基づいて最適化されています。
SVTR は RNN 構造を使用しなくなり、テキスト行画像のコンテキスト情報をより効率的にマイニングするために Transformers 構造を導入し、それによってテキスト認識能力が向上しました。
PP-OCRv2 の認識モデルを SVTR_Tiny に直接置き換えると、認識精度は 74.8% から 80.1% (+5.3%) に向上しますが、予測速度は 11 倍近く遅くなり、テキスト行の予測に 100ms 近くかかりますCPU
2205.SVTR : 単一のビジュアル モデルによるシーン テキスト認識
検出モジュール:
LK-PAN: 大きな受容野を持つPAN構造;
DML
: 教師モデル相互学習戦略;
RSE-FPN: 残留注意メカニズムのFPN構造;
認識モジュール:
SVTR_LCNet: 軽量テキスト認識ネットワーク;
GTC: 注意誘導CTCトレーニング戦略;
TextConAug: テキスト コンテキスト情報をマイニングするためのデータ拡張戦略、
TextRotNet: 自己教師あり事前トレーニング モデル、
UDML: 共同相互学習戦略、
UIM: ラベルなしデータ マイニング スキーム。エフェクトの観点から見ると、速度が同等の場合、さまざまなシーンの精度が大幅に向上しました。
4. PP-OCRv4 (現時点での最良の 2023.08.07 アップデート)
( 红色框
) は v3 からの変更点、緑は v3 が既に備えている構造を示します
効果の点では同等の速度です 中国語シーンの場合
、PP-OCRv3 中国語モデルと比較して超改善されています4%
;
英語デジタルシーン、PP-OCRv3 英語モデルと比較 モデルは 6% 改善され、
多言語シナリオでは 80 言語の認識効果が最適化され、平均精度率が 8% 以上向上しました。
PPOCRv4 の上位 10 のアルゴリズムの改善点
アルゴリズム改善のアイデアの観点から、検出および認識モデルに対して合計の改善が行われました。
検出モジュール:
LCNetV3
: 高精度バックボーン ネットワーク
PFHead: 並列頭部分岐融合構造
DSR: トレーニング中に動的に縮小率を増加: Student および Teacher ネットワークによって出力される
CML
KL div 損失認識モジュールを追加: : 高精度バックボーン ネットワークLite-Neck: 合理化されたネック構造GTC -NRTR: 安定した注意ガイダンス ブランチMulti-Scale: マルチスケール トレーニング戦略DF: データ マイニング ソリューションDKD: DKD 蒸留戦略
SVTR_LCNetV3
付録 2 コードの使用法
環境インストールのリファレンス:
パドルパドルディープラーニングフレームワーク: https://www.paddlepaddle.org.cn/
https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/quickstart.md
コード
from paddleocr import PaddleOCR, draw_ocr
# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory
img_path = './imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
res = result[idx]
for line in res:
print(line)
# 显示结果
# 如果本地没有simfang.ttf,可以在doc/fonts目录下下载
from PIL import Image
result = result[0]
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='doc/fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')