2017-06-08 18 views
2

私はTensorFlowに基づいてこのprojectに取り組んでいます。FSNSデータセットと同じフォーマットのデータセットを作成する方法

自分のデータセットに基づいてattention_ocrでOCRモデルを訓練したいだけですが、自分のイメージと基本的な真理をFSNSデータセットと同じ形式で保存する方法はわかりません。

は誰もがこのプロジェクトに取り組むか、この問題を解決する方法を知っているです: - ?D

+0

あなたはあなたのために、この作業を取得することができましたか?自分のデータを準備するために使ったスクリプトを共有できますか? – Roger

+0

申し訳ありませんが、自分の画像に基づいてデータセットを準備するプロセスを再現していません。私はこの問題に悩まされている。 https://stackoverflow.com/questions/45093932/invalidargumenterror-when-traing-attention-ocr-assign-requires- shapes-of-both –

答えて

7

トレーニング/テストを格納するためのデータ形式は、のFSN紙https://arxiv.org/pdf/1702.03970.pdf(表4)で定義されています。

tf.Example protoでtfrecordファイルを保存するには、tf.python_io.TFRecordWriterを使用できます。 a nice tutorialがあり、既存のanswer on the stackoverflowshort gistが存在します。 enter image description hereと可変textに対応するテキスト:

あなたはndarray num_of_viewspaper図3参照)サイドバイサイドに記憶された画像を有するimg numpyのを持っていると仮定する。ユニコード文字列を、固定長にパディングされていない文字IDのリストに変換する関数を定義する必要があります。たとえば:

char_ids_padded, char_ids_unpadded = encode_utf8_string(
    text='abc', 
    charset={'a':0, 'b':1, 'c':2}, 
    length=5, 
    null_char_id=3) 

は、結果は次のようになります。

char_ids_padded = [0,1,2,3,3] 
char_ids_unpadded = [0,1,2] 

あなたがで定義された関数_int64_feature_bytes_featureを使用している場合gist次のスニペットを使用してのFSN互換tf.Exampleプロトを作成することができます。

char_ids_padded, char_ids_unpadded = encode_utf8_string(
    text, charset, length, null_char_id) 
example = tf.train.Example(features=tf.train.Features(
    feature={ 
    'image/format': _bytes_feature("PNG"), 
    'image/encoded': _bytes_feature(img.tostring()), 
    'image/class': _int64_feature(char_ids_padded), 
    'image/unpadded_class': _int64_feature(char_ids_unpadded), 
    'height': _int64_feature(img.shape[0]), 
    'width': _int64_feature(img.shape[1]), 
    'orig_width': _int64_feature(img.shape[1]/num_of_views), 
    'image/text': _bytes_feature(text) 
    } 
)) 
+0

こんにちは、ゴルバン、あなたの応答のための多くのthx。別の2つの質問があります: 1.中国のデータセットで動作しますか? 2. 1つのイメージでは、いくつかの根拠(より多くのテキストセグメント)がありますが、それも機能しますか? –

+0

1.任意の言語で動作します 2.複数の無関係なテキスト領域では機能しません –

+0

あなたの応答はたくさんあります! –

0

次のコードを直接使用しないでください。

私のコードで
"'image/encoded': _bytes_feature(img.tostring())," 

、私は次のようにwrited:

_,jpegVector = cv2.imencode('.jpeg',img) 
    imgStr = jpegVector.tostring() 
    'image/encoded': _bytes_feature(imgStr) 
関連する問題