You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Detectron2中统计语义分割各类别总像素数量

统计Detectron2语义分割通用类别总像素数的方法

Detectron2语义分割输出的sem_seg字段是形状为[C, H, W]的Tensor(C为类别数,H、W是图像高宽),每个通道对应对应类别的预测概率。要统计每个通用类别的总像素数,只需先确定每个像素的预测类别,再统计各类别像素数量,具体步骤如下:

实现代码

import torch

# 从语义分割输出中获取sem_seg张量
sem_seg = output['sem_seg']

# 对每个像素取概率最大的类别索引,得到[H, W]的类别预测图
pred_classes = torch.argmax(sem_seg, dim=0)

# 展平张量后统计每个类别的像素数量
flat_pred = pred_classes.flatten()
class_pixel_counts = torch.bincount(flat_pred)

代码说明

  • torch.argmax(sem_seg, dim=0):沿着通道维度(dim=0)取最大值的索引,每个像素位置会得到其所属的类别ID,最终生成和原图尺寸一致的类别预测矩阵。
  • torch.bincount(flat_pred):对展平后的类别ID数组进行计数,返回的class_pixel_counts是一维Tensor,其中class_pixel_counts[i]就代表类别ID为i的总像素数。

扩展说明

如果需要只统计特定类别(比如仅统计“人”“车辆”类),可以先筛选出目标类别对应的像素再计数:

# 假设目标类别ID是1(人)和2(车辆)
target_classes = [1, 2]
for cls_id in target_classes:
    pixel_count = torch.sum(pred_classes == cls_id).item()
    print(f"类别ID {cls_id} 的总像素数:{pixel_count}")

内容的提问来源于stack exchange,提问作者Sayem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 00:04:54