是否可以用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')
我对深度学习完全陌生。我有一个检测位于屋顶的太阳能电池板的 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')