Model / README.md
Bhavi23's picture
Update README.md
914013b verified
---
title: Satellite Classification Dashboard
emoji: ๐Ÿ›ฐ๏ธ
colorFrom: blue
colorTo: purple
sdk: streamlit
sdk_version: "1.47.0"
app_file: app.py
pinned: false
preload_from_hub:
- Bhavi23/Custom_CNN/best_multimodal_model.keras
- Bhavi23/MobilenetV2/multi_input_model_v1.keras
- Bhavi23/EfficientNet_B0/efficientnet_model.keras
- Bhavi23/DenseNet/densenet_model.keras
---
# ๐Ÿ›ฐ๏ธ Satellite Classification Dashboard
A comprehensive deep learning application for classifying satellite images using multiple state-of-the-art neural network models. This interactive dashboard allows you to compare different models, analyze their performance, and classify satellite images in real-time.
## ๐ŸŒŸ Features
### ๐Ÿ  Dashboard Overview
- Interactive web interface built with Streamlit
- Multi-page navigation system
- Real-time image classification
- Comprehensive model comparison
- Performance analytics and visualizations
### ๐Ÿค– Multiple Model Support
- **Custom CNN**: Tailored architecture for satellite imagery (95.2% accuracy)
- **MobileNetV2**: Lightweight model optimized for speed (92.8% accuracy, 18ms inference)
- **EfficientNetB0**: Best accuracy-efficiency balance (96.4% accuracy)
- **DenseNet121**: Complex pattern recognition capabilities (94.7% accuracy)
### ๐ŸŽฏ Classification Categories
The system can classify 11 different types of satellites and space objects:
- AcrimSat
- Aquarius
- Aura
- Calipso
- Cloudsat
- CubeSat
- Debris
- Jason
- Sentinel-6
- TRMM
- Terra
## ๐Ÿš€ Quick Start
### Try the Live Demo
Visit the Hugging Face Space to use the application directly in your browser.
### Local Installation
1. Clone the repository
```bash
git clone https://github.com/YOUR_USERNAME/satellite-classification-dashboard.git
cd satellite-classification-dashboard
```
2. Install dependencies
```bash
pip install -r requirements.txt
```
3. Run the application
```bash
streamlit run app.py
```
4. Open your browser and navigate to http://localhost:7860
## ๐Ÿ“ฆ Dependencies
- streamlit==1.47.0
- tensorflow-cpu==2.15.0
- numpy==1.26.4
- pandas==2.2.2
- plotly==5.22.0
- Pillow==10.4.0
- requests==2.32.3
- protobuf<4.0.0
## ๐ŸŽฎ How to Use
### 1. Home Page
- Overview of the system capabilities
- Class distribution visualization
- Quick navigation to other features
### 2. Model Comparison
- Side-by-side performance metrics
- Interactive charts comparing accuracy, speed, and model size
- Model selection recommendations
### 3. Image Classification
- Upload satellite images (PNG, JPG, JPEG)
- Select one or multiple models for prediction
- View confidence scores and detailed probabilities
- Get model recommendations based on performance
### 4. Performance Analytics
- Detailed performance breakdowns
- Efficiency metrics analysis
- Comprehensive model comparison tables
### 5. About Models
- Technical specifications for each model
- Strengths and use cases
- Model architecture details
## ๐Ÿ“Š Model Performance
| Model | Accuracy | Precision | Recall | F1-Score | Inference Time | Model Size |
|-------|----------|-----------|---------|----------|----------------|------------|
| EfficientNetB0 | 96.4% | 96.1% | 96.2% | 96.1% | 35ms | 20.1MB |
| Custom CNN | 95.2% | 94.8% | 95.1% | 94.9% | 45ms | 25.3MB |
| DenseNet121 | 94.7% | 94.2% | 94.5% | 94.3% | 52ms | 32.8MB |
| MobileNetV2 | 92.8% | 92.1% | 92.5% | 92.3% | 18ms | 8.7MB |
## ๐ŸŽฏ Model Selection Guide
- ๐Ÿ† **Best Overall Accuracy**: EfficientNetB0 (96.4%)
- โšก **Fastest Inference**: MobileNetV2 (18ms)
- ๐Ÿ’พ **Most Lightweight**: MobileNetV2 (8.7MB)
- ๐ŸŽฏ **Best Balance**: EfficientNetB0 (High accuracy + efficiency)
- ๐Ÿ“ฑ **Mobile/Edge Deployment**: MobileNetV2
- ๐Ÿ”ฌ **Research/High Accuracy**: EfficientNetB0 or DenseNet121
## ๐Ÿ—๏ธ Architecture
### Model Sources
All models are hosted on Hugging Face Model Hub:
- Custom CNN: Bhavi23/Custom_CNN
- MobileNetV2: Bhavi23/MobilenetV2
- EfficientNetB0: Bhavi23/EfficientNet_B0
- DenseNet121: Bhavi23/DenseNet
### Data Pipeline
- **Image Upload**: Supports PNG, JPG, JPEG formats
- **Preprocessing**: Resize to 224x224, normalize to [0,1]
- **Model Inference**: Multi-model prediction with timing
- **Post-processing**: Confidence scoring and recommendations
## ๐Ÿ”ง Technical Details
### Input Requirements
- **Image Format**: PNG, JPG, JPEG
- **Input Size**: 224x224x3 (RGB)
- **Preprocessing**: Automatic resizing and normalization
### Output Format
- **Class Prediction**: One of 11 satellite categories
- **Confidence Score**: Percentage confidence (0-100%)
- **Inference Time**: Milliseconds for prediction
- **Probability Distribution**: Full softmax output for all classes
## ๐Ÿ“ˆ Performance Optimization
- **Model Caching**: Models are cached using @st.cache_resource
- **Lazy Loading**: Models loaded only when needed
- **Efficient Preprocessing**: Optimized image pipeline
- **Memory Management**: Automatic cleanup of model objects
## ๐Ÿšข Deployment
### Hugging Face Spaces
The application is deployed on Hugging Face Spaces using:
- **Runtime**: Python 3.9
- **Framework**: Streamlit
- **Resources**: CPU-optimized for inference
### Docker Deployment
```dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 7860
CMD ["streamlit", "run", "app.py", "--server.port=7860", "--server.address=0.0.0.0"]
```
## ๐Ÿค Contributing
We welcome contributions! Please follow these steps:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit changes (`git commit -m 'Add amazing feature'`)
4. Push to branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
### Development Setup
```bash
# Clone your fork
git clone https://github.com/YOUR_USERNAME/satellite-classification-dashboard.git
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install development dependencies
pip install -r requirements.txt
# Run in development mode
streamlit run app.py --logger.level=debug
```
## ๐Ÿ“„ License
This project is licensed under the MIT License - see the LICENSE file for details.
## ๐Ÿ™ Acknowledgments
- **Dataset**: Spark 2021 dataset used for training
- **Frameworks**: TensorFlow, Streamlit, Plotly
- **Models**: Pre-trained architectures from TensorFlow/Keras
- **Hosting**: Hugging Face Spaces for deployment
## ๐Ÿ“ž Support
- **Issues**: GitHub Issues
- **Discussions**: GitHub Discussions
- **Email**: bhavithrass@gmail.com
## ๐Ÿ”ฎ Future Enhancements
- [ ] Real-time Video Classification
- [ ] Batch Processing for multiple images
- [ ] Model Fine-tuning Interface
- [ ] Custom Model Upload
- [ ] Export Predictions (CSV/JSON)
- [ ] API Endpoint for programmatic access
- [ ] Mobile App version
- [ ] Advanced Visualization with satellite orbit data
## ๐Ÿ“Š Usage Statistics
Track your application usage:
- **Classifications Performed**: Real-time counter
- **Popular Models**: Usage analytics
- **Performance Metrics**: Response time tracking
---
Built with โค๏ธ using Streamlit and TensorFlow
For more information, visit our [Hugging Face Space](https://huggingface.co/spaces/Bhavi23/satellite-classification-dashboard)