Mehr Experiment Schreiberei
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
Während der Implementierung der ViewLayers ist aufgefallen, dass die Zeit, die es dauert ein Bild und die Segmentierungsmasken zu rendern, gesunken ist im Vergleich zur Ausgangslage des Projekts. Um dieses Beobachtung zu validieren und deren Ursache zu finden wurde das folgende Experiment durchgeführt.
|
||||
|
||||
<span style="color: lime;">BEGIN GESCHRIEBEN</span>
|
||||
Während der Implementierung der ViewLayers ist aufgefallen, dass die Zeit, die es dauert ein Bild und die Segmentierungsmasken zu rendern, gesunken ist im Vergleich zur Ausgangslage des Projekts. Um dieses Beobachtung zu validieren und deren Ursache zu finden wurde das folgende Experiment durchgeführt.
|
||||
<span style="color: red;">END GESCHRIEBEN</span>
|
||||
## TODO: Herleitung der Parameter
|
||||
<span style="color: lime;">BEGIN GESCHRIEBEN</span>
|
||||
Ein Durchlauf des Scripts erzeugt eine definierte Anzahl an Bildern und den dazugehörigen Segmentierungsmasken.
|
||||
|
||||
Listing ... zeigt als Pseudo-Code den Groben Ablauf des Scripts. Anfangs wird einmalig die Konfiguration sowie geladen. Diese definiert einerseits die Wertebereiche für die später zufällig gewählten Parameter wie z. B. die möglichen Grauwerte für Haut, Sclera, Iris usw. Dort wird auch definiert, wie viele Bilder generiert werden sollen. Darauf folgt eine Schleife, die so viele Iterationen hat, wie Bilder generiert werden sollen (X). Für jede dieser Iterationen wird dann die zufällige Konfiguration bestimmt, also die Blickrichtung des Auges, die Grauwerte der Objekte in der Szene, wie weit das Augenlid geöffnet ist. Mit diesen Werten werden dann die Objekte in den Szenen modifiziert. Es werden auch Node-Trees für die Materialen und das Compositing neu erzeugt. Nachdem die Konfiguration abgeschlossen ist, wird das Bild und dessen Segmentierungsmasken gerendert.
|
||||
@@ -10,6 +14,8 @@ Listing ... zeigt als Pseudo-Code den Groben Ablauf des Scripts. Anfangs wird ei
|
||||
3. Modifiziere Blender-Szene mit zufälliger Konfiguration
|
||||
4. Rendere ein Bild und Segmentierungsmasken
|
||||
```
|
||||
<span style="color: red;">END GESCHRIEBEN</span>
|
||||
|
||||
Daraus ergeben sich mehrere Punkte, an denen die Laufzeit verbessert worden sein kann:
|
||||
|
||||
Da in der im Rahmen dieser Arbeit erweiterten Implementierung nur eine Szene existiert und in der Initialisierung für alle Szenen Logik ausgeführt wird, kann die Initialisierungszeit verkürzt sein. Da diese allerdings nur einmalig ausgeführt wird, kann sie höchstens Einfluss auf die Gesamtlaufzeit haben. Allerdings wurden Verbesserungen in der Render-Zeit einzelner Bilder beobachtet, somit müssen diese signifikanten Verbesserungen in der Schleife auftreten.
|
||||
@@ -18,6 +24,8 @@ Der nächste mögliche Aspekt ist die Zeit, die für die Konfiguration der Szene
|
||||
|
||||
Zuletzt müssen die Bilder gerendert werden. Das ist mit Abstand der aufwendigste Teil dieses Prozesses, der demensprechend die meiste Laufzeit in Anspruch nimmt. Daher ist auch zu erwarten, dass die Laufzeitverbesserungen in diesen Schritt entstehen. Sie können entweder durch den Wechsel von mehreren Szenen auf die ViewLayer entstanden sein, oder durch den Wechsel von Blender-Version 4.x auf die zum Zeitpunkt dieser Arbeit neueste Version 5.0.
|
||||
|
||||
<span style="color: lime;">BEGIN GESCHRIEBEN</span>
|
||||
|
||||
Unter diesen Gesichtspunkten ergeben sich folgende Laufzeiten die direkt gemessen werden können:
|
||||
- Initialisierungszeit ($t_{init}$):
|
||||
Wie lange dauert der Initialisierungsschritt. Aufgrund der geringen Arbeit, die in diesem Schritt passiert ist besten Falls eine minimale Verringerung der Laufzeit zu erwarten.
|
||||
@@ -32,13 +40,20 @@ Unter diesen Gesichtspunkten ergeben sich folgende Laufzeiten die direkt gemesse
|
||||
- Gesamtlaufzeit des Befehls ($t_{total}$)
|
||||
Zu Ausführen des Scripts wird per Kommandozeile Blender als Head-Less Instanz, also ohne sichtbares Fenster, gestartet. Dabei bekommt es sowohl den Pfad zur zu ladende Szene sowie zum auszuführenden Script übergeben. Diese ist für unsere Betrachtung keine sonderlich relevanten Informationen, da lediglich die einmalige Startzeit (und Stoppzeit) von Blender zusätzlich gemessen wird. Da dies allerdings einfach zu messen ist wird es der wissenschaftlichen Vollständigkeit zusätzlich erfasst. Mathematisch kann folgende Laufzeit erwartet werden: $t_{total} = t_{startup} + t_{script} + t_{shutdown}$.
|
||||
|
||||
<span style="color: yellow; font-size: 2em">TODO: Sind t_script und t_total interessant? Ich habe sie bisher noch nicht ausgewertet</span>
|
||||
|
||||
<span style="color: red;">END GESCHRIEBEN</span>
|
||||
|
||||
<span style="color: lime;">BEGIN GESCHRIEBEN</span>
|
||||
|
||||
Es ist zu erwarten, dass die Laufzeiten der Iterationen einer Aufwärmphase unterliegen, in der anfangs Iterationen relativ lange dauern und kürzer werden, bevor sie sich relativ zuverlässig um eine Asymptote sammeln. Daher müssen ausreichend viele Iterationen durchgeführt werden um einerseits die Aufwärmphase zu überwinden und dann ausreichend Datenpunkte für die Bestimmung von Mittelwert und Standardabweichung zu sammeln.
|
||||
In vorläufigen Tests wurde festgestellt, dass die Aufwärmphase nach etwa 10 Iterationen zuverlässig überwunden ist und die Laufzeit der Iterationen dann relativ stabil ist. Es wurde 120 als Anzahl der Iterationen, also der zu generierenden Bilder, gewählt. Das sollten genügend Iterationen sein, um zuverlässige Mittelwerte und Standardabweichungen unter Ausschluss der Aufwärmphase zu liefern.
|
||||
|
||||
Es wurden fünf Durchläufe durchgeführt, um einerseits mehrere Messwerte für die einmaligen Messwerte wie Initialisierungszeit und Gesamtlaufzeit zu sammeln. Außerdem erlaubt dies unerwartete Auswirkungen die Generierungszeit auszuschließen.
|
||||
|
||||
<span style="color: red;">END GESCHRIEBEN</span>
|
||||
# Testdurchläufe:
|
||||
<span style="color: lime;">BEGIN GESCHRIEBEN</span>
|
||||
Es werden grundsätzlich zwei Versionen von HEyes mit einander verglichen: Die original Implementierung von HEyes, auf der die vorliegende Arbeit aufbaut, und die fertige Implementierung dieser Arbeit mit allen zusätzlichen Funktionalitäten. Dabei ist anzumerken, dass die original Implementierung so angepasst wurde, dass die Messung alle nötigen Laufzeiten möglich ist.
|
||||
|
||||
1. Og Implementierung + Blender 4.5:
|
||||
@@ -50,6 +65,9 @@ Es werden grundsätzlich zwei Versionen von HEyes mit einander verglichen: Die o
|
||||
4. Neue Implementierung + Blender 5.0:
|
||||
Dies stellt die endgültige Version der neuen Implementierung und somit die endgültige Performance dar.
|
||||
|
||||
<span style="color: red;">END GESCHRIEBEN</span>
|
||||
|
||||
<span style="color: yellow; font-size: 2em">TODO: Den Check, ob die Messungen Einfluss haben wurde glaube ich nicht gemacht</span>
|
||||
Um die zusätzlichen Messwerte erfassen zu können, musste das Script angepasst werden. Um sicherzustellen, dass die Messung minimalen Einfluss auf die Laufzeiten hatte, wurde zusätzlich der Test ... auch ohne Instrumentalisierung durchgeführt und nur die Gesamtlaufzeit erfasst. Wenn die Ergebnisse zeigen, dass die Gesamtlaufzeiten innerhalb der Standardabweichung praktisch gleich sind, kann davon ausgegangen werden, dass die Instrumentalisierung des Codes keinen Einfluss auf die Gesamtlaufzeit sowie die Teillaufzeiten hatte.
|
||||
|
||||
> [!question]- TODO, falls ich Bock habe
|
||||
|
||||
Reference in New Issue
Block a user