Как я могу получить координаты созданных ограничивающих рамок с помощью сценария вывода Google Object Detection API? Я знаю, что поле печати [0] [i] возвращает прогнозы i-го обнаружения в изображении, но что именно означают эти возвращенные числа? Есть ли способ получить xmin, ymin, xmax, ymax? Заранее спасибо.
Возврат координат для ограничивающих рамок API обнаружения объектов Google
comment
Если вас устраивает мой ответ, не стесняйтесь отмечать его как принятый.
- person Gal_M   schedule 20.11.2019
Ответы (2)
API обнаружения объектов Google возвращает ограничивающие прямоугольники в формате [ymin, xmin, ymax, xmax] и в нормализованной форме (полное объяснение здесь). Чтобы найти координаты пикселей (x, y), нам нужно умножить результаты на ширину и высоту изображения. Сначала получите ширину и высоту вашего изображения:
width, height = image.size
Затем извлеките ymin, xmin, ymax, xmax из объекта boxes
и умножьте, чтобы получить координаты (x, y):
ymin = boxes[0][i][0]*height
xmin = boxes[0][i][1]*width
ymax = boxes[0][i][2]*height
xmax = boxes[0][i][3]*width
Наконец, выведите координаты углов коробки:
print 'Top left'
print (xmin,ymin,)
print 'Bottom right'
print (xmax,ymax)
person
Gal_M
schedule
03.12.2017
Любое объяснение, почему это делается? Ваша ссылка мертва. Это потому, что входные изображения изменяются до стандартного размера? И что нормализованные координаты полезны для работы с вводом любого размера?
- person CMCDragonkai; 08.03.2018
image
массив numpy? Если это так, image.size
дает количество элементов в массиве, а image.shape
дает размеры изображения. Но я думал, что он дает количество строк, а затем количество столбцов для матрицы, то есть height, width = image.shape
.
- person KolaB; 08.03.2018
@CMCDragonkai, да, в этом есть смысл. Множество масштабирования и изменения размеров в нейронных сетях.
- person Gal_M; 11.03.2018
@KolaB Ожидайте, что документация продолжит работу в течение некоторого времени. tensorflow.org/api_guides/python/
- person Gal_M; 11.03.2018
@Gal_M Спасибо за обновленную ссылку. Мой комментарий касался строки в вашем ответе, в которой написано
width, height = image.size
. Я думаю, это должно быть height, width = image.shape[:2]
. Я до сих пор так считаю после прочтения обновленной ссылки. В самом первом разделе «Кодирование и декодирование» говорится, что закодированные изображения представлены тензорами скалярных строк, а декодированные изображения - трехмерными тензорами uint8 формы [height, width, channels]
. Было бы здорово, если бы вы могли прояснить, почему вы используете width, height = image.size
.
- person KolaB; 11.03.2018
Ссылка на документацию мертвая.
- person TSR; 28.05.2018
Объект
boxes
по-прежнему работает? Я не могу найти это.
- person Artur Müller Romanov; 06.09.2018
Упомянутый вами массив блоков содержит эту информацию, а формат представляет собой массив [N, 4], где каждая строка имеет формат: [ymin, xmin, ymax, xmax] в нормализованных координатах относительно размера входного изображения.
person
Jonathan Huang
schedule
05.11.2017