Construction-site auto-tagging

Can a general-purpose AI model learn one company's own vocabulary? A master's thesis experiment, with the models running live.

The problem

A utility contractor photographs every job: trenches being dug, cables being spliced, cabinets being installed, the site put back together afterwards. Thousands of photographs pile up, and finding anything later means someone remembers roughly when it was taken.

Tagging them would fix that, but the company does not want generic tags like construction or outdoors. They have their own vocabulary: 29 precise terms they already use in their paperwork. The question this thesis asks is simple to state: can an AI model that knows nothing about this company learn to use their words correctly?

Their vocabulary

The 29 terms are not a flat list. They are organised into eight categories, and some categories are exclusive: a photograph shows one work phase, not three.

Objects & assets
Pipesmicroduct, electricity_duct, telecom_duct
Cablessplice, cable, sonde, cable_drum…
Structuresdistribution_cabinet, substation…
Safetywarning_tape, safety_barrier
Environment
Trench depthshallow / medium / deep (pick one)
Surfaceasphalt, snow_covered, vegetated_ground…
Phase & quality
Work phasebefore / during / after (pick one)
Image qualitypoor_quality, dim_dark

The taxonomy. Categories marked with a dot are mutually exclusive. Several terms are company-specific: a sonde is an orange ball or an orange-and-black cylinder, buried so the pipe can be found again from above ground. Not something a general model would guess from the word.

How the experiment works

We show the model the same photograph several times, giving it a little more help each time, and measure what each addition is worth. Because each step adds exactly one thing, a change in the score can be traced to that one thing.

  1. No help. “Describe this photograph with short tags.” The model invents its own words.
  2. The word list. We give it the 29 terms and say: use only these.
  3. The words explained. We add one sentence per term saying what the company means by it.
  4. Training. Instead of explaining, we show the model 1155 already-tagged photographs and let it learn from them.

What we found

Explaining the words is worth far more than merely listing them, but neither comes close to training the model on real examples.

No help The word list The words explained Trained on examples 0.493, guessing without looking at the photo 0.190 0.281 0.450 0.866 0 1.0

Accuracy (micro-F1) on 283 photographs the models never saw during training. Higher is better.

The uncomfortable line in that chart. A system that ignores the photograph entirely and always guesses the four most common tags scores 0.493. Only the trained model clearly beats it. Reporting that line is the difference between “our model reaches 0.45” sounding like a success and being read honestly.

It is not one lucky model

We repeated the experiment on four different models, from three different research groups and at three different sizes. Explaining the words helps every one of them. Simply listing the words does not.

0.50 0.33 0.15 No help Word list Explained Qwen 3B Qwen 7B InternVL 2B Phi-3.5 4B

Each line is one model. Every line rises at the last step. The middle step is flat or even slightly down for two of them. Giving a model a list of words it does not understand is not reliably useful.

What did not work, and why that matters

Three attempts to push the prompt further all made the results worse: adding guidance about how many tags to expect, adding physical descriptions of trench depths, and restructuring the answer so the company's categories became the shape of the output.

The last one is the most interesting. Forcing the model to fill in one slot per category made it answer every category, including ones that rarely apply: image quality is genuinely worth mentioning in about 3% of photographs, and the model mentioned it in 100% of them. When we scrambled the categories at random as a control, the damage vanished, so it was the company's own sensible grouping causing the problem, not the format. A tidy category reads to the model as a question that must have an answer.

These negative results are a real part of the contribution. They say something practical: you can tell a model what your words mean, but you cannot talk it into seeing a distinction it never learned. For that, it needs examples.

What you can try here

The Try the models tab runs the real thing on a photograph of your choosing. You can tick more than one model and run them together on the same picture, and the page outlines the tags only one of them produced. The most revealing pairing is a trained model against the untrained one: the untrained model tends to add plausible-sounding tags that are not there, sometimes including terms that never occur in this company's photographs at all.