# Projekttagebuch Smart-HEC ## Probleme OCR-D / AVV ### Cropping ### Deskewing ### Dewarping/De-Keystone 1. Mit https://github.com/mzucker/page_dewarp … (mußte ich erst von Python 2 portieren und ein paar cv2/numpy-Aktualisierungen; außerdem täte vernünftige Paketierung not) ![](https://user-content.gitter-static.net/c519eca375cc6deb5a0ccde45e1e94f625c33365/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f6e7361522f7468756d622f3130355f30325f616262722e6a7067) ![](https://user-content.gitter-static.net/277d2410f5c0dce4f656e18882bc9bf955a94cc1/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f574339792f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f64656275675f302e315f7468726573686f6c6465642e706e67) ![](https://user-content.gitter-static.net/fd48aaba521667c9270e78c7b3cd40aadb06f26f/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f317449462f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f64656275675f302e325f64696c617465642e706e67) ![](https://user-content.gitter-static.net/a9de047be200cb75711dd31cff3999dac96fea92/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f514f75362f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f64656275675f302e335f65726f6465642e706e67) ![](https://user-content.gitter-static.net/aa4cf20bab6d8661e5925a1c62264c977229d38d/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f70394e422f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f64656275675f315f636f6e746f7572732e706e67) ![](https://user-content.gitter-static.net/48c9ccb61a1715a1a12de9ed1812516a539d6bab/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f587778552f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f64656275675f325f7370616e732e706e67) ![](https://user-content.gitter-static.net/693e6a65e613a54efb240fba0b5e538120d74339/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f383961352f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f64656275675f335f7370616e5f706f696e74732e706e67) ![](https://user-content.gitter-static.net/29e6872d663ea75cad8693cd006ed01d9bef709c/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f4a31444f2f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f64656275675f345f6b6579706f696e74735f6265666f72652e706e67) ![](https://user-content.gitter-static.net/78d68f409cfc93db6c84044a27af5e6daf423baf/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f4b704b342f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f64656275675f355f6b6579706f696e74735f61667465722e706e67) ![](https://user-content.gitter-static.net/42de002bf06fdcd3c1ab382ab05112ea51fcde77/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f534439662f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f64656275675f365f6f75747075742e706e67) (Also schon mal nicht schlecht; läßt sich aber noch optimieren.) 1. Fred's [unperspective](http://www.fmwconcepts.com/imagemagick/unperspective/index.php) braucht hingegen einen deutlichen Grauwert-Unterschied für den Hintergrund, was hier nicht der Fall ist: ![](https://user-content.gitter-static.net/5d618e1ae80cd1d1dc1d95178855c09813f75958/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f5174614d2f7468756d622f4f43522d442d494d472d44454e5f3130355f30325f616262725f756e70657273706563746976655f6d61736b2e706e67) (hier der gescheiterte Versuch, mit Floodfilling die Maske zu finden – eigentlich sollte nur das A4-Blatt weiß sein) ![](https://user-content.gitter-static.net/4cf8bc23021068510b2bf27b4db7026801092d96/68747470733a2f2f66696c65732e6769747465722e696d2f3562393761653531643733343038636534666137623165652f487368392f7468756d622f4f43522d442d494d472d4445535045434b5f3130355f30325f616262725f756e70657273706563746976655f6d61736b2e706e67) (dies der noch schlimmer gescheiterte Versuch, es mit einer Binarisierung zu machen – Hintergrund innen und außen sind sich einfach zu ähnlich). Jedenfalls bricht das Tool dann schon ab, weil es keine einheitliche, geschlossene Maskenfläche findet 1. das DFKI-Dewarping ist so dermaßen unterirdisch gemacht, daß man es gar nicht erst probieren kann: [OCR-D/ocrd_anybaseocr#40](https://github.com/OCR-D/ocrd_anybaseocr/issues/40) [OCR-D/ocrd_anybaseocr#61](https://github.com/OCR-D/ocrd_anybaseocr/issues/61) ### Binarisierung ### Tesseract-Sparsemode ### Export für LAREX ### Re-Import für Extraktion (Rohdaten vs binarisiert, Original vs Cropped/Deskewed) ### Extraktion und Formatkonvertierung (COCO) ### Laufzeit-Komponente für Inferenz ## Probleme LAREX und postdemokratie ### Bookpath und Verzeichnisstruktur-Annahmen https://github.com/OCR4all/LAREX/issues/160 https://github.com/OCR4all/LAREX/issues/161 https://github.com/OCR4all/LAREX/issues/162 ### PAGE-Import https://github.com/OCR4all/LAREX/issues/172 https://github.com/OCR4all/LAREX/issues/173 https://github.com/OCR4all/LAREX/issues/174 https://github.com/OCR4all/LAREX/issues/176 https://github.com/OCR4all/LAREX/pull/179 https://github.com/OCR4all/LAREX/issues/181 ### Build und Konfiguration / Modus https://github.com/OCR4all/LAREX/issues/180 https://github.com/OCR4all/LAREX/issues/182 ### Handling / Bugs ### Dokumentation ### Deployment ## Probleme Mask-RCNN ### EOL / Support - https://github.com/matterport/Mask_RCNN/issues/936 (PRs/Issues laufen weiter an, keine Freigabe/Archivierung) - mögliche Alternative auf TF-Basis: https://github.com/tensorpack/tensorpack/tree/master/examples/FasterRCNN ### Keras-Generator / Multithreading - lief nicht los / nicht weiter nach 1. Epoche - alle Worker hatten gleiche Daten - nicht auf leeren Seiten ### Packaging - requirements - `metric_tensors` - `K.tf.where` ### leere Seiten / spärliche Regionen / Hintergrund vs Padding Falschpositive ... ### Erweiterung auf Input-Annotierung mit Kontext (RGBA) ### Augmentierung ### Training und Inferenz mit inaktiven Klassen / Multiclass - normalerweise: - jeder Datensatz (`source`) enthält bestimmte Klassen (`category_id`) - bei COCO-Import (`load_coco`) werden alle auf interne Klassen des Modells abgebildet (`add_class()`, `class_info`) - es wird stets zwischen externen und internen Klassen umgerechnet (vorwärts: `map_source_class_id()` mit `"SRC.ID"`, `source_class_ids()`, rückwärts: `get_source_class_id()`) - beim Training gehen die inaktiven Klassen (die nicht im Datensatz vorkamen) nicht in die Zielfunktion ein - Probleme: - wenn man mehrere COCO-Files nacheinander importiert, teilen sie sich keinerlei Klassen (werden alle externen auf verschiedene interne abgebildet) - wenn man mehrere COCO-Files einzeln importiert, teilen sie sich alle Klassen (werden alle externen auf dieselben internen abgebildet) - wir wollen jeweils nur 1 Klasse trainieren, aber alle im selben Modell haben (ohne alles auf einmal trainieren zu müssen) - wir wollen auch bei Inferenz vorab bestimmen, welche Klasse überhaupt erlaubt ist - also: - Datensatz = Klasse - alle Klassen sind immer (statisch) bekannt ## Probleme GPU-Cluster ### Modulsystem und Build - [offizielle Anleitung](https://doc.zih.tu-dresden.de/hpc-wiki/bin/view/Compendium/BuildingSoftware) lückenhaft - Haupt-Kritikpunkte: 1. Module vs Partitionen 1. Module hängen an _Toolchains_, welche nicht vermischt werden dürfen – was aber nicht verhindert oder mit Konfliktverwaltung aufgelöst wird - viele große (aufwendig zu bauende) Bibliotheken für ML stehen nicht in sinnvollen (aktuellen oder älteren, für alle Partitionen/Architekturen) Versionen zur Verfügung, sind teilweise defekt Bsp.: - `TensorFlow/1.15.0-fosscuda-2019b-Python-3.7.4` in `modenv/ml` ist kaputt (gegen CUDA gelinkt, aber das ist nicht auffindbar, obwohl `CUDA/10.1.243-GCC-8.3.0` installiert ist) ``` Found device 0 with properties: name: Tesla V100-SXM2-32GB major: 7 minor: 0 memoryClockRate(GHz): 1.53 ... Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform. ``` - `cuDNN/7.6.4.38-gcccuda-2019b` kaputt ``` module show cuDNN ---------------------------------------------------------------------------------------------------------------------------------------- /sw/modules/scs5/numlib/cuDNN/7.6.4.38-gcccuda-2019b.lua: ---------------------------------------------------------------------------------------------------------------------------------------- ... depends_on("gcccuda/2019b") prepend_path("CPATH","/sw/installed/cuDNN/7.6.4.38-gcccuda-2019b/include") prepend_path("LD_LIBRARY_PATH","/sw/installed/cuDNN/7.6.4.38-gcccuda-2019b/lib64") prepend_path("LIBRARY_PATH","/sw/installed/cuDNN/7.6.4.38-gcccuda-2019b/lib64") ... ls /sw/installed/cuDNN/7.6.4.38-gcccuda-2019b/lib64 ls: Zugriff auf /sw/installed/cuDNN/7.6.4.38-gcccuda-2019b/lib64 nicht möglich: Datei oder Verzeichnis nicht gefunden ls /sw/installed/cuDNN/7.6.4.38-gcccuda-2019b/ easybuild include lib NVIDIA_SLA_cuDNN_Support.txt ``` - `Keras/2.3.1-fosscuda-2019b-Python-3.7.4`, die einzige aktuelle Keras-Version (nach TF 1.10), gibt es nicht für `modenv/ml`. Es gibt überhaupt keine kompatible Keras-Version für die Toolchain `fosscuda/2019b`. - `Python/3.7.4-GCCcore-8.3.0` in `modenv/scs5` bietet kein PIL, und es gibt auch überhaupt keine kompatible Pillow-Version für die Toolchain `fosscuda/2019b` - keine passenden PyPI-Releases für `ml`-Partitionen (PowerPC): kompilieren (z.B. OpenCV) ```sh srun -p ml --gres=gpu:1 -n 1 --pty --mem-per-cpu=4000 bash git clone --recurse-submodules https://github.com/skvark/opencv-python.git module load CMake/3.15.3-GCCcore-8.3.0 ENABLE_HEADLESS=1 python src/opencv-python/setup.py bdist_wheel pip install ~/src/opencv-python/dist/opencv_python_headless-4.2.0+d608d69-cp37-cp37m-linux_ppc64le.whl ``` - keine passenden Module auf `ml`-Partition (PowerPC): [Module selber bauen](https://doc.zih.tu-dresden.de/hpc-wiki/bin/view/Compendium/RuntimeEnvironment#Private_Project_Modules_Files) (z.B. GEOS) ### Oversubscription ### Downtime / Abbruch mitten im Job ``` Slurm Job_id=19495810 Name=gpu_training2 Ended, Run time 03:46:48, NODE_FAIL, ExitCode 0 ... Required node not available (down, drained or reserved) ``` ### X11 Lösung für Tensorboard: ```shell=bash mkdir taurus-ws sshfs rosa992c@taurus.hrsk.tu-dresden.de:ws taurus-ws tensorboard --logdir $(ls -tr1H taurus-ws/logs/* | tail -1) ``` ...und dann lokal weiter mit `https://localhost:6006` ### Abschätzung von Betriebsmitteln und Quota für 0h-Jobs - kein Zugriff auf `gpu-interactive`, also muß man immer einen kompletten Batch-Job definieren – kontiert wird aber stets die volle _geschätzte_ Zeit, nicht die tatsächlich (wegen Build-/Konfigurationsfehlers) verbrauchte - teilweise schwer abzuschätzen ("wieviel GPU-Speicher _hätte_ er gebraucht?"), gerade bei gr. Speicherbedarf können sehr lange Wartezeiten entstehen, teilw. auch tagelang `pending`, also noch nicht mal Abschätzung, wann es losgeht ### Support (Zuständigkeit, Reaktionszeit, Sichtbarkeit, Dokumentation) ### Workspace-Timeout / Zugang - `/scratch`-Speicher (500GB) verschwindet automatisch (ohne Backup), aber wenig Platz auf `/projects` (50GB) und in `~` (20GB); keine Warnung/Benachrichtung beim Löschen - keine (sauber funktionierende) Quota-Anzeige ``` qinfo quota # as documented, but fails Cannot read quotas: Cannot read xattr quobyte.quotas for file /projects/p090/p_da_layout showquota # as documented, but empty ``` - Taurus nicht mehr vom Login-Server erreichbar, nur noch über TUD-VPN - SSH-Schlüssel alle für ungültig erklärt, kein PW-loser Zugang mehr