DetectionEngine.box_shapes

DetectionEngine.box_shapes(model_name=None, split='train')

The cloud of box shapes in a split, with the anchors in use beside it.

Everything a picture of the anchor fit needs, in one call and in one set of coordinates: both are fractions of the model’s input, computed by the same function that fitted the anchors. The alternative - widths and heights from one place and anchors from another - is how a plot comes to show boxes in different places from where the anchors were fitted, which looks like a bad fit and is a bug.

Worth drawing for a split the anchors were not fitted on, for the same reason as anchor_coverage: it is the only way to see a class the anchors have nothing near.

Parameters

Name Type Description Default
model_name str | None Which detector. Defaults to the first. None
split str Which split’s boxes to return. 'train'

Returns

Name Type Description
dict[str, Any] Every box’s width and height, normalised by the letterboxed input rather
dict[str, Any] than by the source image - which is the convention the anchors use, and getting
dict[str, Any] it wrong is how a coverage figure of 0.67 was quoted for two years against a
dict[str, Any] true 0.65.