cyberai-1
Only essentials
9992528
|
Raw
History Blame Contribute Delete
3.3 kB
---
title: Traffic Sign Classification
emoji: 🐠
colorFrom: purple
colorTo: green
sdk: docker
pinned: false
---
# Traffic Sign Classifier Flask App
This project deploys a `traffic_classifier.h5` model as a Flask web app for Hugging Face Spaces with Docker.
## Features
- Welcome page based on the provided visual template direction
- Login and registration
- Protected traffic sign prediction page
- SQLite storage inside the container at `instance/traffic_signs.sqlite3`
- Per-user prediction history
- True/false feedback for every prediction
- Dashboard with total predictions, reviewed predictions, true/false counts, and feedback accuracy
## Run Locally
```bash
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python app.py
```
Open `http://localhost:7860`.
## Model
Place the trained model in the project root:
```text
traffic_classifier.h5
```
The app expects a 43-class traffic sign classifier using 30x30 RGB images, matching the common GTSRB class list.
## Hugging Face Space
This Space uses Docker and exposes port `7860`.
For production, set a strong secret:
```text
SECRET_KEY=your-secret-value
```
## Docker Deployment
### Prerequisites
- Docker installed on your system
- Docker Hub account (for pushing to registry)
- All project files including `traffic_classifier.h5`
### Building Docker Image
Build the Docker image locally:
```bash
docker build -t traffic-sign-classifier:latest .
```
### Running Docker Container Locally
Run the container on your local machine:
```bash
docker run -p 7860:7860 \
-e SECRET_KEY=your-secret-key \
-v $(pwd)/instance:/app/instance \
traffic-sign-classifier:latest
```
Then access the application at `http://localhost:7860`.
### Pushing to Docker Hub
1. Tag the image:
```bash
docker tag traffic-sign-classifier:latest yourusername/traffic-sign-classifier:latest
```
2. Push to Docker Hub:
```bash
docker login
docker push yourusername/traffic-sign-classifier:latest
```
### Deploying to Hugging Face Spaces
1. Create a new Space on [Hugging Face Spaces](https://huggingface.co/spaces)
2. Select **Docker** as the SDK
3. In the Space settings, set environment variable:
- `SECRET_KEY=your-production-secret`
4. Upload your project files including:
- `Dockerfile`
- `app.py`
- `requirements.txt`
- `traffic_classifier.h5`
- `templates/` directory
- `static/` directory
5. Hugging Face will automatically build and deploy the container
6. Your app will be accessible at `https://huggingface.co/spaces/YOUR-USERNAME/YOUR-SPACE-NAME`
### Docker Compose (Optional)
Create a `docker-compose.yml` for local development:
```yaml
version: '3.8'
services:
traffic-classifier:
build: .
ports:
- "7860:7860"
environment:
- SECRET_KEY=dev-secret-key
- FLASK_ENV=development
volumes:
- ./instance:/app/instance
- ./templates:/app/templates
- ./static:/app/static
```
Run with:
```bash
docker-compose up
```
### Persistent Data
The SQLite database is stored in the `instance/` directory, which is mounted as a volume. This ensures data persists across container restarts.
### Health Check
To verify the container is running:
```bash
curl http://localhost:7860/
```
You should receive the welcome page HTML.
`