# Computes the Intersection-Over-Union metric for class 0 and/or 1.

Source:`R/metrics.R`

`metric_binary_iou.Rd`

Formula:

`iou <- true_positives / (true_positives + false_positives + false_negatives)`

Intersection-Over-Union is a common evaluation metric for semantic image segmentation.

To compute IoUs, the predictions are accumulated in a confusion matrix,
weighted by `sample_weight`

and the metric is then calculated from it.

If `sample_weight`

is `NULL`

, weights default to 1.
Use `sample_weight`

of 0 to mask values.

This class can be used to compute IoUs for a binary classification task
where the predictions are provided as logits. First a `threshold`

is applied
to the predicted values such that those that are below the `threshold`

are
converted to class 0 and those that are above the `threshold`

are converted
to class 1.

IoUs for classes 0 and 1 are then computed, the mean of IoUs for the classes
that are specified by `target_class_ids`

is returned.

## Usage

```
metric_binary_iou(
...,
target_class_ids = list(0L, 1L),
threshold = 0.5,
name = NULL,
dtype = NULL
)
```

## Arguments

- ...
For forward/backward compatability.

- target_class_ids
A list or list of target class ids for which the metric is returned. Options are

`0`

,`1`

, or`c(0, 1)`

. With`0`

(or`1`

), the IoU metric for class 0 (or class 1, respectively) is returned. With`c(0, 1)`

, the mean of IoUs for the two classes is returned.- threshold
A threshold that applies to the prediction logits to convert them to either predicted class 0 if the logit is below

`threshold`

or predicted class 1 if the logit is above`threshold`

.- name
(Optional) string name of the metric instance.

- dtype
(Optional) data type of the metric result.

## Value

a `Metric`

instance is returned. The `Metric`

instance can be passed
directly to `compile(metrics = )`

, or used as a standalone object. See
`?Metric`

for example usage.

## Examples

Standalone usage:

```
m <- metric_binary_iou(target_class_ids=c(0L, 1L), threshold = 0.3)
m$update_state(c(0, 1, 0, 1), c(0.1, 0.2, 0.4, 0.7))
m$result()
```

```
m$reset_state()
m$update_state(c(0, 1, 0, 1), c(0.1, 0.2, 0.4, 0.7),
sample_weight = c(0.2, 0.3, 0.4, 0.1))
m$result()
```

Usage with `compile()`

API:

```
model %>% compile(
optimizer = 'sgd',
loss = 'mse',
metrics = list(metric_binary_iou(
target_class_ids = 0L,
threshold = 0.5
))
)
```

## See also

Other iou metrics: `metric_iou()`

`metric_mean_iou()`

`metric_one_hot_iou()`

`metric_one_hot_mean_iou()`

Other metrics: `Metric()`

`custom_metric()`

`metric_auc()`

`metric_binary_accuracy()`

`metric_binary_crossentropy()`

`metric_binary_focal_crossentropy()`

`metric_categorical_accuracy()`

`metric_categorical_crossentropy()`

`metric_categorical_focal_crossentropy()`

`metric_categorical_hinge()`

`metric_cosine_similarity()`

`metric_f1_score()`

`metric_false_negatives()`

`metric_false_positives()`

`metric_fbeta_score()`

`metric_hinge()`

`metric_huber()`

`metric_iou()`

`metric_kl_divergence()`

`metric_log_cosh()`

`metric_log_cosh_error()`

`metric_mean()`

`metric_mean_absolute_error()`

`metric_mean_absolute_percentage_error()`

`metric_mean_iou()`

`metric_mean_squared_error()`

`metric_mean_squared_logarithmic_error()`

`metric_mean_wrapper()`

`metric_one_hot_iou()`

`metric_one_hot_mean_iou()`

`metric_poisson()`

`metric_precision()`

`metric_precision_at_recall()`

`metric_r2_score()`

`metric_recall()`

`metric_recall_at_precision()`

`metric_root_mean_squared_error()`

`metric_sensitivity_at_specificity()`

`metric_sparse_categorical_accuracy()`

`metric_sparse_categorical_crossentropy()`

`metric_sparse_top_k_categorical_accuracy()`

`metric_specificity_at_sensitivity()`

`metric_squared_hinge()`

`metric_sum()`

`metric_top_k_categorical_accuracy()`

`metric_true_negatives()`

`metric_true_positives()`