PYTHON · ML · FIAP
DriftWatchOcean Drones — Autonomous Marine Data Platform
My final-year project at FIAP: an end-to-end platform for autonomous marine monitoring. Operators plan a mission in the browser, the drone streams pH, temperature and high-resolution imagery back in real time, and machine-learning models turn that stream into an ecosystem-health readout rather than a pile of readings.
- ML predictive models & species image classification (Scikit-learn, TensorFlow)
- Real-time sensor pipeline (pH, temperature) + high-res imagery
- Full-stack web app to deploy drones & visualise ecosystem health
01 — Context
The problem.
Coastal ecosystem surveys are expensive, sporadic and manual. A crewed boat samples a handful of points, results come back from a lab weeks later, and by the time anyone reads them the water has changed. Continuous monitoring exists, but the telemetry it produces is unreadable without someone to interpret it.
We wanted to close both gaps at once: make the collection autonomous, and make the output legible to a marine biologist who has no interest in a raw sensor feed.
02 — Method
The approach.
The build, in the order it happened.
-
A real-time ingestion pipeline
Drone telemetry arrives as an irregular stream. It is normalised on arrival — units reconciled, timestamps made timezone-aware, out-of-range readings quarantined rather than silently averaged in — then written to PostgreSQL with the raw payload retained for replay.
-
Species classification on captured imagery
A convolutional model fine-tuned in TensorFlow tags each frame with candidate species and a confidence score. Anything below the confidence floor is routed to a human review queue instead of being asserted as fact.
-
Predictive models on the sensor series
Scikit-learn regressors project pH and temperature trajectories for a survey area and flag divergence from the seasonal baseline — the signal a biologist actually acts on.
-
A console built for the operator
Mission planning, live drone position, telemetry and the health readout in one web app. The interface leads with an ecosystem-health score and lets you drill down to the underlying readings only if you want to.
03 — Outcome
What changed.
- Species classification reached 91% top-1 accuracy on the held-out validation set, up from a 64% baseline on the initial untuned model.
- Survey turnaround fell from weeks of lab round-trips to a live readout available during the mission.
- Out-of-range sensor readings are quarantined rather than absorbed, so a failing probe no longer corrupts a whole survey.
- The project was selected for FIAP’s end-of-course showcase.
04 — The numbers
Species classification accuracy by training round.
Tracked as % top-1 accuracy, from Baseline through R8 — low 64, high 91.
05 — Screens
What it looks like in use.
Telemetry against the seasonal baseline — divergence is the thing worth looking at, so it is what the chart encodes.
The review queue. Low-confidence frames go to a human rather than being reported as identified.
06 — Stack & role
Built with.
- Python
- Scikit-learn
- TensorFlow
- FastAPI
- PostgreSQL
- JavaScript
- Role
- Team of four — I owned the data pipeline and the ML models
- Duration
- 2 semesters
- Client
- FIAP
- Period
- Final-year project · FIAP
07 — Questions
The questions I get asked about this one.
Because a confidently wrong species identification is worse than no identification. The confidence floor was set with the biology students on the team, and everything below it is reviewed.
Not the model — the data. Marine telemetry arrives late, out of order and occasionally from a probe that has drifted out of calibration. Most of the engineering went into making that survivable.