Bartzi / see

Code for the AAAI 2018 publication "SEE: Towards Semi-Supervised End-to-End Scene Text Recognition"
GNU General Public License v3.0
575 stars 147 forks source link

Issue about how to train on a custom dataset #91

Closed codeaway23 closed 4 years ago

codeaway23 commented 4 years ago

I have created a character mapping and split my training dataset into train, test and validation. i have made a json specification accordingly. the dataset files itself are csv files which follow the following pattern image_filename\tlabel_text the label text is not encoded according to its character mapping.

my character mapping looks something like this -

{'a': 97, 'b': 98, 'c': 99, 'd': 100, 'e': 101, 'f': 102, 'g': 103, 'h': 104, 'i': 105, 'j': 106, 'k': 107, 'l': 108, 'm': 109, 'n': 110, 'o': 111, 'p': 112, 'q': 113, 'r': 114, 's': 115, 't': 116, 'u': 117, 'v': 118, 'w': 119, 'x': 120, 'y': 121, 'z': 122, 'A': 65, 'B': 66, 'C': 67, 'D': 68, 'E': 69, 'F': 70, 'G': 71, 'H': 72, 'I': 73, 'J': 74, 'K': 75, 'L': 76, 'M': 77, 'N': 78, 'O': 79, 'P': 80, 'Q': 81, 'R': 82, 'S': 83, 'T': 84, 'U': 85, 'V': 86, 'W': 87, 'X': 88, 'Y': 89, 'Z': 90, '0': 48, '1': 49, '2': 50, '3': 51, '4': 52, '5': 53, '6': 54, '7': 55, '8': 56, '9': 57}

when I run

python3 train_text_recognition.py /app/data/specification.json /app/logs --char-map=/app/data/char_map.json --batch-size=32 --gpu 0

I get the following error

Traceback (most recent call last):
  File "train_text_recognition.py", line 252, in <module>
    test_image = validation_dataset.get_example(0)[0]
  File "/app/chainer/datasets/file_dataset.py", line 142, in get_example
    labels = self.get_labels(self.labels[i])
  File "/app/chainer/datasets/file_dataset.py", line 158, in get_labels
    labels = [int(self.reverse_char_map[ord(character)]) for character in word]
  File "/app/chainer/datasets/file_dataset.py", line 158, in <listcomp>
    labels = [int(self.reverse_char_map[ord(character)]) for character in word]
ValueError: invalid literal for int() with base 10: 'K'

Please help me out. Thanks in advance.

codeaway23 commented 4 years ago

I realised my character mapping was entirely wrong. it needs to be the encoded value mapped to the ord(character) value.