--- title: Babelbox Edge Vision Translator emoji: 🌍📸 colorFrom: gray colorTo: blue sdk: docker app_port: 7860 pinned: false --- # Babelbox Babelbox is a webcam object-detection demo that overlays English object labels and simple target-language translations in the browser. This repository is structured to work as both: - the **GitHub source repo** - the **Hugging Face Docker Space repo** Hugging Face reads the YAML block above, builds `Dockerfile`, and starts `backend.py` on port 7860. ## Detection engines The app has two selectable detection engines: - **RF-DETR backend**: `index.html` sends camera frames to the local Python backend in `backend.py`, which runs `Roboflow/rf-detr-medium`. - **Legacy browser DETR**: `index.html` uses `worker.js` to run `Xenova/detr-resnet-50` in a Web Worker. On Hugging Face Docker Spaces, `backend.py` serves both the browser app and the RF-DETR `/detect` API from the same origin. Translations are dictionary-based. No translation model is loaded in the hot path. ## Requirements ### RF-DETR backend mode - Python 3.11+ - `pip` - A Torch-supported CPU/GPU/MPS runtime. RF-DETR works on CPU, but latency is much better with acceleration. ### Legacy browser DETR mode - A modern browser - Camera access over `localhost` or HTTPS - WebGPU is preferred when available, with WASM fallback handled by Transformers.js ## Local setup Install the Python dependencies: ```bash python3 -m pip install -r requirements.txt ``` Start the RF-DETR backend and frontend server: ```bash python3 backend.py ``` Open `http://127.0.0.1:7860`. The first detection request may take a while because the model is downloaded and loaded on demand. Optional: you can still serve the frontend separately for static UI development: ```bash python3 -m http.server 8000 ``` When served on port 8000, the frontend calls the backend at `http://127.0.0.1:7860/detect`. ## Hugging Face Space deployment Use this same repository as the Space repo. The important files are: ```text README.md Space config and project docs Dockerfile Hugging Face Space runtime backend.py Serves the browser UI and RF-DETR API index.html Browser UI worker.js Browser DETR worker ``` Add the Space as a Git remote, then push: ```bash git remote add hf https://huggingface.co/spaces/malen-h/babelbox git push hf main ``` If your branch is not named `main`, push it to the Space's `main` branch: ```bash git push hf HEAD:main ``` ## Backend API ### Health check ```text GET http://127.0.0.1:7860/health ``` Returns JSON with the backend status, model ID, and whether the model is loaded. ### Detection ```text POST http://127.0.0.1:7860/detect ``` The frontend sends JPEG image bytes. The backend returns: ```json { "results": [ { "label": "bottle", "score": 0.92, "box": { "xmin": 100, "ymin": 120, "xmax": 220, "ymax": 360 } } ] } ``` Optional request headers: - `X-Confidence-Threshold`: detection threshold, default `0.75` - `X-Focus-Mode`: when `true`, filters out people and returns the strongest object ## Supported languages The app uses hard-coded label dictionaries for: - Spanish (`spa_Latn`) - French (`fra_Latn`) - Chinese Simplified (`zho_Hans`) - Hindi (`hin_Deva`) - Afrikaans (`afr_Latn`) - Zulu (`zul_Latn`) Unknown labels fall back to English. To add or improve translations, update the dictionaries in both `index.html` and `worker.js`. ## Project structure ```text backend.py RF-DETR backend and /detect API Dockerfile Hugging Face Docker Space runtime requirements.txt Python dependencies index.html Browser UI, webcam, engine selector, overlays worker.js Legacy browser DETR worker ``` ## Notes - Run the frontend through a local server; camera APIs are unreliable from `file://`. - The default RF-DETR mode requires `backend.py` to be running. - Static hosting can run the frontend, but it cannot run the Python backend. Hugging Face RF-DETR deployment uses the Docker Space config in this repo. - Model files are cached by Hugging Face tooling outside the repository, commonly under `~/.cache/huggingface`.