Значения массива, которые вы получаете, имеют множество нулей, за исключением случаев, когда существует маска, соответствующая тестируемому изображению, поэтому при печати output_dict ['detection_masks'] вы в основном видите 0 ценности. Пожалуйста, обратитесь к draw_mask_on_image_array function in visualization_utils.py , которая даст вам представление о том, как маска создается на изображении.
Ниже приведен фрагмент кода о том, как Вы можете визуализировать каждую маску:
box_to_instance_masks_map = {}
for j in range(max_boxes_to_draw):
if output_dict['detection_scores'][j] > min_score_thresh:
box = tuple(output_dict['detection_boxes'][j].tolist())
box_to_instance_masks_map[box] = output_dict.['detection_masks'][j]
mask = box_to_instance_masks_map[box]
rgb = ImageColor.getrgb('red')
pil_image = Image.fromarray(image_np)
solid_color = np.expand_dims(np.ones_like(mask), axis=2) * np.reshape(list(rgb), [1, 1, 3])
pil_solid_color = Image.fromarray(np.uint8(solid_color)).convert('RGBA')
pil_mask = Image.fromarray(np.uint8(255.0*1.0*mask)).convert('L')
pil_image = Image.composite(pil_solid_color, pil_image, pil_mask)
vis_util.save_image_array_as_png(pil_mask, 'your file path')
vis_util.save_image_array_as_png(pil_image, 'your file path')
Сохранение массива изображения в виде png, соответствующего pil_mask, даст вам изображение в оттенках серого с обнаруженной маской, а при сохранении массива изображения, соответствующего pil_image, вы получите составное цветное изображение с обнаруженной маской. .
Добавить, чтобы получить изображение со всеми масками:
np.copyto(image, np.array(pil_image.convert('RGB')))