... | ... | @@ -12,67 +12,54 @@ Basierend auf der Übersicht (siehe [Übersicht der Wappentypen](Wappensupralibr |
|
|
- Wappentyp C (200)
|
|
|
- Kein Wappen, Bezeichnung als Typ N (884)
|
|
|
|
|
|
Um die Wahl des Bildausschnitts zu verbessern (und so die Informationsdichte im Bild zu erhöhen) wurde eine statistische Analyse der bounding boxes (dt. Hüllkörper) um die Supralibros durchgeführt. Dazu wurden manuell bounding boxes von 79 zufällig ausgewählten Einbänden mit Wappen (mit GIMP) abgemessen und deren Höhe und Breite aufgezeichnet, siehe [hier](https://labs.onb.ac.at/gitlab/bed/bed-general/-/blob/main/Groundtruth/bounding_boxes.csv) für die Rohdaten. Aus den Rohdaten wurden die normierte Höhe und Breite (relativ zur gesamten Höhe und Breite des Einbands) ermittelt. In der folgenden Grafik sind diese bounding boxes und ihre Mittelpunkte sowie das uniform für den Ausschnitt zu verwendende Rechteck aufgetragen:
|
|
|
Insgesamt befinden sich 1518 Bilder im Datenset. Um die Wahl des Bildausschnitts zu verbessern (und so die Informationsdichte im Bild zu erhöhen) wurde eine statistische Analyse der bounding boxes (dt. Hüllkörper) um die Supralibros durchgeführt. Dazu wurden manuell bounding boxes von 79 zufällig ausgewählten Einbänden mit Wappen (mit GIMP) abgemessen und deren Höhe und Breite aufgezeichnet, siehe [hier](https://labs.onb.ac.at/gitlab/bed/bed-general/-/blob/main/Groundtruth/bounding_boxes.csv) für die Rohdaten. Aus den Rohdaten wurden die normierte Höhe und Breite (relativ zur gesamten Höhe und Breite des Einbands) ermittelt. In der folgenden Grafik sind diese bounding boxes und ihre Mittelpunkte sowie das uniform für den Ausschnitt zu verwendende Rechteck aufgetragen:
|
|
|
|
|
|
<div align="center">
|
|
|
<figure>
|
|
|
<img src="uploads/8c01e3068ba0e75cf3c6019009be73ba/bounding_boxes.png" width="450">
|
|
|
<img src="../uploads/8c01e3068ba0e75cf3c6019009be73ba/bounding_boxes.png" width="450">
|
|
|
<figcaption>Abbildung 1: Ermittelte bounding boxes (in hellrot) um Wappen auf Einbänden aus dem Groundtruth Datenset, zusammen mit ihren Mittelpunkten (blaue Kreuze). Das in dunkelrot und fett eingezeichnete Rechteck wurde durch Mittelung über alle Mittelpunkte bestimmt (und ist sehr nah bei (0.5, 0.5) verortet). Seine Höhe (0.44) und Breite (0.54) ist das 97%-Quantil aller aufgezeichneten Höhen und Breiten. Das Seitenverhältnis der Grafik ist an das typische Seitenverhältnis 3:2 eines Einbands angelehnt.</figcaption>
|
|
|
</figure>
|
|
|
</div>
|
|
|
|
|
|
In der neuesten Version der Groundtruth-Daten wurde diese Analyse jedoch zugunsten eines quadratischen Ausschnitts aus der Bildmitte zurückgestellt. Dieser kann mit dem Regions-Parameter "square" über die IIIF-Schnittstelle bezogen werden (bis auf im Haus digitalisierte Einbände, bei denen das komplette Bild geladen werden und dann manuell ein quadratischer Ausschnitt gemacht werden muss).
|
|
|
In der neuesten Version der Groundtruth-Daten wurde diese Analyse jedoch zugunsten eines quadratischen Ausschnitts aus der Bildmitte zurückgestellt. Dieser kann mit dem Regions-Parameter "square" über die IIIF-Schnittstelle bezogen werden (bis auf im Haus digitalisierte Einbände, bei denen das komplette Bild geladen werden und dann manuell ein quadratischer Ausschnitt gemacht werden muss). Ein Beispiel-URL für den Bezug eines Bilds aus dem Datenset mit einer Auflösung von 256 × 256 Pixeln ist [`https://iiif.onb.ac.at/images/ABO/Z18563850X/00000001/square/256,/0/default.jpg`](https://iiif.onb.ac.at/images/ABO/Z18563850X/00000001/square/256,/0/default.jpg). Siehe das Notebook [BED_Update_GT.ipynb](https://labs.onb.ac.at/gitlab/bed/bed-general/-/blob/main/Notebooks/BED_Update_GT.ipynb) für mehr Details.
|
|
|
|
|
|
# Auswahl des Modells und Training #
|
|
|
|
|
|
Es soll ein CNN verwendet werden ähnlich zur vorigen Anwendung im [classifying-eugeniana](https://labs.onb.ac.at/gitlab/labs-team/classifying-eugeniana) Projekt (ähnliche Anzahl an Schichten und trainierbaren Parametern), allerdings nicht als binärer Klassifikator sondern mit der Unterscheidung in die oben genannten 4 Kategorien und der Ausgabe einer Wahrscheinlichkeit für jede Kategorie.
|
|
|
|
|
|
Es sollen zunächst zwei Netzwerke auf den Groundtruth Datensets trainiert werden. Die Datensets bestehen jeweils aus 841 Bildern, davon werden 673 für Training und 168 für Validierung verwendet. Siehe Abbildung 2 für einen Auszug von 20 Bildern der Trainingsdaten des ausgeschnittenen Datensets.
|
|
|
Es wurden verschiedene Modelle getestet:
|
|
|
- Einfaches CNN basierend auf der Arbeit im [classifying-eugeniana](https://labs.onb.ac.at/gitlab/labs-team/classifying-eugeniana) Projekt (ähnliche Anzahl an Schichten und trainierbaren Parametern), allerdings nicht als binärer Klassifikator sondern mit der Unterscheidung in die oben genannten 4 Kategorien und der Ausgabe einer Wahrscheinlichkeit für jede Kategorie
|
|
|
- ResNet ([resnet101](https://pytorch.org/vision/main/models/generated/torchvision.models.resnet101.html))
|
|
|
- DenseNet ([densenet121](https://pytorch.org/vision/main/models/generated/torchvision.models.densenet121.html#torchvision.models.densenet121))
|
|
|
- ResNext ([resnext50_32x4d](https://pytorch.org/vision/main/models/generated/torchvision.models.resnext50_32x4d.html#torchvision.models.resnext50_32x4d))
|
|
|
|
|
|
Für das Training der Modelle wählen wir eine Aufteilung von 80% bzw. 20% in Training- und Testset mit jeweils 1214 bzw. 304 Bildern. Siehe Abbildung 2 für einen Auszug aus den augmentierten Trainingsdaten.
|
|
|
<figure>
|
|
|
<img src="uploads/training/training_sample.png">
|
|
|
<figcaption>Abbildung 2: Auszug der Trainingsdaten aus dem Groundtruth Datenset der ausgeschnittenen Bilder. Zur Verbesserung der Allgemeinheit der Daten wurden diese über die Funktion AutoAugment zufällig verändert.</figcaption>
|
|
|
<img src="../uploads/training/training_sample.png">
|
|
|
<figcaption>Abbildung 2: Auszug der Trainingsdaten aus dem Groundtruth Datenset. Zur Verbesserung der Allgemeinheit der Trainingsdaten wurden diese über die Funktion AutoAugment zufällig verändert.</figcaption>
|
|
|
</figure>
|
|
|
|
|
|
## Details zum Netzwerk ##
|
|
|
|
|
|
Die Struktur des Netzwerks ist aus dem folgenden Code ersichtlich:
|
|
|
|
|
|
```python
|
|
|
model = Sequential([
|
|
|
Conv2D(16, 3, padding='same', activation='relu', input_shape=(img_height, img_width, 3)),
|
|
|
MaxPooling2D(),
|
|
|
Conv2D(32, 3, padding='same', activation='relu'),
|
|
|
MaxPooling2D(),
|
|
|
Conv2D(64, 3, padding='same', activation='relu'),
|
|
|
MaxPooling2D(),
|
|
|
Dropout(0.2),
|
|
|
Flatten(),
|
|
|
Dense(512, activation='relu'),
|
|
|
Dense(num_classes)
|
|
|
])
|
|
|
```
|
|
|
|
|
|
Es ist somit (bis auf die zusätzliche Dropout-Schicht und die Anzahl der Ausgabeparameter) sehr ähnlich zum bereits verwendeten Netzwerk des classifying-eugeniana Projekts.
|
|
|
Das ResNext liefert die besten Ergebnisse (100% Genauigkeit auf dem Testset) und ist dazu auch noch relativ schlank. Es wird daher für das Ausrollen auf das ABO-Korpus ausgewählt. Siehe Abbildung 3 für einen Auszug der Testdaten kombiniert mit Vorhersagen des Modells.
|
|
|
|
|
|
## Einstellung der Parameter des Trainings ##
|
|
|
<figure>
|
|
|
<img src="../uploads/training/validation_sample.png">
|
|
|
<figcaption>Abbildung 3: Auszug der Testdaten aus dem Groundtruth Datenset zusammen mit der Vorhersage des Classifiers. Im Gegensatz zum Trainingsdatenset sind die Bilder im Testdatenset nicht augmentiert.</figcaption>
|
|
|
</figure>
|
|
|
|
|
|
Je nach Anpassung der Parameter wird eine Genauigkeit von 90% bis 97% auf dem Validierungs-Set erreicht. Durch geringfügige Änderungen einiger Parameter verändert sich allerdings die Performanz relativ stark und es sollten robustere Werte für die Parameter gefunden werden, die eine konsistent hohe Performanz ermöglichen.
|
|
|
Für weitere Details des Trainingsprozesses verweisen wir auf das Notebook [BED_ResNext.ipynb](https://labs.onb.ac.at/gitlab/bed/bed-general/-/blob/main/Notebooks/BED_ResNext.ipynb).
|
|
|
|
|
|
Weiterhin soll durch Evaluation der Vorhersagen auf dem Validierungs-Set eine entsprechende Anpassung der Trainingsdaten, beispielsweise eine weitere Augmentation stattfinden. Der Parameter der Dropout Schicht (welcher Prozentsatz der Neuronen herausgefiltert wird) ist ebenfalls ein zu optimierender Bestandteil unserer Überlegungen.
|
|
|
# Anwendung auf das volle ABO-Korpus und BE-Teilmenge #
|
|
|
|
|
|
Hier ist eine Auflistung der im Training einzustellenden Parameter:
|
|
|
- Stapelgröße (batch size)
|
|
|
- Pixelanzahl je Bild (image width/height)
|
|
|
- Lernrate (learning rate) und eventueller Zerfall dieser
|
|
|
- Anzahl der Durchläufe (epochs) beim Training
|
|
|
- Faktor der Dropout-Schicht (Prozentsatz der zu vernachlässigenden Neuronen)
|
|
|
- Intervallgröße der zufällig gewählten Augmentationsparameter der Trainingsdaten: Rotation, Zoom, Translation (+ eventuelles Bildrauschen/Kontrastveränderung)
|
|
|
Basierend auf einer Liste von Martin Krickl für Bücher aus dem ABO-Korpus mit Jahreszahlen von 1501 bis 1738 sowie einem Auszug von BE-Signaturen aus dem Katalogssystem ALMA wird das oben trainierte Modell auf 557084 Bilder angewendet. Die folgende Tabelle gibt eine Übersicht über die Vorhersagen des Modells sowie unsere Auswertung der positiven (A, B oder C) Vorhersagen. In den Notebooks [Apply_to_ABO.ipynb](https://labs.onb.ac.at/gitlab/bed/bed-general/-/blob/main/Notebooks/Apply_to_ABO.ipynb) und [Apply_to_BE_signatures.ipynb](https://labs.onb.ac.at/gitlab/bed/bed-general/-/blob/main/Notebooks/Apply_to_BE_signatures.ipynb) finden sich weitere Analysen und Details.
|
|
|
|
|
|
Ebenso ist die Verwendung des Kreuzvalidierungsverfahren geplant, um eine Abhängigkeit von der speziellen Wahl der Trainings- und Validierungsdaten zu vermeiden.
|
|
|
| Vorhersage | Anzahl | TP | FP | Präzision |
|
|
|
| ---- | ---- | ---- | ---- | ---- |
|
|
|
| A | 2098 | 2081 | 17 | 0,992 |
|
|
|
| B | 3741 | 3736 | 5 | 0,999 |
|
|
|
| C | 381 | 344 | 37 | 0,903 |
|
|
|
| N | 550864 | - | - | - |
|
|
|
|
|
|
Für ein Subset der aufgelisteten Parameter ist eine Hyperparameteroptimierung geplant, welche beispielsweise über Rastersuche, Zufallssuche, Bayessche Optimierung, etc durchgeführt wird.
|
|
|
Insgesamt ergibt sich für die Kombination aller Wappentypen eine Fehlerstatistik von 59 falsch Positiven zu 6161 richtig Positiven, was bei einer Gesamtzahl von 6220 Positiven insgesamt damit einer Präzision von 0,991 entspricht. Die Analyse der N-Vorhersagen ist noch ausständig.
|
|
|
|
|
|
# Anwendung auf den vollen ABO-Korpus und BE-Teilmenge #
|
|
|
Tatsächlich wird vom Classifier ein Wahrscheinlichkeitswert für jede Klasse (A, B, C oder N) ausgegeben und für unsere Auswertung wird zunächst nur der höchste Wert beachtet. Die Histogramme der Wahrscheinlichkeitswerte (siehe Abbildung 4) lassen auch Rückschlüsse auf die Qualität des Trainings zu:
|
|
|
|
|
|
Zum einen möchten wir das Modell auf den kompletten ABO-Korpus (unter Einschränkung der Veröffentlichung von 1501–1736) anwenden sowie auf alle BE-Signaturen. Dabei sollen die Ergebnisse im ersten Fall verglichen werden mit denen von [classifying-eugeniana](https://labs.onb.ac.at/gitlab/labs-team/classifying-eugeniana), um eine Verbesserung des Modells bestätigen zu können. Im zweiten Fall soll untersucht werden, wie viele der BE-Signaturen ein Wappensupralibros haben und wie viele nicht. |
|
|
<figure>
|
|
|
<img src="../uploads/evaluation/type_histogram.png">
|
|
|
<figcaption>Abbildung 4: Histogramme der Wahrscheinlichkeitswerte je Typ der Vorhersagen. Man bemerke die logarithmische Skalierung der Häufigkeit (Frequency).</figcaption>
|
|
|
</figure> |