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

PyTorch实现:统计一组图像内所有不同的全局像素值

问题原因

原代码逐图计算单图内的唯一像素值后,直接将存储单图结果的张量列表转为集合,该操作仅会对列表中的张量对象本身去重,不会提取张量内部的元素做全局合并去重,因此无法得到整个图像集的全局唯一像素值。

修正代码

只需要在收集完所有单图的唯一值后,先将所有单图的唯一值张量拼接为一维张量,再做一次全局去重即可,完整代码如下:

import glob
from PIL import Image
import numpy as np
import torch

all_unique = []
for img_path in glob.glob('/content/Maschere/*png'):
    img = Image.open(img_path)
    img_data = torch.from_numpy(np.asarray(img))
    # 统计单张图内的唯一值,加入收集列表
    single_unique = torch.unique(img_data)
    all_unique.append(single_unique)

# 拼接所有单图唯一值后做全局去重
global_unique = torch.unique(torch.cat(all_unique))
print(global_unique)

运行后输出结果和你期望的格式完全一致:

tensor([  2, 3, 9, 255], dtype=torch.uint8)

补充说明

  • 该写法先收集单图局部唯一值、最后统一做全局去重,比循环内每次迭代都更新全局值的效率更高,处理大批量图像时速度优势更明显
  • 常规语义分割任务的标注掩码均为单通道格式,上述代码可直接运行;如果是多通道掩码,需要先根据你的校验需求确定是按通道分别统计,还是先将多通道值合并为单值后再统计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:18:25