TECH

Vision · 2025

Timber Detection

Python Object detection Dimensional measurement

Measuring a stack of logs is a job someone currently does with a tape measure, a clipboard and an argument at the end. Doing it from a photograph is a deceptively hard vision problem, because almost every assumption that makes benchmark object detection work is violated in a forest.

The problem

Timber is traded by volume. Volume is derived from the diameter and count of logs in a stack, and getting it wrong costs money on every single load — in both directions, which is why the measurement is usually contested.

The photograph you actually get is nothing like a benchmark dataset. Logs occlude each other because they are stacked. The cut faces are ellipses, not circles, because the camera is never square to the pile. There is no consistent scale reference unless the operator remembered to put one in frame. And the lighting is whatever the weather is doing.

The approach

Detection first, measurement second, and treat them as different problems with different failure modes. A detector that finds every log face but sizes them badly and a detector that sizes accurately but misses a third of the stack produce the same volume error for completely different reasons, and conflating them makes the system impossible to debug.

Measurement then depends entirely on establishing scale. Without a reference of known size in frame, pixel diameters are meaningless, so scale recovery is treated as an explicit stage that can fail loudly rather than as an assumption buried in a conversion constant.

Occlusion is handled as a first-class case rather than an edge case. In a real stack, partially hidden logs are the norm, not the exception, so the pipeline needs a defined behavior for a face it can only partly see — estimate it and flag the confidence, or exclude it and report the exclusion.

What was hard

Annotation is the real cost center in a project like this, and it is where most industrial vision work quietly dies. Labeling ellipses on overlapping cylinders is slow, boring and inconsistent between annotators — and inconsistent labels put a ceiling on model performance that no amount of architecture work will lift.

The second difficulty is that the customer does not want a bounding box. They want a number, in cubic meters, that they are willing to invoice against. The gap between "the model detects logs well" and "an operator will sign off on this figure" is mostly error reporting: knowing when the system should decline to answer is worth more than squeezing out another point of mean average precision.

The generalisable part

Detection-to-measurement is a repeatable shape, and it recurs across industries: counting stock on a shelf, measuring aggregate in a truck bed, sizing components on a pallet. The specifics of the object change; calibration, scale reference, occlusion policy and honest error reporting do not.

That pipeline is the shape of the Computer Vision System work: detection, measurement, calibration, error reporting and a handover that lets the client keep operating.

Related work

Audio

SpineSound

Companion software for three-class spine sound recognition. A small-data audio classification problem with calibrated confidence. Research use only — explicitly not a diagnostic device.

Tools

UX Psychology Skill

A packaged skill that brings cognitive psychology — perception, attention, memory, cognitive load — to bear on interface design and review. MIT licensed.

Similar problem?

Three sentences on what you are trying to do is enough for us to tell you whether this is the same shape of problem.