Derive shallow-water bathymetry from RGB or multispectral images (optional NIR) + truth points
(X,Y,Depth).
XGBoost-style Gradient Boosted Trees regressor — runs fully in your browser.
1. Data Input
Load separate band images (greyscale). System auto-creates composite view.
2. Map Tools (Points & Masks)
Click on the image to add points, or upload a CSV (x, y, depth).
No points yet
Draw areas to exclude from prediction (e.g. land, boats).
Click = add vertex Double-Click = close area
3. Model Settings
Status: waiting
Image: —
Points: —
Train RMSE: —
Test RMSE: —
RGB / Composite Preview
Bathymetry Result
0m (shallow)Deep
×
Help & Documentation
About Skybathy XGBoost
This tool derives shallow-water bathymetry (water depth) from aerial/satellite imagery using a
Gradient Boosted Trees (XGBoost-style) regressor trained entirely in your browser. No server,
no upload — everything runs locally.
Input Modes
Standard RGB: Use a standard aerial or satellite color image (PNG, JPG, BMP). An optional NIR channel improves land/water discrimination and adds NDWI features.
Multispectral: Upload separate greyscale images for Blue, Green, Red, and optionally NIR bands. This mode is more accurate because it extracts physics-based spectral ratios (Stumpf et al., Lyzenga).
Map Tools (Points & Masks)
Click on image: Set the "Manual Click Depth" value, then click on the image where you know the depth. A red cross marks each point.
CSV upload: Upload a CSV file with columns x, y, depth (case-insensitive). Coordinates are in pixel space (column, row).
Exclusion Areas: Draw polygons to mask out elements like land, boats, or clouds. Click to add a vertex, double-click to close the polygon. Masked pixels will be ignored during prediction.
You need at least 5 points (recommended: 20+).
Features Used (Spectral Feature Engineering)
RGB mode: R, G, B raw values, brightness (R+G+B)/3, log-ratios log(B/G), log(G/R), log(B/R). If NIR is provided: NIR value, log(B/NIR), log(G/NIR), NDWI.
Multispectral mode: Blue, Green, Red raw values, brightness, log(B/G), log(G/R), log(B/R). If NIR: NIR value, log(B/NIR), log(G/NIR), NDWI = (Green−NIR)/(Green+NIR).
Model Settings (Practical Meaning)
Number of trees (Estimators): More trees can improve accuracy but training is slower. Typical: 50–300.
Learning rate: Smaller = safer / better generalization, but needs more trees. Typical: 0.05–0.2.
Max tree depth: Controls complexity of each tree. For shallow sandy bottoms, 3–5 is usually sufficient. Higher risks overfitting.
Min samples leaf: Stabilises trees — avoids tiny leaves that chase noise. Typical: 3–15.
Row subsample: Fraction of training data used per tree (stochastic GB). 0.7–0.9 improves robustness.
Col subsample: Fraction of features considered per tree. 0.7–1.0 adds diversity.
Test split %: Percentage of points held out for validation (RMSE). Use 15–30%.
Max depth (m) focus: Points deeper than this are excluded from training. Keeps the model focused on shallow water.
Validation Notes
This demo uses a random split for quick feedback. In real coastal work, do a spatial split (tiles/blocks) to avoid optimistic metrics due to spatial autocorrelation.
Model Save / Load
You can save the trained model as a JSON file and reload it later to predict on new images without retraining.
Important
This is an "XGBoost-style" GBDT implemented in JavaScript (same boosting idea), not the official dmlc/xgboost engine. For production, train in Python and run inference in JS.
Informazioni su Skybathy XGBoost
Questo strumento deriva la batimetria in acque basse (profondità dell'acqua) da immagini aeree/satellitari utilizzando un regressore Gradient Boosted Trees (stile XGBoost) addestrato interamente nel tuo browser. Nessun server, nessun upload: tutto viene eseguito localmente.
Modalità di Input
Standard RGB: Usa un'immagine a colori standard aerea o satellitare (PNG, JPG, BMP). Un canale NIR opzionale migliora la discriminazione terra/acqua e aggiunge feature NDWI.
Multispettrale: Carica immagini in scala di grigi separate per le bande Blu, Verde, Rosso e, opzionalmente, NIR. Questa modalità è più accurata perché estrae rapporti spettrali basati sulla fisica (Stumpf et al., Lyzenga).
Strumenti Mappa (Punti e Maschere)
Clicca sull'immagine: Imposta il valore "Profondità click manuale", quindi clicca sull'immagine dove conosci la profondità. Una croce rossa segna ogni punto.
Upload CSV: Carica un file CSV con le colonne x, y, depth (senza distinzione tra maiuscole e minuscole). Le coordinate sono nello spazio dei pixel (colonna, riga).
Aree Escluse: Disegna poligoni per mascherare elementi come terraferma, barche o nuvole. Clicca per aggiungere un vertice, fai doppio clic per chiudere il poligono. I pixel mascherati verranno ignorati durante la predizione.
Hai bisogno di almeno 5 punti (consigliati: 20+).
Feature Utilizzate (Ingegneria delle Feature Spettrali)
Modalità RGB: Valori grezzi R, G, B, luminosità (R+G+B)/3, log-rapporti log(B/G), log(G/R), log(B/R). Se viene fornito il NIR: valore NIR, log(B/NIR), log(G/NIR), NDWI.
Modalità Multispettrale: Valori grezzi Blu, Verde, Rosso, luminosità, log(B/G), log(G/R), log(B/R). Se NIR: valore NIR, log(B/NIR), log(G/NIR), NDWI = (Verde−NIR)/(Verde+NIR).
Impostazioni del Modello (Significato Pratico)
Numero di alberi (Estimatori): Più alberi possono migliorare la precisione ma l'addestramento è più lento. Tipico: 50–300.
Learning rate (Tasso di apprendimento): Più piccolo = più sicuro / migliore generalizzazione, ma richiede più alberi. Tipico: 0.05–0.2.
Max tree depth (Profondità massima albero): Controlla la complessità di ogni albero. Per fondali sabbiosi bassi, 3–5 è di solito sufficiente. Valori più alti rischiano l'overfitting.
Min samples leaf: Stabilizza gli alberi, evita foglie minuscole che inseguono il rumore. Tipico: 3–15.
Row subsample (Sottocampionamento righe): Frazione di dati di addestramento utilizzata per albero (GB stocastico). 0.7–0.9 migliora la robustezza.
Col subsample (Sottocampionamento colonne): Frazione di feature considerate per albero. 0.7–1.0 aggiunge diversità.
Test split %: Percentuale di punti tenuti da parte per la validazione (RMSE). Usa 15–30%.
Max depth (m) focus: I punti più profondi di questo valore vengono esclusi dall'addestramento. Mantiene il modello concentrato sulle acque basse.
Note sulla Validazione
Questa demo utilizza uno split casuale (random split) per un feedback rapido. Nel lavoro costiero reale, esegui uno split spaziale (tile/blocchi) per evitare metriche ottimistiche dovute all'autocorrelazione spaziale.
Salvataggio / Caricamento Modello
Puoi salvare il modello addestrato come file JSON e ricaricarlo in seguito per effettuare predizioni su nuove immagini senza doverlo riaddestrare.
Importante
Questo è un GBDT "stile XGBoost" implementato in JavaScript (stessa idea di boosting), non il motore ufficiale dmlc/xgboost. Per la produzione, addestra in Python ed esegui l'inferenza in JS.
Acerca de Skybathy XGBoost
Esta herramienta deriva la batimetría de aguas poco profundas (profundidad del agua) de imágenes aéreas/satelitales utilizando un regresor Gradient Boosted Trees (estilo XGBoost) entrenado completamente en su navegador. Sin servidor, sin carga: todo se ejecuta localmente.
Modos de Entrada
RGB Estándar: Use una imagen aérea o satelital en color estándar (PNG, JPG, BMP). Un canal NIR opcional mejora la discriminación tierra/agua y agrega características NDWI.
Multiespectral: Cargue imágenes en escala de grises separadas para las bandas Azul, Verde, Rojo y, opcionalmente, NIR. Este modo es más preciso porque extrae relaciones espectrales basadas en la física (Stumpf et al., Lyzenga).
Herramientas de Mapa (Puntos y Máscaras)
Clic en la imagen: Establezca el valor "Profundidad de clic manual", luego haga clic en la imagen donde conoce la profundidad. Una cruz roja marca cada punto.
Carga de CSV: Cargue un archivo CSV con las columnas x, y, depth (no distingue entre mayúsculas y minúsculas). Las coordenadas están en el espacio de píxeles (columna, fila).
Áreas de Exclusión: Dibuja polígonos para enmascarar elementos como tierra firme, barcos o nubes. Haz clic para agregar un vértice, haz doble clic para cerrar el polígono. Los píxeles enmascarados serán ignorados durante la predicción.
Necesita al menos 5 puntos (recomendado: 20+).
Características Utilizadas (Ingeniería de Características Espectrales)
Modo RGB: Valores brutos R, G, B, brillo (R+G+B)/3, log-relaciones log(B/G), log(G/R), log(B/R). Si se proporciona NIR: valor NIR, log(B/NIR), log(G/NIR), NDWI.
Modo Multiespectral: Valores brutos Azul, Verde, Rojo, brillo, log(B/G), log(G/R), log(B/R). Si NIR: valor NIR, log(B/NIR), log(G/NIR), NDWI = (Verde−NIR)/(Verde+NIR).
Configuración del Modelo (Significado Práctico)
Número de árboles (Estimadores): Más árboles pueden mejorar la precisión pero el entrenamiento es más lento. Típico: 50–300.
Tasa de aprendizaje (Learning rate): Más pequeña = más segura / mejor generalización, pero necesita más árboles. Típico: 0.05–0.2.
Profundidad máxima del árbol: Controla la complejidad de cada árbol. Para fondos arenosos poco profundos, 3–5 suele ser suficiente. Valores más altos corren el riesgo de sobreajuste.
Min samples leaf: Estabiliza los árboles, evita hojas diminutas que persiguen el ruido. Típico: 3–15.
Submuestreo de filas (Row subsample): Fracción de datos de entrenamiento utilizados por árbol (GB estocástico). 0.7–0.9 mejora la solidez.
Submuestreo de columnas (Col subsample): Fracción de características consideradas por árbol. 0.7–1.0 agrega diversidad.
% División de prueba (Test split %): Porcentaje de puntos reservados para validación (RMSE). Use 15–30%.
Enfoque de profundidad máxima (m): Los puntos más profundos que este valor se excluyen del entrenamiento. Mantiene el modelo enfocado en aguas poco profundas.
Notas de Validación
Esta demostración utiliza una división aleatoria para obtener comentarios rápidos. En el trabajo costero real, realice una división espacial (mosaicos/bloques) para evitar métricas optimistas debido a la autocorrelación espacial.
Guardar / Cargar Modelo
Puede guardar el modelo entrenado como un archivo JSON y volver a cargarlo más tarde para predecir en nuevas imágenes sin volver a entrenar.
Importante
Este es un GBDT "estilo XGBoost" implementado en JavaScript (misma idea de boosting), no el motor oficial dmlc/xgboost. Para producción, entrene en Python y ejecute la inferencia en JS.