---
# System prepended metadata

title: Projekttagebuch Smart-HEC

---



# 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