如何在 fast-rcnn 中调整 ground truth boxes 的大小

how to resize ground truth boxes in fast-rcnn

fast rcnn 是一种用于图像中对象检测的算法,我们将图像输入神经网络,它根据称为“ground truth”的边界框列表为我们输出图像中的对象及其类别列表箱”。 该算法将 ground truth 框与 fast-rcnn 算法生成的框进行比较,只保留那些与 gt 框充分重叠的框。 这里的问题是我们必须调整要输入 CNN 的图像的大小, 我的问题是,我们是否应该在比较步骤之前也调整地面实况框的大小,以及如何做到这一点? 坦克回复。

如果边界框是相对的,则不需要更改它们,因为旧高度的 0.2 与新高度的 0.2 相同,依此类推。

import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_sample_image

china = load_sample_image('china.jpg')

relative_boxes = [0.2, 0.2, 0.8, .8]

original = tf.image.draw_bounding_boxes(
    tf.image.convert_image_dtype(tf.expand_dims(china, axis=0), tf.float32),
    np.array(relative_boxes).reshape([1, 1, 4]),
    [[1., 0., 1.], [1., 1., 1.]]
)

plt.imshow(tf.squeeze(original))
plt.show()


resized = tf.image.draw_bounding_boxes(
    tf.divide(
        tf.expand_dims(
            tf.image.resize(china, (200, 200)), axis=0),
        255),
    np.array(relative_boxes).reshape([1, 1, 4]),
    [[1., 0., 1.], [1., 1., 1.]]
)

plt.imshow(tf.squeeze(resized))
plt.show()