faustomorales / keras-ocr

A packaged and flexible version of the CRAFT text detector and Keras CRNN recognition model.
https://keras-ocr.readthedocs.io/
MIT License
1.39k stars 360 forks source link

Training model on Cocotext_recognizer_dataset has a very high loss #128

Open ahsan44411 opened 4 years ago

ahsan44411 commented 4 years ago

I downloaded the get_cocotext_recognizer_dataset using the example you showed and I thought that a large dataset like this would help in good training. But the loss is very high. What parameter can I tweak to make loss go down.

Data train_labels = keras_ocr.datasets.get_cocotext_recognizer_dataset(split='train', cache_dir='.', limit=None, legible_only=True, english_only=True, return_raw_labels=False) test_labels = keras_ocr.datasets.get_cocotext_recognizer_dataset(split='val', cache_dir='.', limit=None, legible_only=True, english_only=True, return_raw_labels=False)

train_labels = [(filepath, box, word.lower()) for filepath, box, word in train_labels] test_labels = [(filepath, box, word.lower()) for filepath, box, word in test_labels]

batch_size = 20 augmenter = imgaug.augmenters.Sequential([ imgaug.augmenters.GammaContrast(gamma=(0.25, 3.0)), ])

train_labels, validation_labels = sklearn.model_selection.train_test_split(train_labels, test_size=0.2, random_state=42) (training_image_gen, training_steps), (validation_image_gen, validation_steps) = [ ( keras_ocr.datasets.get_recognizer_image_generator( labels=labels, height=recognizer.model.input_shape[1], width=recognizer.model.input_shape[2], alphabet=alphabet, augmenter=augmenter ), len(labels) // batch_size ) for labels, augmenter in [(train_labels, augmenter), (validation_labels, None)]
] training_gen, validation_gen = [ recognizer.get_batch_generator( image_generator=image_generator, batch_size=batch_size ) for image_generator in [training_image_gen, validation_image_gen] ]

Training callbacks = [ tf.keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=10, restore_best_weights=True), tf.keras.callbacks.ModelCheckpoint('recognizer_borndigital.h5', monitor='val_loss', save_best_only=True), tf.keras.callbacks.CSVLogger('recognizer_borndigital.csv') ] recognizer.training_model.fit_generator( generator=training_gen, steps_per_epoch=training_steps, validation_steps=validation_steps, validation_data=validation_gen, callbacks=callbacks, epochs=1000, ) Epoch 1/1000 1971/1971 [==============================] - 439s 223ms/step - loss: 14.4727 - val_loss: 14.3566 Epoch 2/1000 1971/1971 [==============================] - 439s 223ms/step - loss: 13.5525 - val_loss: 12.9927 Epoch 3/1000 1971/1971 [==============================] - 438s 222ms/step - loss: 12.4895 - val_loss: 12.0507 Epoch 4/1000 1971/1971 [==============================] - 444s 225ms/step - loss: 12.2933 - val_loss: 16.2150 Epoch 5/1000 1971/1971 [==============================] - 441s 224ms/step - loss: 16.2807 - val_loss: 16.2589 Epoch 6/1000 1971/1971 [==============================] - 440s 223ms/step - loss: 16.1630 - val_loss: 16.4781 Epoch 7/1000 1971/1971 [==============================] - 438s 222ms/step - loss: 16.1914 - val_loss: 16.2714 Epoch 8/1000 1971/1971 [==============================] - 441s 224ms/step - loss: 16.1485 - val_loss: 16.2513 Epoch 9/1000 1971/1971 [==============================] - 440s 223ms/step - loss: 16.1425 - val_loss: 16.4134 Epoch 10/1000 1971/1971 [==============================] - 439s 223ms/step - loss: 16.1068 - val_loss: 16.2472 Epoch 11/1000 1971/1971 [==============================] - 442s 224ms/step - loss: 16.0972 - val_loss: 16.3238 Epoch 12/1000 1971/1971 [==============================] - 441s 224ms/step - loss: 16.0732 - val_loss: 16.3265 Epoch 13/1000 1971/1971 [==============================] - 439s 223ms/step - loss: 16.1151 - val_loss: 16.3664

ezzaimsoufiane commented 3 years ago

You are usig COCO dataset yet still saving your checkpoint in borndigital.h5