# `TFLiteElixir.ImageClassification`
[🔗](https://github.com/cocoa-xu/tflite_elixir/blob/main/lib/tflite_elixir/high-level-api/classify_image.ex#L1)

Experimental image classification module.

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `predict`

```elixir
@spec predict(
  pid(),
  binary()
  | %StbImage{data: term(), shape: term(), type: term()}
  | %Nx.Tensor{
      data: term(),
      donatable?: term(),
      names: term(),
      shape: term(),
      type: term(),
      vectorized_axes: term()
    },
  Keyword.t()
) :: term()
```

Run the model against an image.

## Options

  * `:timeout` - how long to wait for the answer, in milliseconds, or
    `:infinity`. Defaults to `30000`. Raise it for a large model
    or a slow board; inference is local and bounded, so waiting is the right
    answer more often than giving up.

# `set_label`

```elixir
@spec set_label(pid(), String.t() | [String.t()]) :: :ok
```

Give the classifier its labels, either as a list or as the path to a file
holding one label per line.

Results carry an index until this is set; afterwards they carry the label.

# `set_label_from_associated_file`

```elixir
@spec set_label_from_associated_file(pid(), String.t()) :: :ok | {:error, String.t()}
```

Give the classifier its labels from a file the model itself carries.

`TFLiteElixir.FlatBufferModel.list_associated_files/1` says what a model has.

# `start`

```elixir
@spec start(any(), any()) :: :ignore | {:error, any()} | {:ok, pid()}
```

Start a classifier for `model`, a path to a `.tflite` file or its contents.

Options, all optional: `:top_k` (1) how many results `predict/3` returns,
`:threshold` (0.0) the score below which a result is dropped, `:mean` (128.0)
and `:std` (128.0) the input normalisation, `:jobs` (`System.schedulers_online/0`)
the interpreter's thread count, `:use_tpu` (false) and `:tpu` ("") to run on a
named Edge TPU.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
