--- 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 |