Keras 3 API 文件 / KerasCV / 損失函數 / IoU 損失函數

IoU 損失函數

[來源]

IoULoss 類別

keras_cv.losses.IoULoss(bounding_box_format, mode="log", axis=-1, **kwargs)

實作 IoU 損失函數

IoU 損失函數通常用於物件偵測。此損失函數旨在直接優化真實邊界框和預測邊界框之間的 IoU 分數。最後一個維度的長度應為 4,以表示邊界框。此損失函數根據邊界框對使用 IoU,因此,y_true 和 y_pred 中的邊界框數量應相等,即批次中第 i 個 y_true 邊界框將與第 i 個 y_pred 邊界框進行比較。

參數

  • bounding_box_format:不區分大小寫的字串(例如 "xyxy")。每個邊界框由這 4 個值定義。有關支援格式的詳細資訊,請參閱KerasCV 邊界框文件
  • mode:必須是以下其中之一
    • "linear"。損失函數將計算為 1 - iou
    • "quadratic"。損失函數將計算為 1 - iou2
    • "log"。損失函數將計算為 -ln(iou)。預設值為 "log"。
  • axis:計算 iou 平均值的軸,預設值為 -1。

參考

範例

y_true = np.random.uniform(size=(5, 10, 5), low=10, high=10)
y_pred = np.random.uniform(size=(5, 10, 5), low=10, high=10)
loss = IoULoss(bounding_box_format = "xyWH")
loss(y_true, y_pred)

搭配 compile() API 使用

model.compile(optimizer='adam', loss=keras_cv.losses.IoULoss())