Posts Tagged ‘Entscheidungsbaum’

Ein besonderer Tag

Mittwoch, Juli 11th, 2012

Heute ist für mich in zweierlei Hinsicht ein ganz besonderer Tag. Zum einen hab ich heute die Ehre, die dritte stabile Softwareversion der Bilddatenbank vorzustellen und zum zweiten habe ich ab heute das BVASystem auf einem zweiten PC im Einsatz. Bisher habe ich ausschließlich auf meinem Entwicklungsrechner mit einer Testdatenbank am und mit dem BVASystem gearbeitet. Dies war natürlich alles andere als optimal, da immer wieder relativ sinnlose Testdaten angelegt wurden. Von dem neuen Rechner, der extra nur für meine eigene Fotosammlung angeschafft wurde, verspreche ich mir, das die Sammlung ohne Störungen geordnet werden kann.  Außerdem hoffe ich, das fehlende Funktionen oder Fehler durch die intensivere Benutzung des Programmes früher auffallen. Nun aber zum für euch wichtigen Teil: Version 2.1.2

BVASystem 2.1.2 - Miniaturbilder

BVASystem 2.1.2 – Miniaturbilder

Welche Neuerungen gibt es am Programm?

Die meiste Zeit hab ich in den letzten Monaten an den Metadatenelementen gearbeitet. Aus dem kleinen Entscheidungsbäumchen ist nun mittlerweile ein richtiger großer Baum geworden. Folgende Metadatenelemente können  jetzt für die automatischen Zuordnungen genutzt werden:

  • Aufnahmedatum
  • Belichtungszeit
  • Blende
  • Brennweite
  • ISO-Empfindlichkeit
  • Verwendete Kamera
  • Besitzer des Bildes
  • Belichtungsbewertung
  • Mittlere Helligkeit
  • Tonwertumfang

Gerade noch mit in die neue Version haben es einige Funktionen geschafft, die ich persönlich bei der täglichen Arbeit sehr vermisst habe. Das BVASystem kann nun genutzt werden, um ausgewählte Fotos in ein anderes Verzeichnis zu kopieren bzw. zu verschieben. Außerdem können Fotos mit einem beliebigen externen Bildverarbeitungsprogramm bearbeitet werden. Auch für Fotos, die sich in der Datenbank befinden, ist dies möglich, da die ausgewählten Bilder in ein temporäres Verzeichnis exportiert werden. Beim Beenden des Programms, werden die temporären Dateien  dann wieder gelöscht.

Leider muss die Konfiguration des externen Bildverarbeitungsprogrammes noch manuell vorgenommen werden. Die „bvasystem.ini“ muss beispielsweise für eine Verknüpfung mit PaintShop Pro 9 um folgende 3 Zeilen erweitert werden:

[IMAGEEDIT]
PROGRAM=C:\Program Files (x86)\Jasc Software Inc\Paint Shop Pro 9\Paint Shop Pro 9.exe
PARAMS=::FILE::

Außerdem neu ist die Bildinformationsansicht. Dort können alle erfassten Bildinformationen eines Fotos betrachtet werden. Innerhalb der aktiven Bildliste kann ähnlich wie in der Einzelbild- oder Filmstreifenansicht navigiert werden. Der jetzige Entwicklungsstand der Bildinformationsansicht ist nicht als endgültig anzusehen. In Zukunft habe ich vor, dem Anwender dort viel mehr Freiräume zu schaffen.

Welche Änderungen stehen als nächstes an?

Aktuell ist es für mich schwierig zu entscheiden, an welcher Stelle ich das Programm als nächstes weiterentwickeln werde. Es schwirren einfach zu viele Ideen in meinem Kopf herum. Fest steht, das ich möglichst bald eine Erweiterung der Datenbankstruktur vornehmen muss. Dafür muss als erstes das Administrationstool erweitert werden, damit sie mit dem Tool durchgeführt werden können.

