|
|
--- |
|
|
license: mit |
|
|
tags: |
|
|
- emotion-detection |
|
|
- image-classification |
|
|
- computer-vision |
|
|
- resnet |
|
|
datasets: |
|
|
- custom |
|
|
--- |
|
|
|
|
|
# emotion_model-thoeppner |
|
|
|
|
|
Dieses Modell ist eine feinjustierte Version von `resnet-18` für einen benutzerdefinierten Emotionsdatensatz. Es erzielt die folgenden Ergebnisse auf der Validierungsmenge: |
|
|
|
|
|
- **Loss**: 0.8515 |
|
|
- **Accuracy**: 71.60 % |
|
|
|
|
|
## Modell Beschreibung |
|
|
|
|
|
Das Modell basiert auf der ResNet-18 Architektur und wurde mithilfe von PyTorch auf einem Emotionsdatensatz trainiert. Ziel war es, ein robustes Klassifikationsmodell zur Erkennung von 9 Emotionen in Gesichtern zu entwickeln. |
|
|
|
|
|
## Einsatzbereiche und Einschränkungen |
|
|
|
|
|
**Verwendungszweck:** |
|
|
|
|
|
- Klassifizierung von Emotionen zu Bildungs-, Analyse- oder Demonstrationszwecken |
|
|
- Kann in Gradio-Anwendungen zur Emotionserkennung auf hochgeladenen Gesichtern genutzt werden |
|
|
|
|
|
**Einschränkungen:** |
|
|
|
|
|
- Nicht geeignet für Emotionen ausserhalb der 9 trainierten Klassen |
|
|
- Erkennung kann bei schlechten Lichtverhältnissen, verdeckten Gesichtern oder untypischen Gesichtsausdrücken ungenau sein |
|
|
- Modell benötigt klare, frontal aufgenommene Gesichter für optimale Ergebnisse |
|
|
|
|
|
## Trainings- und Evaluationsdaten |
|
|
|
|
|
Das Modell wurde auf einem privaten Emotionsdatensatz mit **64 864** Bildern in **9 Klassen** trainiert. |
|
|
|
|
|
**Klassen:** |
|
|
|
|
|
- happy |
|
|
- sad |
|
|
- angry |
|
|
- surprised |
|
|
- fear |
|
|
- disgust |
|
|
- neutral |
|
|
- contempt |
|
|
- unknown |
|
|
|
|
|
**Aufteilung des Datensatzes:** |
|
|
|
|
|
- 80 % Training |
|
|
- 20 % Validierung (interner Split) |
|
|
|
|
|
## Training der Hyperparameter |
|
|
|
|
|
Die folgenden Hyperparameter wurden beim Training verwendet: |
|
|
|
|
|
| Hyperparameter | Wert | |
|
|
|-----------------------|----------------| |
|
|
| Optimizer | Adam | |
|
|
| Learning Rate | 0.0005 (mit ReduceLROnPlateau Scheduler) | |
|
|
| Batch Size | 64 | |
|
|
| Loss Function | CrossEntropyLoss | |
|
|
| Early Stopping | nach 5 Epochen ohne Verbesserung | |
|
|
| Maximale Epochen | 6 | |
|
|
| Eingabebildgröße | 224 × 224 Pixel | |
|
|
|
|
|
## Training Resultate |
|
|
|
|
|
| Epoche | Train Loss | Train Accuracy | Val Loss | Val Accuracy | |
|
|
|-------|------------|----------------|----------|--------------| |
|
|
| 1 | 0.9685 | 65.72 % | 0.9370 | 66.70 % | |
|
|
| 2 | 0.7705 | 72.42 % | 1.0514 | 62.30 % | |
|
|
| 3 | 0.7409 | 73.08 % | 1.0166 | 64.90 % | |
|
|
| 4 | 0.6329 | 77.15 % | 0.9834 | 65.70 % | |
|
|
| 5 | 0.4704 | 83.40 % | 0.8515 | 71.60 % | |
|
|
| 6 | 0.3543 | 87.83 % | 0.9220 | 70.80 % | |
|
|
|
|
|
- **Bestes Validation Loss**: **0.8515** |
|
|
- **Bestes Validation Accuracy**: **71.60 %** |
|
|
|
|
|
--- |
|
|
|
|
|
## Vergleich mit Zero-Shot-Modell (CLIP) |
|
|
|
|
|
Zur Einordnung der Leistung wurde das Modell mit einem Zero-Shot-Klassifikationsmodell `openai/clip-vit-base-patch32` verglichen. Beide Modelle wurden auf dem identischen Testset (5 000 Bilder) ausgewertet. |
|
|
|
|
|
### Zero-Shot Modell: |
|
|
|
|
|
- **Modell**: CLIP (ViT-Base, Patch-32) |
|
|
- **Aufgabe**: Zero-Shot Image Classification |
|
|
- **Keine Feinjustierung** – nutzt nur Text-Bild-Verständnis |
|
|
|
|
|
### Beobachtungen: |
|
|
|
|
|
- Das ResNet-18 Modell erzielt eine deutlich höhere Accuracy auf bekannten Emotionen und kann feine Unterschiede zwischen Emotionen besser erkennen. |
|
|
- Das CLIP-Modell zeigte gute Generalisierung auf bisher unbekannte Emotionen, hatte jedoch insgesamt eine geringere Genauigkeit. |
|
|
|
|
|
### Zero-Shot Ergebnisse: |
|
|
|
|
|
- **Accuracy**: 10.0 % |
|
|
- **Macro Avg F1-Score**: 7 % |
|
|
- **Weighted Avg F1-Score**: 5 % |
|
|
|
|
|
--- |
|
|
|
|
|
## Framework Versionen |
|
|
|
|
|
| Bibliothek | Version | |
|
|
|----------------|---------------| |
|
|
| Transformers | 4.52.2 | |
|
|
| PyTorch | 2.6.0+cu124 | |
|
|
| Datasets | 3.4.1 | |
|
|
| Tokenizers | 0.21.1 | |
|
|
| scikit-learn | 1.4.2 | |
|
|
| Matplotlib | 3.8.4 | |
|
|
| Seaborn | 0.13.2 | |
|
|
|