Datawhaleゼロベースの入門CV競争-Task01問題の理解

ここに写真の説明を挿入

1質問の理解

  • コンテストタイトル:CVのストリートキャラクター認識
  • コンテストの目標:このコンテストを通じて、主にコンテスト参加者がビジュアルコンテストを開始し、データモデリングの能力を向上させるために、すべての人をコンピュータービジョンの世界に導くことができます。
  • チャレンジタスク:チャレンジはコンピュータービジョンでの文字認識に基づいており、参加者はストリート文字のエンコードを予測する必要があります。これは典型的な文字認識の問題です。
    質問の難易度を単純化するために、質問データは公開データセットSVHNを使用するため、アイデアの参照として対応する多くの論文を選択できます。

1.1質問データ

コンテストの質問では、ストリートキャラクターをコンテストの質問データとして使用します。データセットは、登録後に表示およびダウンロードできます。データは、収集されたSVHNストリートキャラクターから取得され、匿名でサンプリングされています。
ここに写真の説明を挿入

注:コンテストのルールに従い、すべての参加者は、コンテストで提供されたデータセットを使用してトレーニングを完了することしかできず、SVHNの元のデータセットをトレーニングに使用することはできません。競技終了後、トッププレイヤーのコードが審査され、ルールに違反したプレイヤーはランキング結果をクリアします。
トレーニングセットのデータには3Wの写真が含まれ、検証セットのデータには1Wの写真が含まれます。各写真には、カラー画像と対応するコーディングカテゴリ、および特定の場所が含まれます。ゲームの公平性を確保するために、テストセットAには4Wの写真が含まれ、テストセットBには含まれます。 4W写真。
なお、このコンテストでは、写真に写っているすべてのキャラクターを認識してもらう必要があります。コンテストの難易度を下げるために、トレーニングセットと検証セットのすべてのキャラクターのポジションボックスを用意しています。

1.2データラベル

トレーニングデータの各画像について、対応するエンコーディングラベルと特定の文字ボックスの位置が示され(文字の位置はトレーニングセットと検証セットで示されます)、モデルトレーニングに使用できます。

フィールド 説明
左上隅の座標X
高さ 文字の高さ
左上隅の座標Y
文字幅
ラベル 文字コード

キャラクターの座標は次のとおりです
ここに写真の説明を挿入
。ゲームデータ(トレーニングセットと検証セット)では、同じ画像に1つ以上のキャラクターが含まれる場合があります。したがって、ゲームデータのJSON注釈には、2文字の境界情報が含まれます。
ここに写真の説明を挿入

1.3評価指標

出場者から提出された結果を実際の写真のコードと比較し、コードの全体的な認識精度を評価指標として使用します。文字エラーはエラーです。最終評価指標が大きいほど良いです。具体的な計算式は次のとおりです。

スコア=正しいコード認識テストセットの写真の数score = \ frac {\ text {正しいコード認識の認識の数}} {\ text {テストセット内の写真の数}} s c o r e= テストセット内の画像の数  コード化されたIDの正しい数 

1.4データの読み取り

誰もがデータを読みやすくするために、ここではJSONでタグを読み取る方法を示します。

import json
import cv2
import numpy as np
import matplotlib.pyplot as plt

train_json = json.load(open('../input/train.json'))

# 数据标注处理
def parse_json(d):
    arr = np.array([
        d['top'], d['height'], d['left'],  d['width'], d['label']
    ])
    arr = arr.astype(int)
    return arr
    
img = cv2.imread('../input/train/000000.png')
arr = parse_json(train_json['000000.png'])

plt.figure(figsize=(10, 10))
plt.subplot(1, arr.shape[1]+1, 1)
plt.imshow(img)
plt.xticks([]); plt.yticks([])

for idx in range(arr.shape[1]):
    plt.subplot(1, arr.shape[1]+1, idx+2)
    plt.imshow(img[arr[0, idx]:arr[0, idx]+arr[1, idx],arr[2, idx]:arr[2, idx]+arr[3, idx]])
    plt.title(arr[4, idx])
    plt.xticks([]); plt.yticks([])

ここに写真の説明を挿入

1.5問題解決のアイデア

競争問題の分析:競争問題の本質は分類問題であり、それは絵の特徴を認識する必要があります。ただし、下図のように、質問のデータ画像の異なる画像に含まれる文字数は異なります。2文字の写真、3文字の写真、4文字の写真があります。
ここに写真の説明を挿入

–簡単な入力のアイデア:固定長の文字認識。
コンテストの質問は、固定長の文字認識の問題として抽象化できます。コンテストの質問データセットでは、ほとんどの画像の文字数は2〜4で、最大文字数は6です。
したがって、すべての画像は6文字の認識問題として抽象化でき、文字23は23XXXXで埋められ、文字231は231XXXで埋められます。
ここに写真の説明を挿入記入後、元のコンテストの質問は、6文字の分類問題を単純化することができます。各文字の分類では、11のカテゴリが分類されています。分類が塗りつぶされた文字の場合、文字が空であることを意味します。

–専門的な文字認識のアイデア:可変長文字認識
ここに写真の説明を挿入
文字認識の研究では、この可変長文字認識の問題を解決するための特定の方法があり、CRNN文字認識モデルがより一般的です。
このコンテストで提供される画像データは比較的規則的であり、単語または文と見なすことができます。

–専門的な分類のアイデア:検出と認識
。トレーニングセットと検証セットのすべての写真の文字の位置が質問データに示されています。したがって、文字の位置を最初に識別し、オブジェクト検出のアイデアによって完了することができます。
ここに写真の説明を挿入
この種の考え方では、競技者はテストセット内の文字を認識するための文字検出モデルを構築する必要があります。プレイヤーは、オブジェクト検出モデルSSDまたはYOLOを参照して完了することができます。

1.6まとめ

要約すると、この質問は単純な文字認識の問題ですが、コンピュータビジョン分野のさまざまなモデルで使用できる多くの解決策があり、入門学習に非常に適しています。
3つの解決策の難易度は低いものから高いものまでさまざまであるため、学習を開始する学生は、最初に固定長の文字認識のアイデアを学ぶことをお勧めします。ドキュメントの後のコンテンツでは、固定長の文字認識も例として使用され、徐々にコンピューターのビジョンに慣れます。

参照

Computer Vision Practice(Street View Character Encoding Recognition)
datawhalechina

Datawhaleは、データサイエンスとAIに焦点を当てたオープンソース組織であり、多くの大学やこの分野の有名企業から優秀な学習者を集め、オープンソースと探索精神を持ったチームメンバーのグループを集めています。Datawhaleは、「学習者のために、学習者とともに成長する」というビジョンを掲げ、真の自己表現、開放性と寛容性、相互信頼と相互支援、間違いを犯そうとする勇気、責任を取る勇気を奨励しています。同時に、Datawhaleはオープンソースの概念を使用して、オープンソースコンテンツ、オープンソース学習とオープンソースソリューションを探索し、人材トレーニングを強化し、人材の成長を支援し、人と人、人と知識、人と企業、人と未来の間のつながりを確立します。

おすすめ

転載: blog.csdn.net/OuDiShenmiss/article/details/106245105