Mehr Experiment Schreiberei

This commit is contained in:
Simon Lübeß
2026-03-20 22:44:00 +01:00
parent 2c02dbe2a2
commit 4d272666c2
3 changed files with 157 additions and 14 deletions

View File

@@ -239,7 +239,7 @@ test: images/test # Optionaler Pfad zu den Testdaten (relativ zu "path")
classes:
0: pupil
```
Ordnerstruktur:
Ordnerstruktur: TODO: Die ist falsch
```
+ current
+-+ train
@@ -264,13 +264,139 @@ Ordnerstruktur:
| | +-- XXXX.txt
| | +-- ...
```
# TODO:
#### TODO:
1. [x] Nochmal die Bilder extrahieren, damit wir die Statisik haben, wie viele wir nach Phase 1 hatten. (Kommando ist in Experiment2/extracted_500k_images)
1. [x] Dafür im Script wieder alle Testpersonen aktivieren
2. [x] Nochmal gucken, ob 0.5 für SSIM-Schwellwert wirklich gut ist
2. [x] Helligkeitswerte extrahieren
3. [ ] Mit einem kleinen Yolo-Modell testen, ob das geplotte funktioniert
3. [x] Mit einem kleinen Yolo-Modell testen, ob das geplotte funktioniert
-> es schein einen runs-Ordner im root-Verzeichnis zu geben, da macht Yolo schon einiges
4. [ ] Optimierungen in alte Pipeline aufnehmen
5. [ ] Die Trainings-Bilder generieren (5000 alt, 5000 neu)
6. [ ] Trainings der Modelle
4. [x] Optimierungen in alte Pipeline aufnehmen
5. [x] Die Trainings-Bilder generieren (5000 alt, 5000 neu)
6. [x] Trainings der Modelle
# Auswertung:
## Grundlagen:
Zu berechnen:
- IoU und Dice-Score
- Pro Bild berechnen -> Boxplot/Violinplot
- Durchschnitt und Std. Dev. über alle Bilder -> Tabelle
## Tiefer gehen:
- Da selbes Testset kann man gepaart vergleichen:
- _Wilcoxon Signed-Rank Test_ auf die per-Bild-Dice/IoU-Werte
- oder _Bootstrap-Konfidenzintervalle_ für die Differenz der Mittelwerte
## Anteil klarer Fehlerfälle:
z. B.
- Anteil Bilder mit IoU = 0
- Anteil Bilder mit Dice < 0.5
- Anteil Bilder, in denen die Pupille komplett verfehlt wurde
- Anteil Bilder, in denen fälschlicherweise keine Pupille gefunden wurde
- Anteil Bilder, in denen fälschlicherweise eine Pupille gefunden wurde
- usw.
## Analyse nach Bildmerkmalen / Schwierigkeiten
Wenn du aus den Daten oder Masken etwas ableiten kannst, dann unterteile nach:
- **Okklusionsgrad**
- **Pupillengröße**
- **Pupillenexzentrizität / Blickwinkel**
- **Helligkeit / Kontrast**
- **Glint-Anzahl**
- **Randnähe**
Dann siehst du nicht nur **welches Modell besser ist**, sondern auch **warum**.
## Boundary-Metrik als Ergänzung
Falls dich die **Konturgenauigkeit** interessiert:
- Boundary F1
- Hausdorff Distance
- Average Surface Distance
Für Pupillensegmentierung kann das nützlich sein, weil kleine Randfehler für die spätere Ellipsen- oder Mittelpunktbestimmung relevant sein können.
## Pupil center error
Das RIT-Eyes-Paper nennt explizit, dass zusätzlich auch die **Abweichung des Pupillenzentrums** eine sinnvolle Metrik sein kann.
Für dein Eye-Tracking-Thema ist das sogar **sehr relevant**, weil ein Modell mit ähnlichem Dice trotzdem einen schlechteren Pupillenmittelpunkt liefern kann.
-> Da der 500k-Datensatz sowas nicht direkt bietet, müssten wir wahrscheinlich
Dann berechnest du den **Pupil Center Error** auf zwei Arten:
- **Centroid-basiert**
- **Ellipsenfit-basiert**
So kannst du zwei leicht unterschiedliche Fragen beantworten:
- **Centroid:**
Wie gut stimmt der Schwerpunkt der vorhergesagten Maske mit dem der Ground Truth überein?
- **Ellipsenfit:**
Wie gut stimmt das aus der globalen Pupillenform geschätzte Zentrum überein?
Das hilft dir auch bei der Interpretation:
- **Centroid schlechter, Ellipsenfit besser**
→ eher lokale Formfehler / Löcher / kleine Artefakte
- **beide schlecht**
→ echte Lagefehler oder grobe Segmentierungsfehler
- **Dice gut, aber Center Error schlecht**
→ Segmentierung überlappt ordentlich, liegt aber leicht verschoben
## Methodisch würde Gibbidy es so formulieren
> Zusätzlich zu Dice-Score und IoU wurde der Fehler des Pupillenzentrums im Bildraum bestimmt. Dazu wurde das Pupillenzentrum sowohl als Schwerpunkt der binären Pupillenmaske als auch als Mittelpunkt einer an die Pupillenkontur angepassten Ellipse berechnet. Der jeweilige Pupil Center Error wurde als euklidischer Abstand zwischen dem aus der Vorhersage bestimmten Zentrum und dem entsprechenden Zentrum der Ground-Truth-Maske angegeben.
## Inhaltlich wichtig für deine Argumentation
Wenn dein Ziel ist zu zeigen, dass die **neue synthetische Pipeline** bessere Trainingsdaten liefert, dann ist die stärkste Story meist:
1. **Höherer Dice/IoU auf realen Testdaten**
2. **Weniger Ausreißer / robustere Verteilung**
3. **Bessere Ergebnisse gerade in schwierigen Fällen**
4. eventuell **besserer Pupillenmittelpunkt**
Das ist meist überzeugender als nur ein einzelner Durchschnittswert.
# TODO:
https://chatgpt.com/g/g-p-693e918aca0081919b456cb68144a742-masterarbeit/c/69b9ba88-3018-8390-a2af-0d57aa308a56
## Tabelle 1 (pro Modell):
### Hauptmetriken:
- **Dice:** Mittelwert ± Standardabweichung, Median, IQR
- **IoU:** Mittelwert ± Standardabweichung, Median, IQR
### Ergänzende Metriken
- **Center Error (Centroid):** Mittelwert ± Standardabweichung, Median, IQR
- **Center Error (Ellipse):** Mittelwert ± Standardabweichung, Median, IQR
## Tabelle 2 (Vergleich neu vs. alt):
- mittlere Differenz pro Metrik
- Wilcoxon-p-Wert
- 95%-Konfidenzintervall (weil ich das in einem anderen Experiment auch schon habe)
## Abbildungen
- Boxplot/Violinplot Dice
- Boxplot/Violinplot IoU
- optional Center Error
- Beispielbilder der schlechtesten Fälle
## Optional: Boundary Metriken berechnen
# Quantitative Untersuchung
# 1. Anteil Bilder mit IoU = 0
# 2. Anteil Bilder mit leerer vorhergesagter Maske (keine Pupille erkannt, obwohl in ground-thruth eine ist)
# 3. Anteil Bilder mit fälschlich erkannter Pupille (eine Pupille erkannt, obwohl in ground-thruth KEINE ist)
# 3. Anteil Bilder mit zu vielen Pupillen erkannt (mehrere Pupillen erkannt, obwohl in ground-thruth immer nur eine ist)
Was ich jetzt habe (und noch Plane):
1. Dice und IoU:
1. Tabelle für Dice und IoU mit Mean, Std.Dev., Median, Q1, Q3 und IQR
2. Boxplot für Dice und IoU
3. TODO: Die Daten im Testset sind zu gleichen Teilen von 10 Probanden -> Boxplot pro Proband machen
2. TODO: Konfidenzintervall oder Wilcoxon dingsbums
3. Pupil center error (Für Centroid und Ellipse)
1. Tabellen
2. Boxplots
3. TODO: Den Fall: keine Segmentierung in GT erwartet und auch korrekt nichts predicted -> Distanz von 0 oder doch lieber NaN?
4. Qualitativer Vergleich:
1. (Anzahl) Fälle in denen ein Modell Dice von 1 und das andere von 0 hat:
Das bedeutet, dass keine Pupille in GT ist, aber eines der beiden Modelle hat eine Pupille "erkannt" (-> Dice = 0), während das andere korrekt keine erkannt hat (Dice = 1)
2. (Anzahl) Fälle in denen beide Modelle Dice = 0 haben, also fälschlicherweise keine Pupille gefunden oder fälschlicherweise eine gefunden haben
3. (Anzahl) Fälle in denen ein Modell Dice von 0 und das andere von > 0 hat:
Das bedeutet, dass eine Modell hat versagt, das andere aber nicht (entweder korrekt keine Pupille segmentiert, oder zumindest teilweise segmentiert)
4. TODO: In wie vielen Fällen ist Baseline Dice besser, in wie vielen ist Current Dice
1. TODO: Fälle mit größter Dice-Differenz visuell beurteilen
5. TODO: In wie vielen Fällen hat eines der beiden Modelle Dice < 0.5