Как понять аннотации ограничивающего прямоугольника набора данных Open Images? - PullRequest
1 голос
/ 24 апреля 2019

Поэтому я загрузил набор данных Open Images через наборы данных TensorFlow (https://www.tensorflow.org/datasets).. Я могу нормально просматривать изображения и аннотации, но не могу понять, какой странный формат они используют для ограничивающих прямоугольники объектов.

Например: у меня есть изображение, показывающее слона шириной 682 и высотой 1024. Координаты ограничивающего прямоугольника слона: [0,03875, 0,188732, 0,954375, 0,979343]. Согласно документации 4 числа представляют xMin, xMax, yMin, yMax.

Как отобразить этот странно маленький прямоугольник, скажем, с помощью matplotlib?
Я уже пытался умножить координаты на ширину и высоту соответственно, но получающиеся прямоугольники не имеют никакого смысла. Я также переключил значения для x_1, x_2 и т. Д., Но это тоже не сработало.

Это мой код:

for e in train_data:

    np_img = e["image"]

    height = np.shape(np_img)[0]
    width = np.shape(np_img)[1]

    fig, ax = plt.subplots(1)

    ax.imshow(np_img)

    for bbox in e["bobjects"]["bbox"]:

        x_1 = bbox[0]
        x_2 = bbox[1]

        y_1 = bbox[2]
        y_2 = bbox[3]

        rect = patches.Rectangle((x_1 * width, y_2 * height), (x_2 * width - x_1 * width), (y_1 * height - y_2 * height), linewidth=1, edgecolor='r', facecolor='none')

        ax.add_patch(rect)

    plt.show()

    # Only one iteration for testing
    break

1 Ответ

1 голос
/ 25 апреля 2019

Я нашел решение сам: как выяснилось, при использовании открытых изображений из API наборов данных TensorFlow координаты ограничивающих прямоугольников находятся в другом порядке, чем те, которые описаны на веб-сайте набора данных.
Там ониописал порядок четырех значений для каждого блока следующим образом:
xMin, xMax, yMin, yMax .
Однако порядок для API наборов данных TF составляет yMin, xMin,yMax, xMax .Я выяснил это, сравнив идентификаторы изображений из одного изображения с файлом annotations.csv с веб-сайта.Единственный оставшийся шаг для получения абсолютного значения для блоков - это умножить значения x на ширину изображения и значения y на его высоту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...