summaryrefslogtreecommitdiff
path: root/src/notebooks/Untitled.ipynb
blob: 208f098a0513894f8064f1f2c1b7540c8944dfe1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "import importlib\n",
    "import cv2\n",
    "import yaml\n",
    "\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import torch\n",
    "from torch import nn\n",
    "from importlib.util import find_spec\n",
    "if find_spec(\"text_recognizer\") is None:\n",
    "    import sys\n",
    "    sys.path.append('..')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def convert_y_label_to_string(y, dataset):\n",
    "    return ''.join([dataset.mapper(int(i)) for i in y])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from text_recognizer.models import TransformerModel\n",
    "from text_recognizer.datasets import IamLinesDataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset = IamLinesDataset(train=False,\n",
    "        init_token=\"<sos>\",\n",
    "        pad_token=\"_\",\n",
    "        eos_token=\"<eos>\",\n",
    "        transform=[{\"type\": \"ToTensor\", \"args\": {}}],\n",
    "        target_transform=[\n",
    "            {\n",
    "                \"type\": \"AddTokens\",\n",
    "                \"args\": {\"init_token\": \"<sos>\", \"pad_token\": \"_\", \"eos_token\": \"<eos>\"},\n",
    "            }\n",
    "        ],\n",
    "    )\n",
    "dataset.load_or_generate_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "config_path = \"../training/experiments/TransformerModel_IamLinesDataset_CNNTransformer/1116_082932/config.yml\"\n",
    "with open(config_path, \"r\") as f:\n",
    "    experiment_config = yaml.safe_load(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'CNNTransformer'"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "experiment_config[\"network\"][\"type\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2020-11-16 20:07:51.973 | DEBUG    | text_recognizer.models.base:load_weights:432 - Loading network with pretrained weights.\n"
     ]
    }
   ],
   "source": [
    "model = TransformerModel(network_fn=experiment_config[\"network\"][\"type\"], dataset=experiment_config[\"dataset\"][\"type\"], dataset_args=experiment_config[\"dataset\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "checkpoint_path = \"../training/experiments/VisionTransformerModel_IamLinesDataset_CNNTransformer/1102_221553/model/last.pt\"\n",
    "model.load_from_checkpoint(checkpoint_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.eval()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "data, target = dataset[1006]\n",
    "sentence = convert_y_label_to_string(target, dataset) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "data1 = (data - data.mean()) / data.std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([98])"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "target.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2880x1440 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(40, 20))\n",
    "plt.title(sentence)\n",
    "plt.imshow(data1.squeeze(0).numpy(), cmap='gray')\n",
    "plt.xticks([])\n",
    "plt.yticks([])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('Horbwargethers sis tHater alate Bate Bath Con Hats the Bateries.<eos>',\n",
       " 0.2612667977809906)"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.predict_on_image(data1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [],
   "source": [
    "data, target = dataset[110]\n",
    "sentence = convert_y_label_to_string(target, dataset) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "([], [])"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x1440 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(20, 20))\n",
    "plt.title(sentence)\n",
    "plt.imshow(data.squeeze(0).numpy(), cmap='gray')\n",
    "plt.xticks([])\n",
    "plt.yticks([])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('Boyis cheed iitrincy- tarisaing one', 0.3990435302257538)"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.predict_on_image(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[1, 28, 952], [92]]"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "experiment_config[\"train_args\"][\"input_shape\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=========================================================================================================\n",
      "Layer (type:depth-idx)                                  Output Shape              Param #\n",
      "=========================================================================================================\n",
      "├─Sequential: 1-1                                       [-1, 158, 1, 28, 6]       --\n",
      "|    └─Unfold: 2-1                                      [-1, 168, 158]            --\n",
      "|    └─Rearrange: 2-2                                   [-1, 158, 1, 28, 6]       --\n",
      "├─Linear: 1-2                                           [-1, 158, 512]            86,528\n",
      "├─PositionalEncoding: 1-3                               [-1, 158, 512]            --\n",
      "|    └─Dropout: 2-3                                     [-1, 158, 512]            --\n",
      "├─Embedding: 1-4                                        [-1, 92, 512]             41,984\n",
      "├─PositionalEncoding: 1-5                               [-1, 92, 512]             --\n",
      "|    └─Dropout: 2-4                                     [-1, 92, 512]             --\n",
      "├─Transformer: 1-6                                      [-1, 92, 512]             --\n",
      "|    └─Encoder: 2-5                                     [-1, 158, 512]            --\n",
      "|    |    └─ModuleList: 3                               []                        --\n",
      "|    |    |    └─EncoderLayer: 4-1                      [-1, 158, 512]            3,150,848\n",
      "|    |    |    └─EncoderLayer: 4-2                      [-1, 158, 512]            3,150,848\n",
      "|    |    |    └─EncoderLayer: 4-3                      [-1, 158, 512]            3,150,848\n",
      "|    |    |    └─EncoderLayer: 4-4                      [-1, 158, 512]            3,150,848\n",
      "|    |    └─LayerNorm: 3-1                              [-1, 158, 512]            1,024\n",
      "|    └─Decoder: 2-6                                     [-1, 92, 512]             --\n",
      "|    |    └─ModuleList: 3                               []                        --\n",
      "|    |    |    └─DecoderLayer: 4-5                      [-1, 92, 512]             4,200,960\n",
      "|    |    |    └─DecoderLayer: 4-6                      [-1, 92, 512]             4,200,960\n",
      "|    |    |    └─DecoderLayer: 4-7                      [-1, 92, 512]             4,200,960\n",
      "|    |    |    └─DecoderLayer: 4-8                      [-1, 92, 512]             4,200,960\n",
      "|    |    └─LayerNorm: 3-2                              [-1, 92, 512]             1,024\n",
      "├─Sequential: 1-7                                       [-1, 92, 82]              --\n",
      "|    └─LayerNorm: 2-7                                   [-1, 92, 512]             1,024\n",
      "|    └─Linear: 2-8                                      [-1, 92, 512]             262,656\n",
      "|    └─GELU: 2-9                                        [-1, 92, 512]             --\n",
      "|    └─Dropout: 2-10                                    [-1, 92, 512]             --\n",
      "|    └─Linear: 2-11                                     [-1, 92, 82]              42,066\n",
      "=========================================================================================================\n",
      "Total params: 29,843,538\n",
      "Trainable params: 29,843,538\n",
      "Non-trainable params: 0\n",
      "Total mult-adds (M): 118.22\n",
      "=========================================================================================================\n",
      "Input size (MB): 0.10\n",
      "Forward/backward pass size (MB): 2.73\n",
      "Params size (MB): 113.84\n",
      "Estimated Total Size (MB): 116.68\n",
      "=========================================================================================================\n"
     ]
    }
   ],
   "source": [
    "model.summary(experiment_config[\"train_args\"][\"input_shape\"], 4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "t=[12,1,1,1,1,1,4,4,4,4,4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t[t!=79]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = torch.arange(10)\n",
    "value = 5\n",
    "x = x[x!=value]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([0, 1, 2, 3, 4, 6, 7, 8, 9])"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "t = torch.rand(98)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(1.7656e-43)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t.cumprod(dim=0)[-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred_tokens = torch.Tensor([1,2,21,31, 89, 89])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred_tokens = torch.stack([pred_tokens, pred_tokens])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[ 1.,  2., 21., 31., 89., 89.],\n",
       "        [ 1.,  2., 21., 31., 89., 89.]])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pred_tokens"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "eos_token_index = torch.nonzero(\n",
    "            pred_tokens == 89, as_tuple=False,\n",
    "        )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "if eos_token_index.nelement():\n",
    "    print(eos_token_index[0][0].item())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0, 4],\n",
       "        [0, 5],\n",
       "        [1, 4],\n",
       "        [1, 5]])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eos_token_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eos_token_index.nelement()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "from text_recognizer.models import accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = torch.Tensor([1,2,21,31, 80, 80]).unsqueeze(0)\n",
    "target = torch.Tensor([1,2,1,31, 80, 80]).unsqueeze(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = torch.stack([pred, pred])\n",
    "target = torch.stack([target, target])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "target = torch.tensor([0, 1, 2, 3])\n",
    "pred = torch.tensor([0, 2, 1, 3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accuracy(pred, target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "acc = (target.argmax(-1) == pred.argmax(-1)).float()\n",
    "\n",
    "# return float(100 * acc.sum() / len(acc))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[1.],\n",
       "        [1.]])"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_acc = (pred == target).sum().item()/target.shape[-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.3333333333333335"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_acc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}