Python Keras_ocr example trainieren

Mystery1988

Ensign
Registriert
März 2015
Beiträge
204
Guten Abend zusammen,
vielleicht hat irgendwer eine Idee oder Tipp wie ich folgendes Problem gelöst bekomme.
Ich versuche folgendes Beispiel
https://keras-ocr.readthedocs.io/en/latest/examples/end_to_end_training.html#train-the-recognizer
Lokal auszuprobieren:
Python:
if __name__ == '__main__':
    data_dir = '.'
    alphabet = string.digits + string.ascii_letters + '!?. '
    recognizer_alphabet = ''.join(sorted(set(alphabet.lower())))
    fonts = keras_ocr.data_generation.get_fonts(
        alphabet=alphabet,
        cache_dir=data_dir
    )
    backgrounds = keras_ocr.data_generation.get_backgrounds(cache_dir=data_dir)
    text_generator = keras_ocr.data_generation.get_text_generator(alphabet=alphabet)
    print('The first generated text is:', next(text_generator))


    def get_train_val_test_split(arr):
        train, valtest = sklearn.model_selection.train_test_split(arr, train_size=0.8, random_state=42)
        val, test = sklearn.model_selection.train_test_split(valtest, train_size=0.5, random_state=42)
        return train, val, test


    background_splits = get_train_val_test_split(backgrounds)
    font_splits = get_train_val_test_split(fonts)

    image_generators = [
        keras_ocr.data_generation.get_image_generator(
            height=640,
            width=640,
            text_generator=text_generator,
            font_groups={
                alphabet: current_fonts
            },
            backgrounds=current_backgrounds,
            font_size=(60, 120),
            margin=50,
            rotationX=(-0.05, 0.05),
            rotationY=(-0.05, 0.05),
            rotationZ=(-15, 15)
        ) for current_fonts, current_backgrounds in zip(
            font_splits,
            background_splits
        )
    ]

    # See what the first validation image looks like.
    image, lines = next(image_generators[1])
    text = keras_ocr.data_generation.convert_lines_to_paragraph(lines)
    print('The first generated validation image (below) contains:', text)
    plt.imshow(image)
Es werden auch alle Backgrounds und Fonts heruntergeladen und entpackt.
Er liefert, dann aber bei der Funktion keras_ocr.data_generation.get_fonts nur eine leere Liste zurück :/
Es erscheint folgende Fehlermeldung
Traceback (most recent call last):
File "C:\Users\User\PycharmProjects\dev\main.py", line 54, in <module>
font_splits = get_train_val_test_split(fonts)
File "C:\Users\User\PycharmProjects\dev\main.py", line 48, in get_train_val_test_split
train, valtest = sklearn.model_selection.train_test_split(arr, train_size=0.8, random_state=42)
File "C:\Users\User\PycharmProjects\dev\venv\lib\site-packages\sklearn\utils\_param_validation.py", line 211, in wrapper
return func(*args, **kwargs)
File "C:\Users\User\PycharmProjects\dev\venv\lib\site-packages\sklearn\model_selection\_split.py", line 2617, in train_test_split
n_train, n_test = _validate_shuffle_split(
File "C:\Users\User\PycharmProjects\dev\venv\lib\site-packages\sklearn\model_selection\_split.py", line 2273, in _validate_shuffle_split
raise ValueError(
ValueError: With n_samples=0, test_size=None and train_size=0.8, the resulting train set will be empty. Adjust any of the aforementioned parameters.
Die Suchmaschine des Vertrauens wurde schon genutzt, aber es gab nichts wirklich zutreffendes =/
 
Habe es jetzt nur kurz überflogen (... und Python ist eher ein Hobby):

"ValueError: With n_samples=0," klingt schon mal als würde es keiner samples geben. Ansonsten würden ich zum eingrenzen des Fehlers im Code an gewissen Stellen ne Messagebox platzieren um zu sehen wo es kracht.
 
zeaK schrieb:
"ValueError: With n_samples=0," klingt schon mal als würde es keiner samples geben. Ansonsten würden ich zum eingrenzen des Fehlers im Code an gewissen Stellen ne Messagebox platzieren um zu sehen wo es kracht.
Ich denke einfach, das er durch die Liste die keine Fonts enthält keine Beispiele generieren kann. Ich habe versucht schon irgendwie zu verstehen, wie er die validität überprüft, konnte es aber nicht ganz nach vollziehen.
Ich habe sogar einfach in der Bibliothek, anstatt ein falls ein true zurück liefern lassen, da knallt er dann wo anders.

Ich bin auch soweit in Python noch ein anfänger.

@eweu das hätte ich auch als nächstes gemacht, vielleicht ist es auch in einer bestimmten Konstellation mit bestimmten Versionen, das der Fehler verursacht


Danke für eure Tipps, vielleicht versucht noch jemand auch das Beispiel auszuprobieren und bei ihm klappt es, dann würde der Fehler bei mir liegen
 
Zurück
Oben