Engineering log

The model was fine

It was being shown a different picture than the one it learned from.

For three weeks my grow camera’s health check refused to read a healthy plant. “Couldn’t read it confidently,” hour after hour.

The plan was to retrain it on more views. The first explanation, twice, was that the camera had moved.

Neither was it.

I took the photos the hub had saved and scored them on my desk with the same model. 279 of 285: healthy.

The hub’s own scores, on those same photos, disagreed. Half the verdicts flipped.

The same photo of a cannabis canopy shown twice. Top, as the camera took it, with a health check of 0.068, healthy. Bottom, after the hub's color correction, paler and washed toward pink, with a health check of 0.228, refused; healthy is 0.15 or below.
The same frame: as the camera took it, and as the model was shown it.

The difference was one step. Before the model saw a frame, the hub color-corrected it. On a frame full of leaves, that cut the green by 11 to 16 percent. Healthy leaves came out pale, and pale reads sick.

The model was fine. It was being shown a different picture than the one it learned from.

IG-048Reproduce the device first
Before retraining anything. The numbers are the hub's health check, early October.
01 Score the saved photos yourself Same model, the photos as the hub stored them: 279 of 285 healthy.
02 Set them beside the hub's own scores Same photos, half the verdicts flipped. Until these match, nothing about the model is known yet.
03 Find the step in between The hub color-corrected every frame first. On a frame full of leaves, the green fell 11 to 16 percent.
04 Show the model the photo as taken Retraining on corrected frames did not fix it. Moving the correction did. The next two captures read healthy.
Reproduce the device’s own score first; until it matches, you are debugging the wrong thing.

Retraining on the corrected frames didn’t fix it either. Moving the correction so the model sees the photo as taken did. The next two captures read healthy.

The rule I kept: before you retrain anything, reproduce the score the device actually recorded. If you can’t, you’re debugging the wrong thing.

Where has a preprocessing step quietly changed what your model saw?

First published on LinkedIn, 20 October 2026: the post.

Also read: The best picture was already on the machine · The camera called it female, ten days late · The whole run, as the device recorded it