John Huang← Back to experience

Case study

Secondsite

Automated pipeline turning crane-mounted camera footage into survey-aligned aerial maps, migrated from an 8 GB Jetson to AWS.

  • Python
  • OpenCV
  • SAM2
  • ArUco
  • Docker
  • AWS
  • OpenDroneMap
  • 75%lower cost per site map, $11.80 to $2.90
  • 1 cm / pxfirst survey-aligned map, 475 of 476 images placed
  • 42 → 210tests across a 16K-line codebase
  • 11coordinated Docker services

Overview

I deployed an automated site-mapping pipeline end to end at Secondsite. It turns live footage from crane-mounted cameras into georeferenced aerial maps, coordinated across 11 Docker services.

The pipeline first ran on an 8 GB NVIDIA Jetson on site. After diagnosing a memory ceiling that hardware could not clear, I migrated it to AWS on EC2 and EBS.

Turning camera imagery into a survey-aligned map takes more than reconstruction. Frames have to be chosen, the crane itself masked out, and the result tied to surveyed reference points before the output can be trusted.

My contribution

I drove the deployment and the migration to AWS, then benchmarked 6 server configurations against processing time and map quality to find the cheapest setup that still met accuracy targets.

I replaced the hand-tuned image masking with an AI segmentation model, SAM2, built the ArUco ground-control-point subsystem and GPS-driven frame selection, and delivered the project's first survey-aligned map.

I also consolidated duplicated computer-vision code into a shared library used by both the simulation harness and the production scheduler, growing the test suite from 42 to 210 tests across a 16K-line codebase.

Implementation

The benchmark cut the cost per site map from $11.80 to $2.90, 75% lower, in exchange for 40 minutes of additional runtime. I documented the cost-versus-speed curve so the trade-off can be decided again for each site.

For masking, I chose SAM2 by comparing the quality of the final maps each candidate produced rather than proxy scores.

The ground-control-point subsystem detects 9 surveyed ArUco markers and emits an OpenDroneMap ground-control-point file, which is what converts otherwise un-georeferenced reconstruction output into a survey-aligned map.

Frame selection works from 48,598 daily GPS position readings to recover the crane's rotation center. That produced the first survey-aligned map, at 1 cm per pixel with 475 of 476 images placed, and cut a 5.7-hour processing stage down to minutes.

Challenges

Repeated reconstruction failures traced back to masks that were unstable from frame to frame. A per-camera voting step fixed them.

Recovering the crane's rotation center was harder than it looked: the obvious approach was 9 m off.

A silent filename mismatch had been causing NodeODM to discard every ground control point without an error. I added regression coverage for it so it cannot come back unnoticed.

What I learned

This work showed how quickly desktop-scale computer-vision assumptions break on edge hardware, and that the honest measure of a component is the final map it produces, not a proxy score. Resource budgets, cost curves, and regression tests for silent failures all need to be designed into the pipeline.