Implements the GIoU loss function.
mode: str = 'giou',
reduction: str = tf.keras.losses.Reduction.AUTO,
name: Optional[str] = 'giou_loss'
GIoU loss was first introduced in the
Generalized Intersection over Union:
A Metric and A Loss for Bounding Box Regression.
GIoU is an enhancement for models which use IoU in object detection.
gl = tfa.losses.GIoULoss()
boxes1 = tf.constant([[4.0, 3.0, 7.0, 5.0], [5.0, 6.0, 10.0, 7.0]])
boxes2 = tf.constant([[3.0, 4.0, 6.0, 8.0], [14.0, 14.0, 15.0, 15.0]])
loss = gl(boxes1, boxes2)
<tf.Tensor: shape=(), dtype=float32, numpy=1.5041667>
model = tf.keras.Model()
one of ['giou', 'iou'], decided to calculate GIoU or IoU loss.
Loss from its config (output of
Returns the config dictionary for a
y_true, y_pred, sample_weight=None
Ground truth values. shape =
[batch_size, d0, .. dN], except
sparse loss functions such as sparse categorical crossentropy where
[batch_size, d0, .. dN-1]
The predicted values. shape =
[batch_size, d0, .. dN]
sample_weight acts as a coefficient for the
loss. If a scalar is provided, then the loss is simply scaled by the
given value. If
sample_weight is a tensor of size
the total loss for each sample of the batch is rescaled by the
corresponding element in the
sample_weight vector. If the shape of
[batch_size, d0, .. dN-1] (or can be broadcasted to
this shape), then each loss element of
y_pred is scaled
by the corresponding value of
sample_weight. (Note on
dN-1: all loss
functions reduce by 1 dimension, usually axis=-1.)
Weighted loss float
NONE, this has
[batch_size, d0, .. dN-1]; otherwise, it is scalar. (Note
because all loss functions reduce by 1 dimension, usually axis=-1.)
If the shape of
sample_weight is invalid.