Die anstehende Datenbankänderung werde ich möglichst umfangreich gestalten, so das eine Reihe von neuen Funktionen umgesetzt werden können, ohne das alle paar Wochen die Datenbankstruktur geändert werden muss.  Als erstes werde ich mich dann sicher um die manuelle und automatische Bewertung von Fotos kümmern. Ziel ist es, ein zusätzliches Sortierkriterium zu schaffen, so das sich die besten Bilder immer am Anfang einer Bildliste befinden. Eine weitere Änderung wird sein, das die wichtigsten IPTC-Datenfelder in der Datenbank gespeichert werden können. Weiterhin ist geplant, das die errechneten Datenfelder (Tonwertumfang und Belichtungsbewertung) ebenfalls in der Datenbank gespeichert werden, damit sie nachträglich einsehbar sind. Zur Anzeige der neuen Datenfelder soll die Bildinformationsansicht weiter ausgebaut werden.

Automatisches Drehen von Fotos und andere neue Funktionen

Mittwoch, August 31st, 2011

Für die Version 2.0.0.27 der Bildverwaltung habe ich diesmal die kompletten drei Wochen Entwicklungszeit benötigt. Dafür sind aber auch drei größere neue Funktionen entstanden, die ich mittlerweile nicht mehr missen möchte. Gerade die Erweiterung des EXIF-Moduls hab ich liebgewonnen.

Die erste Woche habe ich damit verbracht, das kürzlich vorgestellte EXIF-Modul zu erweitern. Es wird nun, sofern es vorhanden ist, das Orientierungs-Tag ausgewertet. Einige Digitalkameras mit Lagesensor speichern dort ab, ob das Bild im Hochformat oder Querformat aufgenommen wurde. Mit dieser Information ist es ein leichtes, die Fotos vor der Anzeige in die korrekte Richtung zu drehen. Es ist richtig schön, das der Aufwand zum Drehen der Bilder quasi komplett wegfällt.

Weiterhin wird das Thumbnail des EXIF-Headers genutzt, damit die Bildmatrix und der Filmstreifen schneller aufgebaut werden können. Es geht nämlich schneller, ein kleines Bild zu laden, als das Gesamtbild zu öffnen und dieses klein zu skalieren. Da das EXIF-Thumbnail wahrscheinlich kleiner ist als die Thumbnails im BVASystem, werden nachdem alle EXIF-Thumbnails geladen wurden, skalierte Originalbilder geladen.  Dieser Vorgang kann allerdings jederzeit abgebrochen werden. Für die Zukunft habe ich mir vorgenommen, den Ladevorgang so zu modifizieren, das zuerst die Bilder geladen werden, die sich im sichtbaren Bereich befinden. Vorerst muss es aber reichen, das die Bilder der Reihe nach geladen werden.

Neu ist auch im Datenbankmodus ein Eintrag für „Fotos ohne Fotoalbum“. Dieser dient dazu, das nachdem die automatischen Zuordnungen durchgeführt wurden, Bilder leicht gefunden werden können, welche noch keinem Fotoalbum zugeordnet sind. Von dort können die Bilder dann manuell einem Fotoalbum zugeordnet werden.

Fotos ohne Album

Fotos ohne Album

Die letzte Änderung betrifft die Metadatendefinitionen. Dort ist es nun möglich, das bereits gespeicherte Definitionen verändert werden können. Kompliziert daran war, das durch eine Änderung ebenfalls der Entscheidungsbaum aktualisiert werden musste. Auch werden nun nicht mehr benötigte Metadatendefinitionen gelöscht. Gelöscht wird zum Beispiel, wenn einem bereits angelegtem Fotoalbum eine neue bereits vorhandene Metadatendefinition zugewiesen wird. In diesem Fall wird die alte Definition nicht mehr benötigt. Beim Löschen von Fotoalben werden ebenfalls nicht mehr benötigte Metadatendefinitionen gelöscht.

Dreifaches Jubiläum

Dienstag, Juli 19th, 2011

Dieses mal freue ich mich ganz besonders darauf, eine neue Programmversion der Bildverwaltung anzukündigen. Denn ich habe, fast auf den Tag genau, nach nun einem Jahr „BVA goes Datenbank„, ein für mich ganz wichtiges Ziel erreicht. Die Bilddatenbank ist nun in der Lage, bereits beim Archivieren von neuen Fotos, diese zu Fotoalben zuzuordnen. Außerdem ist es auch noch die 25. Programmversion, die ich soeben veröffentlicht habe.

