是否可以用Detectron2获取检测到的物体的像素数?

Is it possible to get the number of pixels of the detected object with Detectron2?

我对深度学习完全陌生。我有一个检测位于屋顶的太阳能电池板的 Detectron2 模型。我想计算检测到的面板的表面,因此我需要获取检测到的对象的像素数。有什么办法吗?

如果您在图像 im 上使用 official framework 和检测分割(为了更精确的表面估计),例如:

outputs = predictor(im)

Dict outputs 有键 instances(你可以看到 source code) - 你可以只取掩码布尔张量并计算它的总和:

masks = outputs['instances'].pred_masks
masks.shape

# torch.Size([15, 480, 640])

所以我们这里有 15 个对象和输入图像的布尔掩码大小作为每个对象的掩码,现在我们计算每个检测到的对象的像素总数:

torch.sum(torch.flatten(masks, start_dim=1),dim=1)

# tensor([32251,  8786,  2513, 11821,  1395,  2129,   496,  2722,  1020,   571,
     1060,   806,  2006,   535,   297], device='cuda:0')