Я хочу получить координаты нескольких ограничивающих прямоугольников и класс каждого ограничивающего прямоугольника и вернуть его в виде файла JSON.
когда я печатаю коробки [] из следующего кода, он имеет форму (1,300,4). В прямоугольниках [] находится 300 координат. Но на моем предсказанном изображении их всего 2. Мне нужны координаты ограничивающих рамок, которые предсказаны на моем изображении.
Кроме того, как мы узнаем, какая ограничивающая рамка сопоставлена с какой категорией / классом на изображении?
например, предположим, что у меня есть собака и человек на изображении, как мне узнать, какая ограничивающая рамка соответствует классу собаки, а какая - классу человека? Коробки [] дают нам массив формы (1,300,4) без какого-либо указания того, какой ограничивающий прямоугольник соответствует какому классу на изображении.
Я следил за этим ответом, чтобы получить координаты ограничивающей рамки из 300 координат в блоках [], используя пороговую оценку.
Я пробовал получить ограничивающую рамку с наивысшим баллом. Но он возвращает только одну ограничивающую рамку, даже если у прогнозируемого изображения есть несколько ограничивающих рамок.
Координаты ограничивающего прямоугольника с наивысшим баллом даже не совпадают с координатами ограничивающего прямоугольника на прогнозируемом изображении. Как мне получить координаты ограничивающего прямоугольника на моем прогнозируемом изображении?
vis_util.visualize_boxes_and_labels_on_image_array(
image_np,
np.squeeze(boxes),
np.squeeze(classes).astype(np.int32),
np.squeeze(scores),
category_index,
use_normalized_coordinates=True,
line_thickness=8)
im = Image.fromarray(image_np)
true_boxes = boxes[0][scores[0]==scores.max()] # Gives us the box with max score
for i in range(true_boxes.shape[0]): # rescaling the coordinates
ymin = true_boxes[i,0]*height
xmin = true_boxes[i,1]*width
ymax = true_boxes[i,2]*height
xmax = true_boxes[i,3]*width
Координаты, которые я получаю из приведенного выше кода xmin, ymin, xmax, ymax (который имеет максимальную оценку), не совсем соответствуют координатам ограничивающего прямоугольника на прогнозируемом изображении. Они погашены на несколько пикселей. Кроме того, я получаю только одну ограничивающую рамку, хотя у предсказанного изображения есть несколько ограничивающих рамок и несколько классов (например, собака и человек).
Я хотел бы вернуть файл JSON с image_name, bounding_boxes и классом, соответствующим каждому ограничивающему прямоугольнику.
Спасибо, я новичок в этом. Пожалуйста, спросите, если вы не поняли какую-либо часть вопроса.
height
иwidth
, пробовали ли вы переключить их и посмотреть, верны ли результаты? - person danyfang   schedule 24.05.2019