Die, für die automatischen Zuordnungen, genutzten Metadaten wurden ja bereits in älteren Blogs ausführlich beschrieben. Auch der Ablauf der Zuordnungen über den Entscheidungsbaum wurde erläutert. Im letzten Schritt wurde in der neuen Version die Suche im Entscheidungsbaum programmiert und natürlich ebenso die Speicherung der gefundenen Verknüpfungen.

Screenshot der Version 2.0.0.25 der Bilddatenbank BVASystem

Screenshot der Version 2.0.0.25 der Bilddatenbank BVASystem

Ich muss aber ehrlich zugeben, das noch immer eine Menge Details nicht funktionieren. Wichtig ist es mir, darauf hinzuweisen, das zur Zeit Änderungen an den Metadatendefinitionen erst nach einem erneutem Start des Programmes aktiv sind. Änderungen am Entscheidungsbaum werden vorerst nur durch den Initialisierungs-Workertask vorgenommen. Diesen Umstand werde ich in einer der nächsten Versionen auf jeden Fall korrigieren.

Apropos korrigieren. Vor bereits relativ langer Zeit wurden mir Unstimmigkeiten im Programm gemeldet, die die Steuerung per Tastatur betrafen. Diese Unstimmigkeiten waren mir allerdings bisher nicht so wichtig. Da ich das Programm mittlerweile fast täglich benutze, stören mich solche „Kleinigkeiten“ immer mehr. Also bin ich der Sache nun nachgegangen, damit das Programm in sich stimmiger wird.

Tastatursteuerungen erfolgen nun nicht mehr global, sondern sie werden von der Komponente gesteuert, die gerade den Focus besitzt. Wo sich der Focus gerade befindet, kann durch den gestrichelten Rahmen am Rand festgestellt werden. Je nachdem, welche Komponente den Focus bestitzt, stehen unterschiedliche Funktionen zur Verfügung. In den Baumansichten kann per Pfeiltaste hoch bzw. runter navigiert werden. Mit der Pfeiltaste nach rechts der aktuelle Knoten im Baum geöffnet und mit der Pfeiltaste nach links wieder geschlossen werden. Besitzt der Filmstreifen den Focus, kann mit den Pfeiltasten nach links bzw. nach rechts in der Liste navigiert werden. Das gleiche ist auch in der Miniaturbilderansicht möglich.

Als Ausblick auf die nächste Programmversion der Bildverwaltung kann ich den Hinweis geben, das ich die nächsten 14 Tage damit verbringen werde, ein Modul zu entwickeln, mit dem ich die EXIF Informationen eines Bildes auslesen kann. Im Speziellen geht es darum, das das korrekte Aufnahmedatum des Bildes ausgelesen werden kann. Es ist toll, das ich Fotoalben-Zuordnungen aufgrund des Aufnahmedatums vornehmen kann. Es ist allerdings weniger toll, wenn ich dafür das Dateiänderungsdatum nutze, da sich dieses vom wirklichen Aufnahmedatum unterscheiden kann.

 

Der Metadaten Entscheidungsbaum

Montag, Juli 4th, 2011

In der Zwischenzeit sind die angekündigten 2 Wochen fast um, aber ich hatte die letzten 2 Wochen auch noch alle Hände voll zu tun. Da langsam aber sicher die Anzahl der Downloads des BVASystems steigen, war es für mich plötzlich ziemlich wichtig, die Installationsanleitung für das Programm fertig zu schreiben. Ich hoffe, das dadurch die technische Hürde, die vor dem Benutzen des Programmes steht, gesenkt werden konnte.

Trotzdem ist die Version 2.0.0.24 nun fertig und kann an alt bekannter Stelle heruntergeladen werden. Neben einigen kleineren Bugfixes steckt dieses mal der größte Teil der Arbeit in dem Workertask zur Initialisierung eines Entscheidungsbaumes, der für die Zuordnungen zwischen Bild und Fotoalbum genutzt werden soll.

Direkt nachdem die Verbindung zur Datenbank hergestellt wurde, wird der Initialisierungstask angeworfen. Spätestens nach einigen Sekunden ist der Task abgearbeitet und es kann wie gewohnt mit der Datenbank gearbeitet werden. Die erfolgreiche Beendigung des Tasks kann über den Statusdialog des Workers bei Bedarf kontrolliert werden.

Aufbau des Entscheidungsbaumes

