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.