How ljiro/soilscan works
SoilScan combines a mobile soil-analysis app with a Python NPK model-training and analysis pipeline. The user-facing flow is photo capture or upload, model inference, then a soil classification and fertilizer guidance; the README describes the inference backend as Hugging Face Spaces, while this tree contains only selected app screens, not that backend or the classifier screen implementation. The training flow covers configured data preparation, model fitting, evaluation, and embedding-similarity analysis. Edges involving unsampled app behavior rely on README statements; code-level links use the shown source excerpts or SOURCE INDEX.
Main entry points: config.py Experiment config · dataset.py Dataset preparation · model.py Model architectures · train.py Model training
Components 16
Mobile app
- Soil scanner
SoilScan/screens - Fertilizer guidance
SoilScan/screens/FertilizerRecommendationScreen.js - Soil guide
SoilScan/screens/GuideScreen.js
Training pipeline
- UUID label maps
datamaps - Dataset preparation
train/dataset.py - Model architectures
train/model.py - Model training
train/train.py - Training metrics
train/metrics.py
Model analysis
- Batch inference
train/inference.py - Checkpoint evaluation
train/evaluate.py - Embedding similarity
train/similarity_matrix.py - NPK combo similarity
train/combo_similarity.py
Experiment setup
- Experiment config
train/config.py - Experiment presets
experiments
Other components
- SoilScan user
- Inference backend
Connections 28
- SoilScan user → Soil scanner: submits soil photo
README.md - Soil scanner → Inference backend: requests inference
README.md - Inference backend → Soil scanner: returns classification
README.md - Soil scanner → Fertilizer guidance: opens guidance
- SoilScan user → Fertilizer guidance: enters field values
README.md - SoilScan user → Soil guide: views guidance
- UUID label maps → Dataset preparation: provides labels
- Experiment config → Dataset preparation: configures loading
train/dataset.py - Experiment config → Model architectures: configures model
train/model.py - Dataset preparation → Model training: builds loaders
train/train.py - Model architectures → Model training: builds network
train/train.py - Model training → Training metrics: computes metrics
train/train.py - Experiment config → Model training: sets run parameters
train/train.py - Experiment config → Batch inference: configures prediction
train/inference.py - Dataset preparation → Batch inference: supplies transforms
train/inference.py - Model architectures → Batch inference: builds predictor
train/inference.py - Experiment config → Checkpoint evaluation: configures evaluation
train/evaluate.py - Dataset preparation → Checkpoint evaluation: builds test loader
train/evaluate.py - Model architectures → Checkpoint evaluation: builds evaluation model
train/evaluate.py - Model training → Checkpoint evaluation: provides checkpoint
train/evaluate.py - Training metrics → Checkpoint evaluation: scores predictions
train/evaluate.py - Experiment config → Embedding similarity: configures analysis
train/similarity_matrix.py - Dataset preparation → Embedding similarity: supplies samples
train/similarity_matrix.py - Model architectures → Embedding similarity: extracts embeddings
train/similarity_matrix.py - Experiment config → NPK combo similarity: configures analysis
train/combo_similarity.py - Dataset preparation → NPK combo similarity: supplies samples
train/combo_similarity.py - Model architectures → NPK combo similarity: extracts embeddings
train/combo_similarity.py - Experiment presets → Experiment config: provides presets