Spaces:
Sleeping
Sleeping
| title: Totes Emosh | |
| emoji: ⚡ | |
| colorFrom: yellow | |
| colorTo: indigo | |
| sdk: gradio | |
| sdk_version: 6.15.2 | |
| app_file: app.py | |
| pinned: false | |
| short_description: Pose six basic emotions. See what the classifier reads. | |
| # totes-emosh | |
| LittleMonkeyLab toy app for facial-expression recognition. A | |
| **six-emotion replication challenge**: pose each of the six basic | |
| emotions (happy, sad, fear, disgust, anger, surprise), the classifier | |
| reads each attempt, and you leave with a single-page **EmotionMap** | |
| PDF. | |
| ## What this does | |
| Companion app to Week 3 Part 4 of the Goldsmiths MSc in Psychology — | |
| *Emotion in Action*. Built around a single-person replication of | |
| Porter and ten Brinke (2008): can you fake an emotional expression | |
| on demand, and how well does a state-of-the-art classifier read each | |
| attempt? Two output formats: **Face** (your face crops) and | |
| **Wireframe** (anonymised landmark meshes — face-free). | |
| Codewright fork of the original | |
| [`LittleMonkeyLab/All_a_bit_emotional`](https://huggingface.co/spaces/LittleMonkeyLab/All_a_bit_emotional) | |
| Space, slimmed to static images only. The dynamic video pipeline now | |
| lives elsewhere. | |
| ## Setup | |
| ```bash | |
| git clone <url> | |
| cd totes-emosh | |
| uv venv | |
| uv pip install -r requirements.txt | |
| uv run python app.py | |
| ``` | |
| `requirements.txt` is preserved for HuggingFace Space deployment. | |
| `pyproject.toml` is the codewright-canonical dependency manifest for local | |
| development. | |
| ## Deployment | |
| This repo is designed to deploy directly as a HuggingFace Space (the | |
| YAML frontmatter above is the Space config). The face landmarker and | |
| classifier use the modern `mediapipe.tasks` API, which runs on both | |
| Apple Silicon (local dev) and the Linux x86-64 Spaces runtime | |
| unchanged. | |
| ### Model assets | |
| No model weights are committed to this repo. All weights download on | |
| first request: | |
| - `FER_static_ResNet50_AffectNet.pt` from HuggingFace | |
| (`ElenaRyumina/face_emotion_recognition`), driven by `config.toml` | |
| and `app/model.py`. | |
| - `face_landmarker.task` (MediaPipe Face Landmarker bundle, ~3 MB) | |
| from `storage.googleapis.com/mediapipe-models/` on first inference. | |
| Cold-start latency from these downloads is a few seconds on the | |
| ResNet50 weights and trivial on the landmarker bundle. | |
| ### Runtime expectations | |
| CPU inference on a free HF Space (~2 vCPU, 16 GB RAM): | |
| - MediaPipe Face Landmarker: ~10 ms / frame | |
| - ResNet50 static classifier: ~50–100 ms / frame | |
| ## Status | |
| Active. Original `LittleMonkeyLab/All_a_bit_emotional` Space remains | |
| live and unchanged; this is the new canonical six-emotion build under | |
| its own slug (`LittleMonkeyLab/totes-emosh`). | |
| ## Provenance | |
| Cloned from `LittleMonkeyLab/All_a_bit_emotional` via `hf download` on | |
| 2026-06-03; substantially rebuilt 2026-06-05/07. See `DEVLOG.md` for | |
| the iteration trail. | |
| ## Credit | |
| Created by Dr. Gordon Wright — A LittleMonkeyLab caper. | |
| Part of the Goldsmiths MSc in Psychology, Week 3 Part 4. | |