Objekterkennung & Größenermittlung
Für die Münzserie 3 stehen uns circa 60.000 Münzfotos zur Verfügung. Diese bilden unsere Datenbasis, welche wir auch Datensatz nennen. Der Datensatz enthält verschiedene Münzen der Coriosolitae, unter anderem Statere und Viertelstatere, sowie petit billons armoricains. Die Statere machen dabei laut den Domänexpert*innen den größten Teil aus und unterscheiden sich vor allem in der Größe vom Rest der Münzen. Die Aufgabe, die wir uns stellen, ist es, den Durchmesser der Münzen zu ermitteln, um den Datensatz zu sortieren und letztendlich die Statere anhand der Fotos für die weiteren Arbeitsschritte des Projektes zu extrahieren.
Dank der Abbildung der Skala auf den Fotos könnte die Berechnung der Größe grundsätzlich auch manuell durchgeführt werden. Bei 500, 5000 oder mehr Bildern würde das manuelle Nachmessen jedoch sehr viel Zeit in Anspruch nehmen. Man beachte, dass in unserem Fall der Abstand der Kamera beim Erstellen der Fotos unterschiedlich war, daher wäre also eine Betrachtung jedes einzelnen Fotos notwendig. Anhand unserer Münzserie 3 wollen wir einen Ansatz zur nachträglichen Größenbestimmung auf Bildern mit Hilfe von Objekterkennungsmethoden demonstrieren.
Um die Größe eines Objekts auf einem Foto zu bestimmen, bedarf es einer Kalibrierung. Hierfür benötigen wir ein Referenzobjekt, dessen Maße bekannt sind. Die Fotos unserer Münzserie 3 besitzen meistens drei Bereiche (Abb. 1): im oberen steht die vergebene Bearbeitungs- bzw. Inventarnummer der Münze, im Zentrum befindet sich die Münze und auf der rechten Seite ein Maßstab. Zur Umwandlung der Pixel in Millimeter wählen wir daher den schwarzen Balken der Skala, da dessen Maße bekannt sind. Ziel ist es, die Münze und den schwarzen Bereich der Skala im Bild automatisiert erkennen zu lassen. Da beide etwa gleich weit von der aufnehmenden Kamera entfernt sind, kann man über die Pixelzahl des erkannten Maßstabs und der Münze auch die Größe der Münze approximieren.
Abb. 1: Annotation der Zielobjekte (Foto: Jersey Heritage. Grafik: C. Deligio, Big Data Lab).
Für die Umsetzung nutzen wir Tensorflows Object Detection API[1]. Die Objekterkennung wird mit einem überwachten KI-Modell umgesetzt, daher ist der erste Schritt, geeignetes Trainingsmaterial zu erstellen, also entsprechende Fotos, auf welchen die zu findenden Objekte annotiert (also markiert) sind. Für diesen Prozess werden zwei Objektklassen definiert: Münze und Maßstab. Als Trainingsmenge wählen wir zunächst 100 Bilder aus dem Gesamtdatensatz aus. Zusätzlich werden 25 Bilder zum Testen zur Verfügung gestellt. Die Wahl der Training- und Testmenge hängt von verschiedenen Faktoren ab. In diesem Fall ist keine starke Variation im Datensatz zu sehen und daher starten wir mit einer im Vergleich zur Gesamtgröße des Datensatzes kleinen Menge. Um den gesamten Datensatz zu evaluieren, stehen uns zwei schon bekannte Richtwerte zur Verfügung: Statere der Münzserie 3 besitzen einen durchschnittlichen Durchmesser von 22 mm und Viertelstatere von 13 mm. Zusätzlich steht für jede Münze eine Zuweisung zu der jeweiligen Klassen der Münzprägung der Coriosolitae bereit. Der tatsächliche Durchmesser der Münzen liegt uns in diesem Fall nicht vor.
Die Annotation wird mit dem öffentlichen Tool labelImg[2] umgesetzt. Die gesuchten Objekte werden dabei mit Rechtecken, auch bounding box genannt, markiert und mit der entsprechenden Klasse versehen. Eine bounding box ist dabei eine rechteckige Box, die das gesuchte Objekt umgibt und als ground truth für den Algorithmus dient. Nach dem Annotieren wählen wir eine KI-Modellarchitektur aus. Dabei stehen verschiedene State of the art Modelle zur Verfügung[3]. Für dieses Experiment nutzen wir das Modell CenterNet Hourglass104 512×512[4], welches sich durch ein gutes Verhältnis zwischen Genauigkeit und Trainingszeit auszeichnet. Das Resultat des trainierten KI-Modells kann in den folgenden zwei Bildern betrachtet werden (Abb. 2).
Abb. 2: Zwei Vorhersagen des KI-Modells für die Vorder- und Rückseite der gleichen Münze. Die Prozentangabe gibt an, wie sicher das Modell bei der vergebenen Klasse ist (Foto: Jersey Heritage. Grafik: C. Deligio, Big Data Lab).
Werden beide bounding boxes erfolgreich erkannt, kann die Größe der Münze nun anhand dieser ermittelt werden. Wir beschränken uns dabei auf vier Berechnungen je Münze, jeweils zwei pro Vorder- und Rückseite. Es werden die Höhe und Breite der bounding box je Münzseite berechnet, in dem die beiden Werte durch die Breite der bounding box des Maßstabs geteilt werden (Abb. 3). Die Ergebnisse liegen anschließend in Millimeter vor (also vier Werte je Münze).
Abb. 3: Vier Werte werden pro Münze berechnet: Höhe und Breite der bounding boxes, jeweils für Vorder- und Rückseite der Münzen (Foto: Jersey Heritage. Grafik: C. Deligio, Big Data Lab).
In der folgenden Abbildung 4 ist nun die Verteilung der berechneten Größen zu sehen. Es bilden sich zwei Peaks/Spitzen, um 22 mm und 13 mm, wie dies auch bereits von unseren Domänexpert*innen ermittelt worden ist. Die Punktwolken wurden bei ungefähr 17,5 mm farblich getrennt, da dort eine Unterbrechung zu finden ist.
Abb. 4: Verteilung der berechneten Größe. Es wird in kleine (rot → < 17.5 mm) und große (blau → >= 17.5 mm) Münzen unterschieden. Schwarze Punkte stellen dabei Münzen dar, deren berechnete Länge und Breite voneinander um mindestens 40% abweichen. Es handelt sich dabei um Münzfragmente. In der Abbildung ist eine dieser Münzen zu sehen (Foto: Jersey Heritage. Grafik: C. Deligio, Big Data Lab).
Aus den beiden Zentren (13 mm und 22 mm) werden stichprobenartig Bilder gewählt und die Größen manuell nachgemessen (Abb. 5). Um eine großflächige Auswertung durchzuführen und mit dem Ziel die Statere zu extrahieren, fokussieren wir uns auf den Bereich 22 mm +- 2 mm[5] (circa 26.000 Münzen), da dieser mit hoher Wahrscheinlichkeit nur Statere beinhaltet. Dies wird durch einen Abgleich mit unserer vorhandenen ground truth bestätigt. Somit war es möglich, nur mit dem Bildmaterial, Daten für unsere Zielmenge zu extrahieren.
Abb. 5: Die automatisierten Werte für diese Münze betragen 23.21 mm für die Höhe und 21.94 mm für die Breite (Foto: Jersey Heritage. Grafik: C. Deligio, Big Data Lab).
Werte, die weit außerhalb des Zentrums liegen, beispielsweise die drei Punkte über 35 mm, werden ebenfalls untersucht. In der folgenden Abbildung ist eine dieser Münzen zu sehen (Abb. 6). Es ist zu erkennen, dass der Maßstab durch das KI-Modell falsch bestimmt worden ist und es daher zu einer falschen Kalibrierung gekommen ist. Um diesem Problem entgegenzuwirken, wird die Trainingsmenge erweitert bzw. mit Sonderfällen ergänzt.
Abb. 6: Bei diesem Bild werden Schatten fälschlicherweise als Maßstab bestimmt und es kommt zu einer falschen Berechnung der Größe (Foto: Jersey Heritage. Grafik: C. Deligio, Big Data Lab).
Insgesamt liegt die Menge von Münzen, bei denen die Größe falsch oder nicht berechnet (da kein Maßstab vorhanden) ist, bei 3 % des gesamten Datensatzes. Mit Hilfe des vorgestellten Ansatzes war es uns möglich, den Datensatz (nur) anhand der Fotos der Größe nach zu sortieren. Die Sortierung und Trennung der Größenbereiche erlaubt es, diese gezielt im weiteren Verlauf zu bearbeiten. In unserem Fall wird die Gruppe der Statere und Viertelstatere getrennt, so dass wir diese zielgenau mit weiteren KI-Methoden analysieren können. Als Ergebnis unseres Versuchs, die Größe der Münzen ausschließlich mittels ihrer Fotos zu bestimmen, konnten letztendlich folgende Beobachtungen gemacht werden:
- Für die automatisierte Bestimmung der Größe eines Objektes auf einem Foto benötigt man grundsätzlich ein zusätzliches fotografiertes Objekt, bei dem die Maße bekannt sind.
- Mit Hilfe des hier dargelegten Verfahrens wurde es ermöglicht ein besseres Verständnis des Datensatzes über die Ermittlung bisher fehlender Objektinformationen zu erlangen, und zum anderen bietet es die Möglichkeit, einen Vergleich zwischen den berechneten Werten und den manuell gemessenen vorzunehmen, um Fehler auf beiden Seiten zu entdecken.
- Durch die Berechnung von vier Werten je Münze konnten auch Münzfragmente einfach aus der Gesamtmenge extrahiert werden.
[1] https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2.md
[2] https://github.com/tzutalin/labelImg
[3] https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md
[4] https://openaccess.thecvf.com/content_ICCV_2019/papers/Duan_CenterNet_Keypoint_Triplets_for_Object_Detection_ICCV_2019_paper.pdf
[5] Der Bereich kann anschließend systematisch erweitert und überprüft werden.