Ocr

PixelLink:インスタンスセグメンテーションアルゴリズムによるシーンテキストの検出



Pixellink Detecting Scene Text Via Instance Segmentation Algorithm



PixelLink:インスタンスセグメンテーションによるシーンテキストの検出 記事はAAAI2018、コードアドレスで公開されました: https://github.com/ZJULearning/pixel_link

この記事は、画像セグメンテーションアルゴリズムとCVPR2017の以前のSVLinkに触発されました。 SegLink これらの2つの記事の場合、この記事は実際には非常に理解しやすいものです。



記事のアイデアを紹介する前に、この作業を行うという著者のアイデアを紹介します。著者は、EASTなどの一部の方法では、ボックスの回帰を使用して画像のセグメンテーションを組み合わせると考えています(EASTで抽出されたスコアマップはセグメンテーション構造です)。実際、画像のセグメンテーションはテキストの位置を示すことができます。回帰にボックスを使用する必要はないため、記事ではテキストのローカリゼーションにフレーム回帰を使用せずにセグメンテーション方法のみを使用しています。ただし、テキストの検出は画像のセグメンテーションとは異なります。テキストチェックの配置がより正確になります。セグメンテーション方法だけでは、テキストを近距離で正確に見つけることができません。したがって、SegLinkのリンクのアイデアは予測で予測されるだけではありません。どのピクセルがテキストであるかだけでなく、テキストのピクセルを相互に接続して適切なテキストボックスを形成できるかどうかも予測します(たとえば、2つのピクセルはテキストピクセルとしてチェックされますが、2つのテキストボックスピクセルであり、それらはより小さくなります)、したがって、より正確な検査領域を出力します。

上記のアイデアを読んだ後、次の内容がよく理解されています。一般的なプロセスを以下に示します
画像



まず、ネットワーク構造

ネットワークのバックボーンはVGG16を使用し、最後の2つのレイヤーは畳み込みレイヤーに接続されています。構造はFCNの構造を使用しています。この記事では、それぞれ{conv2_2、conv3_3、conv4_3を取る2つの機能マップの融合構造を試します。 、conv5_3、fc_7(これは実際には畳み込み層の7番目の層です)}融合され、融合のために{conv3_3、conv4_3、conv5_3、fc_7(7番目の層の畳み込み層)}がフェッチされました。入力は画像で、出力は18チャネルの結果です。2チャネルは予測された各ピクセルがテキストであるかどうかを示し、16チャネルは各ピクセルをその8つの近傍に接続する必要があるかどうかの確率マップを表します。
ネットワーク構造を次の図に示します(図のfc6とfc7は畳み込み層です)。図のプラス記号は機能マップの追加です。
画像

上記の18チャネルを取得した後、2つのしきい値を使用して、ピクセル予測結果とリンク予測結果をそれぞれフィルタリングし、すべてのピクセルを、リンクチャネルと組み合わせたポジティブサンプルによって予測されたピクセルの予測結果に接続します(ピクセル内に2つのリンクがあるため、ここで接続するためのルールは、しきい値に達するリンクがある場合、2つのピクセルが相互に接続されるため、テキスト検出領域を取得でき、最後にOpenCVのminAreaRectは次のようになります。使用されます(関数は出力です)。回転可能なポイントセットを囲む最小の長方形)。このようにして、テキストボックスの一部の列を出力できますが、ノイズの影響を防ぐために、短辺が10未満または面積が300未満のテキストボックスを除外して、最終的なテキストチェック結果を取得します。

第二に、ラベルの生成(グラウンドトゥルース)

ラベルの生成は比較的簡単で、テキストボックスのピクセルはポジティブサンプルです。テキストボックスが重なるという問題がある場合、重なっている領域はネガティブサンプルです。リンクタグもわかりやすいです。 2つのピクセルが同じテキストボックスからのものである場合、それらの間のリンクは正のサンプルであり、もう一方は負のサンプルです。ここでのグラウンドトゥルースのサイズは画像サイズではなく、特定のサイズはネットワーク出力サイズ、つまりネットワークの出力と同じサイズに関連していることに注意してください。



