TL;DR: We use drones + computer vision + a lightweight LLM workflow to turn roof photos into clean, client-ready repair scopes. Faster site time, safer data capture, fewer callbacks.
Why bring tech to roofs?
Roofs fail at the details—flashing, fasteners, edges. Traditional inspections miss things when access is sketchy or time is tight. Drones + CV give us coverage and repeatability; an LLM turns raw notes into a report homeowners understand.
The stack (lightweight + field-tested)
• Capture: DJI drone (auto-grid + obliques), 20MP stills; optional FLIR for heat anomalies.
• Geo: Photogrammetry (OpenSfM/Metashape) to get an orthomosaic + mesh when needed.
• Vision:
o YOLOv8 for object/defect detection (vents, skylights, lifted tabs, exposed fasteners).
o Segment Anything/simple U-Net for roof-plane segmentation & valley/edge regions.
o Rule-based checks over masks (ridgeline straightness, valley debris detection).
• QA assistant: Small LLM prompt converts findings + photos to a scoped checklist (materials, flashing sequence, ventilation math, optional Title 24 cool-roof path).
• Ops: Gradio internal tool → pushes to Airtable/Notion for tracking.
What actually improved
• -30–45% field time on complex roofs (fewer ladder moves).
• +20–30% defect capture in “hard” zones (ridges/edges).
• Clearer reports: photos + callouts → fewer back-and-forth emails.
Tiny pipeline sketch
imgs = capture_folder("/drone_mission")
detections = yolo.predict(imgs)
masks = segmentor.segment_batch(imgs)
findings = []
for img, det, mask in zip(imgs, detections, masks):
issues = ruleset.evaluate(det, mask) # e.g., lifted ridge caps near edges
findings.append({"img": img, "issues": issues})
report = llm("Summarize defects, propose flashing/ventilation steps.", findings)
export_pdf(report, with_photos=True)
Data notes devs might care about
• Glare & salt-air patina: we augment with specular highlights + haze; CLAHE helps.
• Small objects: exposed nails are tiny—tilt obliques and fly closer; train with mixed scales.
• Thermal drift: schedule FLIR passes in tight windows; compare ΔT vs. control regions.
• Privacy: blur plates/faces in post; store only job-needed frames.
Case snap (South Bay)
Wind complaint, suspected ridge issues. Drone pass + model flagged a wavy ridgeline and sidewall flashing gaps. Crew rebuilt step + counter-flashing, corrected ridge nailing, cleaned valley debris, and documented everything. No callbacks after the next wind event.
Open problems we’re poking at
• Better valley segmentation in heavy shade.
• On-device iOS/Android inference for quick, offline triage.
• Robust “ponding ring” detection on low-slope membranes from DSM curvature
If you’re building tooling for field work, I’d love to swap notes on data labeling, augmentations, or compact models. And if you’re in SoCal and just need a straight answer on your roof, we’re a Torrance roofing contractor who loves turning photos into actionable scopes.
Top comments (0)