Как рассчитать индивидуальную площадь маски объектов в маске Rcnn - PullRequest
0 голосов
/ 16 апреля 2020

Я создал свой собственный набор данных, который должен идентифицировать определенный тип урожая в поле. Маска RCNN создает маску многоугольника над этим объектом. На изображении около 17 различных объектов, поэтому MaskRCNN создает маску для 17 объектов. Но я не могу найти площадь каждой маски.

Я нашел способ, но не уверен, что он правильный. Я добавил этот код в inspect_balloon_model.ipynb:

r ['masks] .shape [-1] = 17

for i in range(r['masks'].shape[-1]):
    mask = r['masks'][:, :, i]
    image[mask] = 255
    image[~mask] = 0
    unique, counts = np.unique(image, return_counts=True)
    mask_area = counts[1] / (counts[0] + counts[1])
    print(counts[1])

Вот количество 1 это Площадь индивидуальной маски. Это правильно?

РЕДАКТИРОВАТЬ : r ['masks']. Shape ---> (8170, 6000, 17); Исходная форма изображения -> (8170, 6000, 3)

Образец изображения:

cropped sample image

1 Ответ

0 голосов
/ 16 апреля 2020

выглядит правильно, но это ИМО очень запутанный. Более простая версия будет:

positive_pixel_count = mask.sum() # assumes binary mask (True == 1)
h, w = mask.shape[1:3] # assumes NHWC data format, adapt as needed
area = positive_pixel_count / (w*h)
...