Der Entscheidungsbaum, wie er beim BVASystem zum Einsatz kommt, besitzt eine feste Struktur. Als erstes Entscheidungskriterium wird das Metadatenelement „Besitzer des Bildes“ gewählt. Als Unterknoten der dadurch entstehenden Knoten wird das Metadatenelement „Aufnahmedatum“ eingefügt. Damit der Baum nicht zu sehr in die Breite wächst, habe ich das Aufnahmedatum dreistufig zerlegt. Die erste Einteilung wird grob über das Aufnahmejahr vorgenommen, die zweite Einteilung wird durch das Aufnahmedatum definiert und erst in der dritten Ebene wird das komplette Aufnahmedatum genutzt. Den genauen Aufbau des Baumes habe ich versucht durch folgendes Bild darzustellen:

Metadaten Entscheidungsbaum des BVASystems

Metadaten Entscheidungsbaum des BVASystems

Sonderfälle

Auf dem Bild sieht man deutlich einige Sonderfälle, die dadurch entstehen, das der Anwender bei den Metadatendefinitionen nicht eingeschränkt ist.

Wenn der Anwender zum Beispiel kein Metdatenelement „Besitzer des Bildes“ hinzufügt, dann kann bereits die erste Ebene des Baumes nicht entschieden werden. Damit trotzdem mit dem Baum gearbeitet werden kann, wird in diesem Fall ein Knoten mit der Information: „Der Bildbesitzer ist nicht relevant“ angelegt. Die vorhandenen Aufnahmedatum Metadatenelemente werden dann als Unterknoten dieses Knotens angelegt. Im Bild ist dies bei der Metadatendefinition für Fotoalbum 2 der Fall.

Ein weiterer Sonderfall tritt ein, wenn ein Metadatenelement doppelt definiert wurde. Grundsätzlich bedeutet es ja, wenn mehrere Metadatenelemente definiert wurden, das alle erfüllt sein müssen. Es macht aber keinen Sinn, wenn man beispielsweise definiert: Besitzer des Bildes ist Max und Besitzer des Bildes ist Paul. Denn diese Bedingungen werden niemals erfüllt werden können, denn der Besitzer des Bildes ist immer derjenige, der das Bild in die Datenbank eingestellt hat. Also immer eine Person. Daher werden mehrfach vorhandene Metadatenelemente immer als „oder“  interpretiert. Im oben genanten Beispiel wäre die Bedingung erfüllt, wenn der Besitzer des Bildes Max oder Pault ist. Im Bild ist dieser Sonderfall bei Fotoalbum 3 zu sehen.

Ausblick

So langsam aber sicher befindet sich das BVASystem auf der Zielgeraden. In der nächsten Version wird dann endlich der Entscheidungsbaum genutzt um die Zuordnungen zwischen Foto und Fotoalbum automatisch herzustellen. Eigentlich mag man meinen, das dann wieder ein großer Meilenstein abgeschlossen ist, aber leider fehlen dann noch die ganzen Feinheiten. Die Metadatendefinitionen können nicht editiert werden, nicht gelöscht werden, es gibt keine Handhabung für falsche Zuordnungen, der Umfang der möglichen Metadatenelemente ist noch stark ausbaufähig … es bleibt also immernoch sehr sehr viel zu tun.

Wozu dient ein Entscheidungsbaum?

Mittwoch, Juni 22nd, 2011

Im Ausblick bei der letzten Programmaktualisierung habe ich beschrieben, das ich auf der Suche nach einer sinnvollen Datenstruktur bin, um die Zuordnungen zwischen Fotos und Fotoalben effizient erstellen zu können. Entschieden habe ich mich für einen Entscheidungsbaum. Bevor ich in 1 bis 2 Wochen die Version 2.0.0.24 veröffentliche, die eine Implementierung eines Entscheidungsbaumes enthält, möchte ich kurz erklären, was ein Entscheidungsbaum ist und worin ich die Vor- bzw. Nachteile sehe.

Was ist ein Entscheidungsbaum?

In der Informatik stellen Entscheidungsbäume eine Möglichkeit dar, mit der automatische Klassifizierungen vorgenommen werden können. Um eine Klassifizierung vornehmen zu können, wird der Entscheidungsprozess durch mehrere formale Regeln beschrieben. Diese formalen Regeln werden hierarchisch angeordnet. Ein simpler Entscheidungsbaum könnte wie folgt aussehen:

