From cdfb5188060712129a96c45fce864b44578cf800 Mon Sep 17 00:00:00 2001 From: Harald Scheidl <harald@newpc.com> Date: Tue, 2 Feb 2021 01:01:45 +0100 Subject: [PATCH] data aug: random background, write summary of CERs while training --- .gitignore | 2 -- README.md | 1 - data/pixelRelevance.npy | Bin 13008 -> 0 bytes data/translationInvariance.npy | Bin 192 -> 0 bytes data/translationInvarianceTexts.pickle | Bin 294 -> 0 bytes model/.gitignore | 4 ++++ model/accuracy.txt | 1 - src/SamplePreprocessor.py | 18 +++++++++--------- src/main.py | 16 ++++++++++++---- 9 files changed, 25 insertions(+), 17 deletions(-) delete mode 100644 data/pixelRelevance.npy delete mode 100644 data/translationInvariance.npy delete mode 100644 data/translationInvarianceTexts.pickle create mode 100644 model/.gitignore delete mode 100644 model/accuracy.txt diff --git a/.gitignore b/.gitignore index e58673f..61969af 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ data/words* data/words.txt src/__pycache__/ -model/checkpoint -model/snapshot-* notes/ *.so *.pyc diff --git a/README.md b/README.md index a22c6cc..c919f34 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,6 @@ The input image and the expected output is shown below. ``` > python main.py -Validation character error rate of saved model: 11.118344571029994% Init with stored values from ../model/snapshot-76 Recognized: "Hello" Probability: 0.8462573289871216 diff --git a/data/pixelRelevance.npy b/data/pixelRelevance.npy deleted file mode 100644 index 5d1a525240ba5ef3690f42e0d45ee7c032654662..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13008 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 F4FFI79%TRk diff --git a/data/translationInvariance.npy b/data/translationInvariance.npy deleted file mode 100644 index 72c21ed61205d0d076c863f03026f6933e5376ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlV+l>qoAIaUsO_*m=~X4l#&V(cT3DEPSsIR zFV09TNL9B|&@i&l(bQ3>RX_l)9p@_Sxed$h50;eK@AoRTFWFOR-?*{Te!=rf`y78k zJO7oHcGin{>?WpOw!3n6x!t$h-|RSd9k)|rv#<|&D{H@@Mbkc{j@N#=%?CT91aEsk kD=+)2$IR@RqgCxSoc!$HZw#>KVsN)N++ktA_Kd4N0FQM-YXATM diff --git a/data/translationInvarianceTexts.pickle b/data/translationInvarianceTexts.pickle deleted file mode 100644 index 05bf9cf0a5989e7b38f4e34bb761e27019d3766c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmZo*jxA)+h+t-5U`Q-VEo6kVnBXjCIEw|&VuiEV;4JnC7LX|*V>l2@P6U$+!Q@6T zdEf@{A_V#1g8Xon0GuTVX9>Ys!f=)doFxipiNRUoaFzs|B?)Iq!CBI9mQ1Q10Gw1l AUjP6A diff --git a/model/.gitignore b/model/.gitignore new file mode 100644 index 0000000..86d0cb2 --- /dev/null +++ b/model/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore \ No newline at end of file diff --git a/model/accuracy.txt b/model/accuracy.txt deleted file mode 100644 index 24c9310..0000000 --- a/model/accuracy.txt +++ /dev/null @@ -1 +0,0 @@ -Validation character error rate of saved model: 10.89210233592881% \ No newline at end of file diff --git a/src/SamplePreprocessor.py b/src/SamplePreprocessor.py index c82ff0a..b58a02c 100644 --- a/src/SamplePreprocessor.py +++ b/src/SamplePreprocessor.py @@ -23,9 +23,9 @@ def preprocess(img, imgSize, dataAugmentation=False): if random.random() < 0.25: img = cv2.erode(img, np.ones((3, 3))) if random.random() < 0.5: - img = img * (0.5 + random.random() * 0.5) + img = img * (0.1 + random.random() * 0.9) if random.random() < 0.25: - img = np.clip(img + (np.random.random(img.shape) - 0.5) * random.randint(1, 50), 0, 255) + img = np.clip(img + (np.random.random(img.shape) - 0.5) * random.randint(1, 25), 0, 255) if random.random() < 0.1: img = 255 - img @@ -33,20 +33,20 @@ def preprocess(img, imgSize, dataAugmentation=False): wt, ht = imgSize h, w = img.shape f = min(wt / w, ht / h) - fx = f * np.random.uniform(0.75, 1.25) - fy = f * np.random.uniform(0.75, 1.25) + fx = f * np.random.uniform(0.75, 1.5) + fy = f * np.random.uniform(0.75, 1.5) # random position around center txc = (wt - w * fx) / 2 tyc = (ht - h * fy) / 2 - freedom_x = wt // 10 - freedom_y = ht // 10 - tx = txc + np.random.randint(-freedom_x, freedom_x) - ty = tyc + np.random.randint(-freedom_y, freedom_y) + freedom_x = wt / 5 + freedom_y = ht / 5 + tx = txc + np.random.uniform(-freedom_x, freedom_x) + ty = tyc + np.random.uniform(-freedom_y, freedom_y) # map image into target image M = np.float32([[fx, 0, tx], [0, fy, ty]]) - target = np.ones(imgSize[::-1]) * 255 / 2 + target = np.ones(imgSize[::-1]) * np.random.uniform(0, 255) img = cv2.warpAffine(img, M, dsize=imgSize, dst=target, borderMode=cv2.BORDER_TRANSPARENT) # no data augmentation diff --git a/src/main.py b/src/main.py index 72a6be0..d28dacc 100644 --- a/src/main.py +++ b/src/main.py @@ -1,4 +1,5 @@ import argparse +import json import cv2 import editdistance @@ -12,14 +13,20 @@ from SamplePreprocessor import preprocess class FilePaths: "filenames and paths to data" fnCharList = '../model/charList.txt' - fnAccuracy = '../model/accuracy.txt' + fnSummary = '../model/summary.json' fnInfer = '../data/test.png' fnCorpus = '../data/corpus.txt' +def write_summary(charErrorRates): + with open(FilePaths.fnSummary, 'w') as f: + json.dump(charErrorRates, f) + + def train(model, loader): "train NN" epoch = 0 # number of training epochs since start + summaryCharErrorRates = [] bestCharErrorRate = float('inf') # best valdiation character error rate noImprovementSince = 0 # number of epochs no improvement of character error rate occured earlyStopping = 25 # stop training after this number of epochs without improvement @@ -39,14 +46,16 @@ def train(model, loader): # validate charErrorRate = validate(model, loader) + # write summary + summaryCharErrorRates.append(charErrorRate) + write_summary(summaryCharErrorRates) + # if best validation accuracy so far, save model parameters if charErrorRate < bestCharErrorRate: print('Character error rate improved, save model') bestCharErrorRate = charErrorRate noImprovementSince = 0 model.save() - open(FilePaths.fnAccuracy, 'w').write( - f'Validation character error rate of saved model: {charErrorRate * 100.0}%') else: print(f'Character error rate not improved, best so far: {charErrorRate * 100.0}%') noImprovementSince += 1 @@ -140,7 +149,6 @@ def main(): # infer text on test image else: - print(open(FilePaths.fnAccuracy).read()) model = Model(open(FilePaths.fnCharList).read(), decoderType, mustRestore=True, dump=args.dump) infer(model, FilePaths.fnInfer) -- GitLab