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.
Note that this class first computes IoUs for all individual classes, then returns the mean of these values.
metric_mean_iou(
...,
num_classes,
name = NULL,
dtype = NULL,
ignore_class = NULL,
sparse_y_true = TRUE,
sparse_y_pred = TRUE,
axis = -1L
)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.
For forward/backward compatability.
The possible number of labels the prediction task can have.
This value must be provided, since a confusion matrix of dimension =
[num_classes, num_classes] will be allocated.
(Optional) string name of the metric instance.
(Optional) data type of the metric result.
Optional integer. The ID of a class to be ignored during
metric computation. This is useful, for example, in segmentation
problems featuring a "void" class (commonly -1 or 255) in
segmentation maps. By default (ignore_class=NULL), all classes are
considered.
Whether labels are encoded using integers or
dense floating point vectors. If FALSE, the argmax function
is used to determine each sample's most likely associated label.
Whether predictions are encoded using integers or
dense floating point vectors. If FALSE, the argmax function
is used to determine each sample's most likely associated label.
(Optional) The dimension containing the logits. Defaults to -1.
Standalone usage:
# cm = [[1, 1],
# [1, 1]]
# sum_row = [2, 2], sum_col = [2, 2], true_positives = [1, 1]
# iou = true_positives / (sum_row + sum_col - true_positives))
# result = (1 / (2 + 2 - 1) + 1 / (2 + 2 - 1)) / 2 = 0.33
m <- metric_mean_iou(num_classes = 2)
m$update_state(c(0, 0, 1, 1), c(0, 1, 0, 1))
## tf.Tensor(
## [[1 1]
## [1 1]], shape=(2, 2), dtype=int64)
m$result()
## tf.Tensor(0.33333334, shape=(), dtype=float32)
m$reset_state()
m$update_state(c(0, 0, 1, 1), c(0, 1, 0, 1),
sample_weight= 10 * c(0.3, 0.3, 0.3, 0.1))
## tf.Tensor(
## [[3 3]
## [3 1]], shape=(2, 2), dtype=int64)
m$result()
## tf.Tensor(0.23809525, shape=(), dtype=float32)
Usage with compile() API:
model %>% compile(
optimizer = 'sgd',
loss = 'mse',
metrics = list(metric_mean_iou(num_classes=2)))
Other iou metrics:
metric_binary_iou()
metric_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_binary_iou()
metric_categorical_accuracy()
metric_categorical_crossentropy()
metric_categorical_focal_crossentropy()
metric_categorical_hinge()
metric_concordance_correlation()
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_squared_error()
metric_mean_squared_logarithmic_error()
metric_mean_wrapper()
metric_one_hot_iou()
metric_one_hot_mean_iou()
metric_pearson_correlation()
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()