vision-web-app / README.md
David Ko
Add Spaces YAML front matter (sdk: docker)
a221bc1
|
raw
history blame
3.09 kB
---
title: Vision Web App
emoji: 📷
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false
---
# Vision Web App - Object Detection Demo
A multi-model object detection and image classification demo using YOLOv8, DETR, and ViT models. This project is designed to showcase different computer vision models for a hiring demonstration.
## Project Architecture
This project follows a phased development approach:
### Phase 0: PoC with Gradio (Original)
- Simple Gradio interface with multiple object detection models
- Uses Hugging Face's free tier for model hosting
- Easy to deploy to Hugging Face Spaces
### Phase 1: Service Separation (Implemented)
- Backend: Flask API with model inference endpoints
- REST API endpoints for model inference
- JSON responses with detection results and performance metrics
### Phase 2: UI Upgrade (Implemented)
- Modern React frontend with Material-UI components
- Improved user experience with responsive design
- Separate frontend and backend architecture
### Phase 3: CI/CD & Testing (Planned)
- GitHub Actions for automated testing and deployment
- Comprehensive test suite with pytest and ESLint
- Automatic rebuilds on Hugging Face Spaces
## How to Run
### Option 1: Original Gradio App
1. Install dependencies:
```bash
pip install -r requirements.txt
```
2. Run the Gradio app:
```bash
python app.py
```
3. Open your browser and go to the URL shown in the terminal (typically `http://127.0.0.1:7860`)
### Option 2: React Frontend with Flask Backend
1. Install backend dependencies:
```bash
pip install -r requirements.txt
```
2. Start the Flask backend server:
```bash
python api.py
```
3. In a separate terminal, navigate to the frontend directory:
```bash
cd frontend
```
4. Install frontend dependencies:
```bash
npm install
```
5. Start the React development server:
```bash
npm start
```
6. Open your browser and go to `http://localhost:3000`
## Models Used
- **YOLOv8**: Fast and accurate object detection
- **DETR**: DEtection TRansformer for object detection
- **ViT**: Vision Transformer for image classification
## API Endpoints
The Flask backend provides the following API endpoints:
- `GET /api/status` - Check the status of the API and available models
- `POST /api/detect/yolo` - Detect objects using YOLOv8
- `POST /api/detect/detr` - Detect objects using DETR
- `POST /api/classify/vit` - Classify images using ViT
All POST endpoints accept form data with an 'image' field containing the image file.
## Deployment
### Gradio App
The Gradio app is designed to be easily deployed to Hugging Face Spaces:
1. Create a new Space on Hugging Face
2. Select Gradio as the SDK
3. Push this repository to the Space's git repository
4. The app will automatically deploy
### React + Flask App
For the React + Flask version, you'll need to:
1. Build the React frontend:
```bash
cd frontend
npm run build
```
2. Serve the static files from a web server or cloud hosting service
3. Deploy the Flask backend to a server that supports Python