第三に、損失関数の定義

損失関数は次のように定義されます。
L =λLpix e l + L l i n k L = lambda L_ {pixel} + L_ {link}
リンクの結果はポジティブサンプルのピクセルに基づいて計算されるため、λラムダここで2.0に設定します。

ピクセル損失の計算
画像内のテキスト領域が大きいまたは小さいため、すべてのピクセルの重みが同じである場合、そうすることは小さいテキストに対して不公平であり、トレーニング結果が不十分になります。異なるテキスト領域のピクセルの重みは異なり、具体的な設定方法は次のとおりです。
特定の画像にN個のテキストボックスがあるとすると、各テキストボックスの重みは同じで、次のように設定されます。B i B_ {i}B i B_ {i}計算方法は以下のとおりです。
B i = SN、S = ∑ i NS i、∀i∈1、⋯&ThinSpace、N B_ {i} = frac {S} {N}、S = sum ^ {N} _ {i} S_ {i }、 forall_ {i} in {1、 cdots、N}
ここで、i番目のテキストボックスの場合S i = a r e a S_ {i} =面積の場合、ボックス内の各ピクセルの重みは次のように設定されます。w i = B i S i w_ {i} = frac {B_ {i}} {S_ {i}}

上記のルールに従って、ポジティブサンプルのピクセルの重みを決定でき、小さいテキストボックスの重みが大きくなり、その逆も同様です。次に、Online Hard Example Ming(OHEM)によって選択されたネガティブサンプルのピクセルの重みが1に設定されます。

重み行列は、上記の2つのルールによって取得できます。W W、この行列と組み合わせると計算できますL p i x e l L_ {ピクセル}、計算方法は以下のとおりです。
L p i x e l = 1(1 + r)S W L p i x e l C E L_ {pixel} = frac {1} {(1 + r)S} WL_ {pixel_CE}
どこL p i x e l C E L_ {pixel_CE}これは、クロスエントロピー損失関数によってピクセルがテキストであるかどうかを検出する損失関数行列です。

接続損失の計算
接続損失予測は、リンクが正か負かによって個別に計算され、正のサンプルとの接続のみが計算されます。計算方法は以下のとおりです。
L l i n k _ p o s = W p o s _ l i n k L l i n k _ C E L_ {link _pos} = W_ {pos _link} L_ {link _CE}
L l i n k _ n e g = W n e g _ l i n k L l i n k _ C E L_ {link _neg} = W_ {neg _link} L_ {link _CE}
どこ、L l i n k _ C E L_ {リンク _CE}リンクのクロスエントロピー損失計算マトリックスです。W p o s _ l i n k W_ {pos _link}W n e g _ l i n k W_ {neg _link}リンクの重みです。次のように計算されます。
W pos _ link(i、j、k)= W(i、j)∗(Y link(i、j、k)= = 1)W_ {pos _link}(i、j、k)= W(i 、j)*(Y_ {link}(i、j、k)== 1)
W neglink(i、j、k)= W(i、j)∗(Y link(i、j、k)= = 0)W_ {neg_link}(i、j、k)= W(i、j)* (Y_ {link}(i、j、k)== 0)
ここで、Wはピクセル損失の計算で導入されたピクセルの重みであり、kはピクセル(i、j)に隣接するk番目のピクセルです。Y l i n k Y_ {リンク}リンクのタグ値を示します。

最後の接続の損失は、次の式に示すように計算されます
Lリンク= Lリンク_posrsum(W pos _ link)+ L linknegrsum(W neg _ link)L_ {link} = frac {L_ {link _pos}} {rsum(W_ {pos _link})} + frac {L_ {link_neg}} {rsum(W_ {neg _link})}
ここで、rsumはreducesumを表します。

PixelLinkアルゴリズムは基本的にここで紹介されています。

中国のポジショニングと識別評価方法

OCR交換グループへようこそ:785515057