Skip to main content
DoneThat

AI Adoption GuideConstructionInspect

AI Defect Detection from Site Photos

Vision model classifies defects, including cracking, surface finish, and alignment, from inspection photos with location tagging. (e.g., Dronedeploy, Reconstruct)

Construction processBidAwardPlanMobilizeBuildInspectHandoverClose

By Don, DoneThat’s AI coach · updated

Candidate findings stay inspector-owned

A vision model on inspection photos may propose a quality finding. It does not own the finding.

The usable output is a candidate: a class such as cracking, surface finish, or alignment, plus a cite to the photo and a location tag. An inspector still confirms, rejects, or returns the photo as unreadable. Capture and inspection platforms (Dronedeploy, Reconstruct, Autodesk, Procore) are one class of system where this workflow can sit. None of them replaces the inspector's decision.

Treat the model as a first pass over a photo set you would have sampled anyway. It does not close an NCR. It does not invent a defect because the prompt asked for one. If the pixels cannot support a class, the record stays empty.

This method is for inspectors and quality leads who need a result they can defend on a walk-down.

Classify inspection photos without filling gaps

Run classification only on photos taken for inspection, with enough context that a person could make the same call from the same image.

Name the classes you will accept before you run the batch. Cracking, surface finish, and alignment cover most visual quality work on structure and envelope. Keep the list short. Extra subtypes still land in a queue someone has to clear.

For each photo, allow three outcomes: a class with a cite, more than one class if the frame shows distinct issues, or empty. Empty is a valid result. Motion blur, a glove in the foreground, night lighting, rain on the lens, or a shot of the wrong face of the element all stay empty. Do not backfill a class from the room name, the ITP hold point, or the last finding on that grid.

Progress photography is a different job. If the set was captured to show installed quantities rather than workmanship, send it to AI visual progress monitoring instead of forcing a defect class.

Work the batch in capture order or in inspection-package order. Do not skip photos the model left empty in order to "finish" the hold point. An empty class is not a pass. If the ITP still requires a visual check, the inspector still does that check, on site or on a readable photo.

Illustrative example: after a pour, an inspector loads a north-elevation photo tagged to grid D-8. The model proposes "cracking" along a dark line at the construction joint. On the walk-down the line is a soffit shadow, not a crack in the concrete. The inspector rejects the candidate, keeps the photo in the inspection set, and opens no NCR. The class was a proposal. The pixels did not support a finding.

Tag location so the cite can be walked

A candidate without a location the crew can find is not a quality record.

Tag at the grain you already use on the drawings: grid, level, room, elevation, or element ID. Pair that tag with the photo identifier so anyone can open the image and stand in the same place. If the capture platform already stamps GPS, level, or camera pose, treat that as a hint. Still write the site location in drawing language. A coordinate that does not match grid B-14 is not a cite an inspector can own.

Wrong-grid tagging is a failure mode that looks complete in software and fails on the deck. A finish issue on the east face of a core, tagged to the west face because the camera faced the wrong way, sends the wrong trade to the wrong wall. The model did not invent pixels. The location layer did.

Do not let the model invent a location from the prompt when the photo or capture set does not support it. A batch labeled "Level 3 bathrooms" is not evidence that every frame is a Level 3 bathroom. If location cannot be resolved, keep the candidate as photo-only and park it for the inspector. Do not guess a grid to make the row look finished.

When you confirm, freeze both the photo cite and the location tag together. Changing the grid later without changing the photo, or swapping the photo without changing the grid, breaks the finding. Re-tag only when the inspector has opened both and agrees they belong together.

Confirm or reject before the register moves

The inspector is the quality record. Confirmation or rejection is the step that turns a candidate into a finding, a discarded flag, or an empty row.

Work the queue in photo order or in walk-down order. Confidence scores, when a platform shows them, are a sort only. They are not a ranking of defect severity and they are not permission to skip review.

For each candidate, open the photo, read the class and location, and choose confirm, reject with a reason, or unreadable.

Confirm means you would write the same observation yourself. The finding then carries your name, the photo cite, and the location tag. From there you may open an NCR, raise an observation, or hold the item for the next inspection. The model does not choose which of those happens.

Reject means the class is wrong, the location is wrong, or both. Shadow called as crack, stain called as finish defect, and form-tie holes called as honeycombing all belong here. Record the reject reason in the same system so the next batch does not look like a backlog of live defects.

Do not write an NCR from an unreviewed flag. A register that auto-opens NCRs from model output will mix real workmanship issues with lighting artifacts and mis-tagged grids. Closing those NCRs later is not quality control. It is cleanup of a process that skipped the owner.

Once a finding is confirmed, root cause is a separate step. Use defect root cause classification for cause, not for whether the photo showed a defect. Aging of confirmed open items belongs in open defect aging monitor, not in the detection queue.

What the model must not close

The model must not close an NCR, mark a hold point complete, or declare an area ready for handover.

Closure needs a person who can stand at the location, see the work, and sign. A second photo that the model now classifies as empty is not closure. It is another candidate with an empty class. The inspector still decides whether the original finding is cleared.

Handover evidence is a package problem, not a detection problem. Completeness of photos, certificates, and punch status is covered in handover package completeness check. Do not treat a clean classification run as a complete package.

Keep a hard split in the system of record: model output is candidate, inspector action is finding, and NCR status is a quality decision. If those three share one status field, people will close tickets from a re-run of the same photos.

Unreadable stays empty on purpose. A black frame, a rain-smeared lens, or a shot from the hoist that cannot resolve the surface is not "no defect detected." It is no classification. Re-shoot or inspect in person. Do not let empty classification travel into the punch list as a pass.

Use a platform in this class (Dronedeploy, Reconstruct, Autodesk, Procore) if it is already where photos and inspections live. The requirement is the same: the inspector can confirm or reject without the model writing the NCR. The quality outcome is the same: a candidate finding with a cite to the photo and location, still owned by the inspector.

Is this worth automating for you?

Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.

DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.

Measure the baseline first