Hypotheses and trees of hypotheses
Hypothesen und die Optimierung der Suche
Beim Abgleich eines FlexiLayouts entsteht ein verzweigter Hypothesenbaum. Erfahren Sie, wie Breitensuche und die Einstellung Number of surviving hypotheses das Matching schnell halten.
Wenn das Programm ein FlexiLayout mit einem Bild abgleicht, versucht es, auf dem Bild die Objekte zu finden, die den Elementen im FlexiLayout entsprechen. Anschließend bewertet das Programm, wie gut ein bestimmtes Objekt zu seinem Element passt.
Ein Schätzwert ist eine Zahl zwischen 0 und 1. Eine Quality von 1 bedeutet, dass das erkannte Objekt zu 100 % übereinstimmt. Wenn die Quality nicht 0 ist, werden beim Abgleich des FlexiLayouts Regionen für die Blocks erstellt.
Das Programm sucht nacheinander nach Elementen, und zwar in der Reihenfolge, in der sie im FlexiLayout-Baum von oben nach unten angeordnet sind. Für jedes Element kann das Programm im Suchbereich mehrere passende Objekte (oder Objektgruppen) finden.
Das Programm formuliert für jedes Objekt im Suchbereich eine Hypothese und schätzt deren Quality: Je besser die Übereinstimmung, desto höher die Quality der Hypothese.
Die Position des erkannten Objekts bestimmt die Position der Objekte weiter unten im FlexiLayout-Baum. Das Programm verwendet jede Hypothese des aktuellen Elements als Ausgangspunkt für die Suche nach den nachfolgenden Elementen unterhalb des aktuellen Elements.
Dadurch verzweigen sich die Hypothesen für die Elemente, sodass ein Hypothesenbaum entsteht, der deutlich mehr Verzweigungen enthält als der Elementbaum.
Wenn mehrere Elemente zu einem Gruppenelement zusammengefasst werden, wird die gesamte Gruppe als ein Element betrachtet, für das mehrere Hypothesen formuliert werden. Die Quality eines Gruppenelements wird berechnet, indem die Hypothesen der Bestandteilelemente multipliziert werden.
Das gesamte FlexiLayout kann als Gruppenelement betrachtet werden, dessen Quality berechnet werden kann, indem die Quality-Werte der Hypothesen für alle seine Elemente multipliziert werden.
Beim Matching eines FlexiLayouts mit Bildern muss das Programm den besten vollständigen Hypothesenzweig finden. Ein Zweig ist vollständig, wenn er alle Elemente enthält, vom obersten bis zum untersten Element.
Eine allgemeine Lösung bestünde darin, alle möglichen Kombinationen von Hypothesen für alle Elemente zu berücksichtigen, daraus sämtliche möglichen vollständigen Zweige zu bilden und den Zweig mit der höchsten Quality auszuwählen. Das ist jedoch nicht praktikabel, da es zu viel Zeit in Anspruch nehmen würde.
Außerdem kann es bei einer relativ großen Anzahl von Elementen und nur näherungsweise definierten Suchbereichen zu einer kombinatorischen Explosion kommen, wodurch die Anzahl der Hypothesen unkontrollierbar anwächst.
Das Programm verwendet mehrere Methoden zur Optimierung der Suche, um die Anzahl der Hypothesen so gering wie möglich zu halten.
Jedes Element im FlexiLayout hat einen wichtigen Parameter namens Number of surviving hypotheses. Verwenden Sie diesen Parameter, um die Anzahl der Hypothesen zu begrenzen, die das Programm bei der Suche nach dem nächsten Element verwenden darf.
Standardmäßig ist dieser Parameter bei einfachen Elementen auf 5 und bei Gruppenelementen auf 1 gesetzt. Das bedeutet: Findet das Programm für ein bestimmtes Element 15 Hypothesen, wählt es die fünf besten aus und lässt die übrigen 10 Hypothesenketten unvollständig.
Gruppenelemente werden in der Regel zuverlässiger erkannt als einfache Elemente. Daher ist die beste Hypothese für ein Gruppenelement meist auch die richtige.
In den meisten Fällen gibt es mehrere unvollständige Hypothesenketten und folglich mehrere mögliche Suchrichtungen. Das Programm sucht die beste Hypothese mithilfe des klassischen „Breitensuche“-Algorithmus. Das bedeutet, dass das Programm immer versucht, die Kette zu vervollständigen, die aktuell die beste Quality hat, unabhängig von ihrer Länge.
Angenommen, ein FlexiLayout beschreibt 30 Elemente, für die zwei Hypothesenketten erstellt wurden: eine Kette mit 29 Elementen und einer geschätzten Quality von 0,89 sowie eine Kette mit 2 Elementen und einer geschätzten Quality von 0,92.
Das Programm versucht dann, die kürzere Kette zu vervollständigen, die in Bezug auf die Quality besser ist, bis die Quality all ihrer Erweiterungen unter die Quality der ersten Kette fällt.
Bei einem Gruppenelement verwendet das Programm eine Quality-Optimierung. Wenn das Programm für ein bestimmtes Gruppenelement eine ideale vollständige Hypothesenkette findet (das heißt, die Quality dieser Kette beträgt 1), ignoriert es alle anderen Varianten.
Die Gesamtzahl der Hypothesen für jedes Element ist auf 10.000 begrenzt.
