# Inference results

*Estimated read time: 1 minute*

Every call to `model(...)` returns an `InferenceResults` object. The same object appears when you iterate over `predict_batch`, `predict_dir`, or `predict_stream`. Understanding its fields helps you decide the right next step—whether that's inspecting detections, visualizing them, exporting structured data, or streaming results elsewhere.

Here's what you typically get when you run `dir(result)`:

{% code overflow="wrap" %}

```
['image', 'image_model', 'image_overlay', 'info', 'results', 'timing']
```

{% endcode %}

## Field-by-field guide

* `results`: structured predictions (labels, scores, boxes, etc.) → [Inspecting results](https://docs.degirum.com/axelera/basics/inference-results/inspecting-results)
* `image`, `image_model`, `image_overlay`: input frame, model-ready tensor (when exposed), and annotated overlay → [Visualizing results](https://docs.degirum.com/axelera/basics/inference-results/visualizing-results)
* `info`: optional metadata you attach to frames; `timing`: per-stage latency metrics → [Inspecting results](https://docs.degirum.com/axelera/basics/inference-results/inspecting-results) covers both
* **Save to disk**: structured exports and overlays → [Saving results](https://docs.degirum.com/axelera/basics/inference-results/saving-results)
* **Stream in real time**: iterate and publish continuously → [Streaming results](https://docs.degirum.com/axelera/basics/inference-results/streaming-results)

Pick the path that fits your workflow—or follow each guide to get the full picture of what `InferenceResults` can do.
