SkySense is an AI-powered system that helps users identify celestial objects observed in the night sky.
The project is designed for two types of users:
- Curious observers (no equipment): Users describe what they saw in natural language (e.g., “a bright moving dot with a short trail”).
- Knowledgeable users / hobbyists: Users enter approximate observational parameters like brightness, motion, duration, or color.
Using multiple machine learning models trained on NASA and Kaggle datasets, SkySense predicts whether the observed object is a:
- Star
- Exoplanet Candidate
- Asteroid
- Meteor
- Artificial Satellite
- Python 3.8+
- Node.js (for optional development)
pip install -r requirements.txt
# OR individually:
pip install fastapi uvicorn streamlit pandas scikit-learn numpy joblibThe FastAPI backend serves the prediction models.
python src/app.py- Server runs at:
http://localhost:8000 - API Docs:
http://localhost:8000/docs
The Streamlit application provides the user interface.
streamlit run app/ui.py- App runs at:
http://localhost:8501
graph LR
A[User Input] --> B{Input Type}
B -->|Text Description| C[NLP Model]
B -->|Numeric Features| D[Feature Model]
C --> E[Prediction]
D --> E
E --> F[UI Display]
-
Natural Language Model
- Type: Logistic Regression + TF-IDF
- Purpose: Handles free-text descriptions.
- Accuracy: ~96.7%
-
Feature-Based Model
- Type: Random Forest Classifier
- Purpose: Handles structured observational data.
- Accuracy: ~100% (on synthetic ruleset)
src/app.py: FastAPI backend.app/ui.py: Streamlit frontend.src/train_models.py: Script to train ML models.src/evaluate_models.py: Script to check model accuracy.data/: Contains raw and processed datasets.models/: Stores trained model artifacts (.joblib).
You can verify the model performance by running:
python src/evaluate_models.pyFeature-Based Model Performance:
- Precision/Recall: 1.00 for all classes.
NLP Model Performance:
- Meteor: 100% precision.
- Satellite: 99% precision.
- Exoplanet: 100% precision.
Educational tool. Predictions are probabilistic and not for scientific validation.