Industries · 6 min read
Oil spill detection from a drone, mapped by thickness so the booms go to the right place
Sheen, rainbow and true colour as masks on the drone frames, in the appearance codes responders already use, so the map says where the booms go.
Summary
This post explains how a drone survey of a marine spill becomes a thickness map, with each slick masked and classed in the appearance codes responders already use. It concludes that glare and chop are the frames the model should doubt, and that the map is only useful once it sits in the world's coordinates. It is for spill response and pipeline integrity teams who fly drones over water.
Sheikh Srijon · GTM Lead · Sep 25, 2026

Drone pass along a desert pipeline, rust flagged and a cradle boxed, from a customer survey
The drone goes up at 6 am, an hour after the pressure drop on the crossing was confirmed, and the on-scene commander is standing on the jetty with a laminated chart. The chart is the oil appearance code: silver sheen at the thin end, rainbow bands in the middle, a metallic grey, and at the thick end the dark brown that responders call true colour because the oil finally looks like oil. The commander uses that chart to decide where the booms go and whether the dispersant aircraft is worth calling.
The drone footage has all of that on it. What it lacks is somebody with the time to trace every slick on every frame before the tide turns.
Thickness decides the tactic, so thickness is the label
Oil on water is a set of different problems that happen to share a boundary. A thin sheen spread over a wide area is a containment problem and a skimmer will pull almost nothing from it. A thick patch of true colour near the crossing is where the recovery vessel should be. Rainbow in between is the band where the dispersant decision is made, and it is the band that moves fastest with the wind: by 10 am it is rarely where the first flight found it.
A model that draws one outline around the whole spill has answered the question nobody on the jetty asked. The label that matters is the class of each region, because the class is the tactic, and the boundary between classes is where the equipment gets sent.
The responders' own appearance codes are the class list
The thin-film physics is well understood: at a few microns the reflections from the top and bottom of the film interfere and produce the rainbow, thicker films lose the interference and go metallic, and past that the oil shows its own colour. The Bonn Agreement code turns those bands into names, and those names are what the commander says on the radio.
The class list should be those names. On the oil and gas work behind our 12k+ precision image annotations delivered, the schema that survived contact with the field was the one the responders already spoke. The labeling guide for it fits on one page. It says which band a boundary pixel belongs to when the transition is gradual, what to do with emulsified oil that reads as neither, and how far into the glint a region may extend before it is called unlabelled rather than sheen.
My own view is that this matters more than any model choice. A class list a data scientist finds tidy and a responder has to translate is a class list that will be mistrusted on the day it is needed.
Masks measure area and boxes mostly measure water
A slick has no corners. A box around a rainbow band is mostly the sea on either side of it. The number the commander needs is the area of each class, since area is what tells the team whether the slick is growing and how many metres of boom the thick part needs. The pipeline leak use case makes the same argument for oil on soil: the mask is the measurement.
Instance masks rather than one class map per frame, because a single frame near the crossing routinely holds several separate slicks in different classes, and the response treats them separately. Lexi proposes the masks from the class names, and the person checking them in LexAnnotate spends most of the pass on the sheen boundary, where water and thin film shade into each other and the guide's rule has to be applied by eye.
Nobody needs a mask for the water.
Glare and chop are the frames the model should doubt
Sun glint is the false positive that never leaves. A patch of bright reflection on chop looks like silver sheen from directly above, and a model trained on overcast survey days will call it oil by 11 am on the first clear day. Emulsion is the miss on the other side: the brown mousse that oil becomes after a day of weathering matches none of the four classes unless the guide and the training frames include it.
Both belong in the review queue rather than on the map. The model returns the frames it doubts, a person classes them, and those corrections are what the next version trains on. The drift catalog has rain, fog and dust as the case where conditions the model rarely saw arrive for a week and detection falls away. A spill survey is the compressed version of that. The weather on the day is the only weather the model will ever see of this spill, and the bad-light frames from the first flight are the most valuable frames in the set.
The map has to be in the world's coordinates before anyone can use it
A mask in image coordinates says where oil is on a frame. The recovery vessel needs where oil is on the water. Each frame carries the drone's position and heading, the masks are projected onto the surface, overlapping frames are merged, and the output is one layer per class that the commander can put over the chart on the jetty. Without that step the model has produced pictures with outlines on them, which is roughly what the observer with the binoculars already had.
LexData takes the spill model through its whole life. You type what to look for in the responders' words, Lexi puts a mask on every frame, and a person checks each label before anything trains on it. The model then watches the survey footage as it lands, in the cloud or on a runner beside the recorder on the support vessel. Frames it is unsure of come back to a person, the corrections retrain it, and the new version replaces the old one with no downtime.
The same version has to check the water after the cleanup
The second survey, flown on day 3, is the one that decides whether the response worked, and it is compared against the first. If the model changed between the two flights, a shrinking rainbow band might be the cleanup working or might be a new version drawing the boundary differently. Versions keep what they were trained on, so the flight after the cleanup can be scored by the version that scored the flight before it, and the difference between the two maps is the sea and the skimmers rather than the model.
The wider oil and gas picture, from the right-of-way patrol to the pipe rack, is built on the same footage the operator already flies. The spill is the day that footage has to be right in an afternoon.
See it on your own footage.
Start with your footageMore in Industries

Industries · 7 min read
Counting the screws in a kit with object detection over the bench
A camera over the kitting bench counts every screw and bottle one box at a time. Exact for kits, a band for cases, and a half-hidden item is a written rule.
Rajiya Sultana · Sep 25, 2026

Industries · 7 min read
Automated water meter reading with a camera in the vault
Ten digit classes in a fixed row turn a truck roll into a frame. A rolling digit and condensation on the glass are the frames that come back to a person.
Stephen Biswas · Sep 25, 2026

Industries · 7 min read
Body-in-white inspection with a station camera on unpainted steel
Dents on a bare body shell hide in the reflections. Masks give the extent, a second pass decides reportable, and a tightened tolerance is a spec change.
Finn Ellingwood · Sep 25, 2026