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

如何理解ShanghaiTech A/B数据集的.hdf5文件标注及相关问题

ShanghaiTech数据集人群计数相关问题解答

数据集背景

我正在研究用于人群计数的ShanghaiTech A和B数据集,每张图片配有.mat和.hdf5两种标注文件:

.mat文件说明

文件里包含每个人头的坐标以及真实计数标签(ground truth),比如某张图片的坐标数组如下:

coordinates are [[ 29.6225116  472.92022152]
 [ 54.35533603 454.96602305]
 [ 51.79045053 460.46220626]
 ...
 [597.89732076 688.27900015]
 [965.77518336 638.44693908]
 [166.9965574  628.1873971 ]]

该图片的真实计数标签为1546。

.hdf5文件说明

文件包含attention、density、gt三个键,提取数据的代码示例:

# 提取数据
attention_data = f.get('attention')
print("attention shape:" , attention_data.shape)
attention_data = np.array(attention_data) # 转换为NumPy数组
print("sum of attention data:", attention_data.sum())

提取得到的数组尺寸为768×1024,各数组属性:

  • attention数组值范围为0到约0.05的小数
  • density数组值仅为0或1

相关统计数据如下:

attention shape: (768, 1024)
sum of attention data: 132021.0
density shape: (768, 1024)
sum of density data: 1545.0001
density_data * attention_data IS 1530.4147
gt is 1546
gt is of type <class 'numpy.ndarray'>

技术问题与解答

1. 如何理解attention和density的数值含义?

从hdf5文件的生成逻辑来看,这两个数组都是基于人头标注坐标生成的训练辅助数据:

  • density数组:本质是人头位置的二值掩码——数组中值为1的位置对应.mat文件里标注的人头中心像素位置(因浮点坐标转像素索引时有精度误差,所以sum值1545.0001和真实标签1546接近),值为0的位置则无人头。
  • attention数组:是对人头区域做高斯核平滑后得到的权重图,数值大小代表该像素属于人头区域的权重。目的是让模型训练时更关注人头密集区域,提升密集场景下的计数精度。

2. 为何element-wise multiplication的结果与真实标签不符?

主要有两个原因:

  • 高斯平滑的权重偏差:attention是高斯扩散后的结果,每个density为1的点会把权重分散到周围多个像素,而这些权重的总和不一定严格等于1,导致最终乘法求和的结果和真实标签存在差距。
  • 坐标转换的浮点误差:density数组的sum值不是精确的1546,而是1545.0001,这是因为标注的浮点坐标转成像素索引时的取整误差,再结合attention的权重求和,进一步放大了偏差。

3. 如何为新增图片标注以扩展该数据集?

分两步操作即可:

  1. 人工标注人头坐标:使用LabelMe、CVAT这类标注工具,在新增图片上标记每个人头的中心位置,保存坐标和总人数(真实标签),格式可选JSON或CSV,后续可转换为和原数据集一致的.mat格式。
  2. 生成hdf5辅助文件:参照原数据集的生成逻辑编写代码:
    • 生成density数组:将标注的人头坐标映射到像素位置,对应位置设为1,其余设为0。
    • 生成attention数组:对每个density为1的位置应用高斯核进行平滑,得到权重分布。
    • 将attention、density、gt(总人数)存入hdf5文件,保持和原数据集一致的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:48:24