Ein einfacher Entscheidungsbaum

Ein einfacher Entscheidungsbaum

Zur Klassifizierung wird beim Wurzelelement begonnen, die formale Regel zu beantworten. Anschließend wird beim passenden Kindknoten des Baumes fortgefahren. Es wird wieder die formale Regel abgearbeitet und anschließend wieder der Kindknoten untersucht. Der Prozess endet, sobald der Baum keine weiteren Kindknoten enthält.

Möchte ich, nach dem obigen Beispiel, einen roten runden Ball in eines der Fächer einordnen, dann gehe ich wie folgt vor: Als erstes schaue ich, ob der Ball rot oder gelb ist. Da der Ball rot ist, muss ich auf der linken Hälfte des Baumes weitersuchen. Der rechte Teil des Baumes muss nicht weiter betrachtet werden. Anschließend schaue ich mir die Form des Balls an: Er ist rund und somit ist wieder der linke Teil des Baumes der gesuchte Teil. Da die unterste Ebene des Baumes erreicht wurde, ist nun bekannt, das der Ball in das Fach1 gehört.

Welche Vorteile hat ein Entscheidungsbaum?

Der größte Vorteil eines Entscheidungsbaumes ist, das der Anwender durch die formalen Regeln  relativ gut nachvollziehen kann, warum eine Entscheidung so getroffen wurde, wie sie getroffen wurde. Treten falsche Klassifizierungen auf, so kann der Anwender problemlos durch Anpassung der formalen Regeln, korrigierend eingreifen. Bei alternativen Ansätzen, zum Beispiel neuralen Netzen, ist es für den Anwender absolut unmöglich eine Klassifizierung nachzuvollziehen.

Auch der Aufwand, der zur Klassifikation eines Elementes benötigt wird, wird reduziert. Ohne Entscheidungsbaum würde man für jedes mögliche Klassifikationsergebnis testen, ob die Bedingungen erfüllt sind. Schauen wir wieder auf das Beispiel, so müssten für die Fächer 1 bis 4 jeweils 2 Vergleiche, insgesamt also 8, durchgeführt werden. Mit Entscheidungsbaum fallen mit jeder Hierarchiestufe eine Anzahl nicht möglicher Klassifikationsergebnisse weg. Beim Beispiel bleiben somit nur 2 Vergleiche übrig um das richige Fach zu finden. 

Welche Nachteile hat ein Entscheidungsbaum?

Ein Nachteil eines Entscheidungsbaumes ist, das er nur für abzählbare Datentypen anwendbar ist. Wählt man beispielsweise die Länge eines Objektes als Kriterium, so kann es vorkommen, das für jedes Objekt ein neuer Knoten eingefügt wird. Der Grund dafür ist, das jedes Objekt eine leicht andere Länge aufweisen kann: Eines ist 2,5cm lang, das nächste, 2,49cm und das übernächste 2,495, usw. Entgegen wirken kann man dem, indem die Länge nur gerundet in die Bewertung eingeht. Durch die Rundung kann sich allerdings das Klassifikationsergebnis leicht verschlechtern, da möglicherweise Elemente einem falschen Knoten zugeordnet werden.

Ein weiterer Nachteil ist, das der Baum sehr schnell in die Breite wachsen kann, wenn eine Eigenschaft sehr viele verschiedene Ausprägungen besitzt. Je breiter der Entscheidungsbaum wird, desto mehr büßt man von dem eingesparten Aufwand zur Entscheidungsfindung ein. Tritt so ein Fall ein, so ist es ratsam, den Baum so umzuformen, das eine weitere Ebene entsteht.

Fazit

Für mich scheinen Entscheidungsbäume genau der richtige Weg zu sein, um die Zuordnungen zwischen Foto und Fotoalbum effizient treffen zu können. Allerdings sehe ich schon noch Schwierigkeiten darin, wie er sinnvoll aufgebaut werden sollte. Bereits bei dem Metadatentyp „Aufnahmedatum“ habe ich die Befürchtung, das der Baum zu sehr in die Breite wächst. Vorteilhaft ist aber, das der Entscheidungsbaum nur temporär entstellt wird. Daher kann ich die Struktur des Baumes ohne Probleme aktualisieren, wenn die alte Struktur sich als ineffizent herrausstellen sollte.