BluEcho
Local sonar inspection, detection, and evidence review.
Live dashboard · Model weights · PyPI package · Source code · Documentation · Report an issue
BluEcho is a Python toolkit and local dashboard for turning sonar imagery into reviewable detection results. It brings together model inference, annotated images, human review, and structured exports in a workflow that can run offline after dependencies and model files have been prepared.
Created for the Smart India Hackathon (SIH) 2026 by Khushi Mhamane, Sharon Melhi, Kirti Rajput, Peeyush Rampal, and Aditya Banerjee.
The project is a research prototype. Its side-scan sonar (SSS) and forward-looking sonar (FLS) routes use separate models with different evidence and limitations; the capability table below explains what each route supports.
What BluEcho provides
- Sonar detection: explicit model and sensor selection, with predictions expressed in original image coordinates.
- Local inspection dashboard: a bundled React interface and Python API for running inspections, examining candidates, and reviewing results.
- Traceable human review: persistent review history, corrected boxes, labels, and false-alert decisions while preserving original predictions.
- Portable evidence: annotated images, object crops, JSON/CSV, GeoJSON, and local HTML review bundles through the relevant inspection and export commands.
- Source-bound geolocation: coordinate enrichment when verified raster metadata or a matching sidecar supports it. Results without defensible locations retain null geometry.
- Controlled model setup: explicit acquisition or local import, pinned model hashes, and separate model/data licence information.
Interactive demo and inspection desk
- Real sonar demo: Try demo opens SubPipe pipeline/seabed images, Marine Debris FLS water-tank images and NOAA survey windows. Images are genuine; boxes and confidence scores come from saved, freshly executed CPU detector runs. Opening a sample does not run inference again. Surprise me selects a different real sample.
- Genuine location metadata: NOAA samples preserve their GeoTIFF georeferencing. Samples without verified per-image geography keep null coordinates. Corrected boxes update geographic estimates; field accuracy is unvalidated.
- A focused workspace: visual sample selection, searchable Reports, responsive image inspection and human review. The former Models & system page is removed.
- Guided human review: contact queue, completion progress, retain/false-alert/uncertain decisions, optional advance to the next unreviewed contact, and J/K navigation. Notes, reviewers, revisions and original predictions stay attached to each contact.
- Batch image inspections: submit up to four images from a confirmed sensor/model combination. Inference runs sequentially; each source has separate results and failures.
- Focused visual inspection: an expanded workspace, display-only brightness and contrast, original-pixel bounding boxes, and an aspect-preserving local geographic view.
- PDF inspection briefs: download annotated sonar, included contacts, score interpretation, supported coordinates, source/model hashes and operator audit trails. JSON retains full Unicode text where the PDF's standard font cannot represent it.
- Review-candidate export: export reviewed annotations for further curation. This is not an exhaustive labelled dataset, field verification, or an automatic retraining loop. False alerts do not turn whole images into verified negatives.
These workflows operate in both the browser edition and the local dashboard. PDF and review exports respect the selected window, review revision and export scope. Design comparison and implementation notes explain the externally reviewed ideas and their limits.
Website and on-device inference
The BluEcho website runs four selectable ONNX detectors inside your browser: pipelines, forward-looking debris, crab pots, and experimental wrecks/debris. An ocean-inspired homepage pairs an animated sonar illustration with the problem, solution, features and a single upload area. Motion can be paused and respects reduced-motion preferences. Sensor and model choices appear after upload; Reports has its own page; model scope remains beside upload configuration. Human review controls sit beside the sonar. Sonar images and review records stay in browser storage; no Python API or paid cloud inference server is required. First use downloads only the selected hash-verified model (approximately 11–38 MB) and the WebAssembly runtime. Switching models releases the previous inference session.
The web edition supports PNG, JPEG, BMP and PBM/portable images (32 MiB, up to 8 million pixels), tiled pipeline detection, image/map review, source-bound affine JSON metadata in EPSG:4326 or EPSG:3857, and PDF/JSON/CSV/GeoJSON/HTML/ZIP downloads. Keep the tab open during inference and export reports before clearing site data. Browser reports use the explicit bluecho-browser/1.0 schema; the Python API retains its existing schema.
The local application provides raw XTF, TIFF/GeoTIFF, additional model routes and broader metadata support. Browser execution is a separate runtime check, not a new accuracy benchmark. Specialists accept cropped frames with aspect ratios up to 4:1; the pipeline route retains its documented strip tiling. Classes and sensor routes remain separate. These integrations do not establish detection of every hazard or higher accuracy than another project.
Installation
The full application is tested on Linux x86-64 with Python 3.12. A GPU is not required for the CPU setup below. Other platforms are not verified for the complete workflow.
Create a virtual environment and install the CPU PyTorch build before the inference dependencies:
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install torch==2.4.1+cpu torchvision==0.19.1+cpu \
--index-url https://download.pytorch.org/whl/cpu
python -m pip install --upgrade 'bluecho-sonar[inspection,inference,onnx,api]'
bluecho --version
bluecho doctor
bluecho capabilities
The package name is bluecho-sonar; the Python import and command are both bluecho. The base package requires only NumPy and Pillow. Optional extras provide inspection, inference, ONNX, geospatial, API, and training dependencies. Add the geospatial extra when working with raster georeferencing.
Large detector weights and datasets are acquired separately. The distribution includes model metadata and small fitted verifier parameters. See the model setup guide for acquisition, verification, licensing, and offline installation.
Quick start
1. Prepare a model
For the new specialists, use bluecho models fetch --model ghost-pot --registry "$HOME/.cache/bluecho/models" (or fls11-debris / sonarvision-sss). Use the corresponding sensor route from the table below. Version 0.4 model evidence records source attribution, measured checks and limitations.
The experimental SSS route has a pinned ONNX download of approximately 43 MiB. Review its model/data terms using bluecho capabilities before use:
bluecho models fetch --model sss-wreck-experimental \
--registry "$HOME/.cache/bluecho/models"
bluecho models verify --model sss-wreck-experimental \
--registry "$HOME/.cache/bluecho/models"
This route produces experimental candidates; an independent wreck benchmark is unavailable.
2. Inspect a local image
Replace the example paths with your own input and a new output directory:
bluecho inspect '/absolute/path/sonar.jpg' \
--modality SSS \
--model sss-wreck-experimental \
--registry "$HOME/.cache/bluecho/models" \
--output '/absolute/path/new-inspection'
inspect runs on CPU and writes model results and a separate inspection record per window. Select the route that matches the source sensor; SSS and FLS inputs are not interchangeable.
3. Open the dashboard
bluecho serve \
--registry "$HOME/.cache/bluecho/models" \
--storage "$HOME/bluecho-inspections" \
--port 8010
Open http://127.0.0.1:8010 in your browser. The frontend is included in the package, so running it does not require Node.js. The local server provides interactive API documentation at /docs.
See the dashboard guide for the inspection workflow, review controls, exports, and troubleshooting.
Models and evidence
| Model | Sensor route | Intended labels | Current evidence and setup |
|---|---|---|---|
sss-pipeline-v3 |
SSS_LF |
Pipeline | Evaluated on correlated development observations from one survey. Requires verified local weights and their original manifest. |
ghost-pot |
SSS |
Crab-Pot | GhostVision YOLO26s, source-test sample check; new-survey accuracy unmeasured. Browser and local ONNX. |
fls11-debris |
FLS_ARIS |
11 source classes | Third-party YOLO11n: propeller, shampoo-bottle and can runtime checks; mine-labelled outputs remain unvalidated proposals. Browser and local ONNX. |
sonarvision-sss |
SSS |
unknown_debris, airplane, mine, wreck | Experimental SonarVision YOLOv8n; mine proposals unvalidated. Browser and local ONNX. |
sss-wreck-experimental |
SSS |
Experimental pipeline and wreck candidates | Pinned ONNX download. Independent wreck performance is unavailable; additional native labels remain unvalidated proposals. |
uatd-fls |
FLS_UATD |
Ten native classes, including cylinder | Selected compatibility sample; source overlap is unknown. Pinned acquisition with restricted conversion on Linux. |
fls-debris-development |
FLS_ARIS |
Ten debris classes | Trained development detector without an independent benchmark. Requires verified local import; inherited CC BY-NC-SA terms apply. |
The FLS debris labels are can, bottle, drink-carton, chain, propeller, tire, hook, valve, shampoo-bottle, and standing-bottle. A bottle label alone does not establish plastic composition. FLS cylinder support does not establish SSS cylinder detection. Verified real ghost-net detection is unavailable.
For the pipeline route, keep the original manifest.json beside your authorized native checkpoint, then import it:
bluecho models import --model sss-pipeline-v3 \
--registry "$HOME/.cache/bluecho/models" \
--local '/absolute/path/sss-v3/native.pt'
bluecho inspect '/absolute/path/pipeline.pbm' \
--modality SSS_LF \
--model sss-pipeline-v3 \
--registry "$HOME/.cache/bluecho/models" \
--output '/absolute/path/new-pipeline-inspection'
Interpreting results
Detection scores are uncalibrated model scores, not probabilities of correct identification. Repeated views within a survey are correlated, and development results do not establish performance at new sites or across the ocean. An empty result is not proof that an area is clear.
Geolocation depends on verified source metadata and sensor assumptions. BluEcho does not invent latitude, longitude, altitude, surveyed area, or physical object identity when those inputs are absent. Image-based acoustic verifiers remain exploratory and do not establish a physics-informed neural network or foundation model.
Human review records are retained separately from automatic predictions. Reviewing an image does not trigger training or silently change the detector.
Documentation
| Guide | Contents |
|---|---|
| Dashboard | Local setup, demonstration, review, exports, and troubleshooting |
| Models and licences | Model acquisition, hashes, offline use, and inherited terms |
| CLI and Python interfaces | Programmatic integration and command reference |
| Validation | Evaluation evidence and limitations |
| Review workflow | Persistent review records and controlled export |
| Geolocation | Source binding, coordinate enrichment, and missing metadata |
| Physics assumptions | Sonar geometry, altitude prerequisites, and uncertainty |
| SSS detection workflow | Boxes, crops, structured outputs, and local HTML reports |
| Experimental verifiers | Optional learned review scores and development comparisons |
Team · SIH 2026
BluEcho was made for the Smart India Hackathon 2026 by:
- Khushi Mhamane
- Sharon Melhi
- Kirti Rajput
- Peeyush Rampal
- Aditya Banerjee
Licence and acknowledgements
The BluEcho source code is licensed under AGPL-3.0-or-later. See LICENSE.
Third-party models, datasets, and examples retain their own licences and attribution requirements. The software licence does not replace those terms. BluEcho acknowledges the researchers and maintainers whose sonar datasets, model releases, and open-source tools support this work; consult the model documentation and packaged manifests for source-specific details.
For reproducible bug reports, include the package version, platform, selected model and modality, the command used, and a non-sensitive description of the input. Submit reports through GitHub Issues.
Demo data terms
The bundled real demo images have separate data terms: SubPipe CC BY 4.0, Marine Debris FLS CC BY-NC-SA 4.0 (noncommercial/share-alike), and NOAA H12907 CC0 1.0. The FLS samples are included for this noncommercial SIH research demonstration, not relicensed under the software license. Preserve source credits and applicable data terms when redistributing samples or derived annotated images. Full attribution and changes. No gated GhostVision imagery is included. Predictions are not verified hazard identities or independent accuracy measurements.
Metadata
Release files for bluecho-sonar 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bluecho_sonar-0.6.0.tar.gz | 4.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bluecho_sonar-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.0 MB
Release files / bluecho_sonar-0.6.0.tar.gz
| Download URL | bluecho_sonar-0.6.0.tar.gz |
|---|---|
| Size | 4.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3221d51b4e17d410cdcfafeda1f1cfbedb2d20cb9294a533de3451fb36dbb054
|
|
BLAKE2b-256 checksum How to use checksums |
815b697c05e848836da0a8ba0b80ffba5b358c50cf279c7c0d896e37932ed590
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / bluecho_sonar-0.6.0-py3-none-any.whl
| Download URL | bluecho_sonar-0.6.0-py3-none-any.whl |
|---|---|
| Size | 3.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bf9a459c17d5a5e812bcf5fb58b0d23abf61748c92c744cd932837a1db7823b0
|
|
BLAKE2b-256 checksum How to use checksums |
bd6c71beb9ef169d333e85a86ec9f3b5559245b89a4a1702c7e0823cb53e364a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|