--- title: Car Detection emoji: 🐢 colorFrom: gray colorTo: yellow sdk: docker pinned: false license: cc-by-nc-nd-4.0 short_description: car-counting --- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference # Parking - Aerial Photo Car Detection Detect and count cars in aerial/satellite photography using an RF-DETR object detection model, served via a FastAPI backend with a Preact frontend. ## Architecture ``` training/ Model training, export, and inference scripts (RF-DETR + ONNX) server/ FastAPI backend — serves ONNX model predictions frontend/ Preact + Vite + TypeScript UI ``` ## Quick Start ### Prerequisites - Python 3.11+ - Node.js 18+ - Trained ONNX model at `training/exported_models/inference_model.sim.onnx` ### Backend ```bash pip install -r server/requirements.txt uvicorn server.main:app --reload --port 8000 ``` ### Frontend ```bash cd frontend npm install npm run dev ``` Open http://localhost:5173, upload an aerial image, and view detection results. ## API ### `POST /detect` Multipart form upload. Returns detected cars with annotated and heatmap images. | Parameter | Type | Default | Description | |-------------|-------|---------|--------------------------| | `file` | file | — | JPEG or PNG image | | `threshold` | float | 0.5 | Confidence threshold 0–1 | Response: ```json { "car_count": 47, "detections": [{"bbox": [x1, y1, x2, y2], "score": 0.97}, ...], "annotated_image": "data:image/jpeg;base64,...", "heatmap_image": "data:image/jpeg;base64,..." } ``` ### `GET /health` Returns `{"status": "ok", "model_loaded": true}`. ## Deployment The backend and frontend are deployed separately so the page loads instantly (static CDN) while the model runs server-side. ### Backend — Hugging Face Spaces 1. Create a new Space at [huggingface.co/new-space](https://huggingface.co/new-space) with **Docker** SDK 2. Clone the Space repo and copy in the required files: ```bash git clone https://huggingface.co/spaces/YOUR_USER/YOUR_SPACE cd YOUR_SPACE cp /path/to/parking/Dockerfile . cp -r /path/to/parking/server ./server mkdir -p training/exported_models cp /path/to/parking/training/exported_models/inference_model.sim.onnx ./training/exported_models/ git add . && git commit -m "Initial deploy" && git push ``` 3. The Space will build the Docker image and start serving at `https://YOUR_USER-YOUR_SPACE.hf.space` ### Frontend — Vercel 1. Push the `frontend/` directory to a GitHub repo (or use the full project repo) 2. Import the project at [vercel.com/new](https://vercel.com/new) 3. Set **Root Directory** to `frontend` 4. Add the environment variable: - `VITE_API_URL` = `https://YOUR_USER-YOUR_SPACE.hf.space` 5. Deploy — Vercel auto-detects Vite and builds it ## Model - Architecture: RF-DETR (medium) - Single class: car - Trained on aerial parking lot imagery in YOLO format - Exported to ONNX with graph simplification - Training scripts and data live under `training/`