人群计数数据集UCF-QNRF,验证图片标注,发现部分有问题
比如0087这张图片,宽度是3648,但是标注文件中出现了大量的超过宽度的x坐标。
有一部分图片标准是这样的,其他的正常。
数据集是从官网下载的,4个多G。
请问,这个数据集就是这样的么?

人群计数数据集UCF-QNRF,验证图片标注,发现部分有问题
比如0087这张图片,宽度是3648,但是标注文件中出现了大量的超过宽度的x坐标。
有一部分图片标准是这样的,其他的正常。
数据集是从官网下载的,4个多G。
请问,这个数据集就是这样的么?

上午好☀️☀️☀️️
本答案参考通义千问
你提到的UCF-QNRF数据集是一个广泛用于人群计数任务的公开数据集,其中包含大量的高分辨率图像以及对应的点标注(即每个行人用一个点表示)。你提到的问题——某些图片的标注文件中出现超出图像宽度的x坐标——确实是一个常见但需要特别注意的问题。
.mat 格式的标注文件,记录了所有行人的位置(x,y)坐标。答案:不是。
虽然 UCF-QNRF 是一个高质量的数据集,但它并非完美无缺,尤其是在标注方面。根据一些研究者和用户的反馈:
因此,这种现象并不是数据集的设计初衷,而是数据预处理或标注过程中的错误。
如果你在使用该数据集进行训练或实验,建议对标注文件进行校验和清理。以下是具体解决方案:
你可以编写脚本,读取 .mat 文件,并检查每个点的坐标是否在图像范围内。
import scipy.io
import numpy as np
import os
def check_annotations(image_width, image_height, mat_file):
# 加载.mat文件
data = scipy.io.loadmat(mat_file)
points = data['anns'].astype(np.float32) # 假设points存储在'anns'字段中
valid_points = []
for point in points:
x, y = point[0], point[1]
if 0 <= x <= image_width and 0 <= y <= image_height:
valid_points.append([x, y])
return np.array(valid_points)
# 示例调用
image_width = 3648
image_height = 2432
mat_file_path = "path/to/your/annotation.mat"
valid_points = check_annotations(image_width, image_height, mat_file_path)
print(f"Valid points: {len(valid_points)}")
⚠️ 注意:
data['anns']可能因不同的.mat文件结构而略有不同,需根据实际数据结构调整字段名。
| 问题 | 是否属于数据集本身? | 解决方案 | |------|---------------------|----------| | 标注点超出图像范围 | ❌ 不是 | 通过脚本检查并过滤越界点 | | 数据集版本过旧 | ❌ 可能 | 重新下载最新版本 | | 标注错误 | ❌ 存在 | 需要手动或自动清洗数据 |
如果你需要我帮你写一个完整的数据清洗脚本,或者提供某个特定图片的标注验证方法,请告诉我具体的图片名称或路径,我可以进一步协助!