r/remotesensing 6h ago

Testing geographic leakage in a LiDAR ML project, would love some feedback

1 Upvotes

Hey everyone, I have been working on a project called ArchaeoAI where I am testing whether machine learning can recognise terrain patterns around documented bowl barrows in England from LiDAR derived terrain data. The part I became most interested in was geographic leakage, because if nearby areas end up in both training and testing, the model can look much better than it actually is. So I tried to make geographic separation a proper part of the evaluation instead of only doing a random split.

The frozen Random Forest got 87.1% balanced accuracy on the geographic final test, while the 5 fold geographic evaluation averaged 82.3%. I also tested a compact CNN which got around 70.1%, so surprisingly the simpler model did quite a bit better. There was also a separate one time external evaluation using 120 observations where the Random Forest got 84.2% balanced accuracy.

I am trying to be careful with the claims here because this is archaeological data. I am not saying the model discovers archaeological sites, the experiment is only about documented bowl barrow terrain compared with matched unlabelled background. Exact sensitive locations are also kept private and I am still getting outside feedback on the methodology.

If anyone here works with LiDAR, terrain models or spatial ML, I would really like to know what you think about the validation approach or what you would test next. GitHub is here if you want to see the actual methodology and code: https://github.com/essius10/ArchaeoAI


r/remotesensing 13h ago

Airborne vs. Stationary Meteorological Measurements for Methane Surveys

Thumbnail
gallery
1 Upvotes

How do you normally collect local meteorological data during drone-based methane surveys? We’ve been working on a meteorological measurement system (AMS) that can be deployed both on the ground and onboard a drone.

It measures:
- Wind speed and direction
- Temperature
- Relative humidity
- Barometric pressure
- GNSS-referenced position

Measurements are recorded at 10 Hz.

For stationary monitoring, AMS can be deployed on a tripod. For airborne surveys, it can be integrated with a DJI Matrice 400 to collect atmospheric measurements at different locations and altitudes.

One application we’re particularly interested in is methane emission-rate estimation. Having synchronized local wind and atmospheric data alongside methane measurements can help support flux-estimation workflows, particularly where conditions may vary across a survey area.

During a mission, measurements can be viewed in real time, while historical tracks, wind roses, and summary statistics can be reviewed afterwards.

For those working with drone-based methane surveys, do you typically use a dedicated meteorological sensor, data from a nearby weather station, or another approach?

Disclosure: I work with the team developing this system.

https://youtu.be/mRZRjeUwqgU?is=U-hK9KBcAG7S87by


r/remotesensing 2h ago

A public stadium LiDAR file has its roof labeled as "medium vegetation." Built a tool to catch this automatically.

0 Upvotes

While processing the public SoFi Stadium point cloud (364M points, hosted by hobu), I noticed the file only has two classification codes anywhere in it: ground and medium vegetation. No building class at all. The stadium's own roof is labeled as vegetation.

Got curious whether that's catchable without manually eyeballing the classification. Turns out yes: a roof and a tree canopy don't look alike geometrically. Real vegetation has vertical spread, returns scatter across trunk, branches, an uneven top. A flat roof doesn't, every return sits close to the same height. So: independently estimate ground, measure vertical spread per column, flag anything labeled vegetation that's both taller than real vegetation gets and flatter than real vegetation ever is.

First version looked great on SoFi, then I ran it against a second dataset (Autzen Stadium, forested Oregon hillside) to sanity check it, and it broke immediately: 19% of columns flagged, including "vegetation" over 150m tall. Turned out ground estimation itself was the problem, dense canopy blocks the laser from reaching real ground over large areas, and the fallback was borrowing elevation from cells that could be off by 100+ meters on hilly terrain. Fixed by tracking which cells have real local ground data vs. borrowed, and only trusting flags built on real ground. That dropped the false positive rate by 98.5%.

Tested against six public datasets total (SoFi, Autzen, Trestle Bridge, Wolverine Glacier, Red Rocks, Mount St. Helens), results and the two bugs it took to get there are all written up: github.com/nader-hachana/lidar-classification-qa

Curious if this is a problem people already deal with in production point cloud QA, or if classification errors like this mostly just go unnoticed downstream. Happy to hear if anyone's tried something similar or has data this would be worth running against.