SVHN数据问题

问题描述 投票:0回答:1

我一直在阅读和处理与街景房号(SVHN)数据集相关的SO问题。这些文件位于两个不同的位置:

斯坦福: The Street View House Numbers (SVHN) Dataset

kaggle: Street View House Numbers (SVHN) | Kaggle

我的问题与每个图像集(火车,测试和演员)的digitStruct.mat文件的格式有关。它们定义每个图像的名称,标签和边界框尺寸。据我所知,mat文件是以HDF5格式编写的Matlab结构(可以用h5py读取)。

我已经能够使用digitStruct.mat从kaggle访问和阅读h5py文件。我无法使用h5py(或使用HDFView)从斯坦福网站打开相同的文件。我读过的一些SO帖子表明斯坦福文件是一种较旧的Matlab格式,应该用scipy.io.loadmat阅读。

  • 斯坦福大学的文件和讨价还价是一样的吗?
  • 如果没有,有什么区别?
  • 我应该能用digitStruct.mat打开斯坦福h5py文件吗?
  • 如果是这样,我应该使用什么方法下载和提取Stanford tar.gz文件? (仅供参考,我使用的是Win-7,并且一直在使用HTTP下载和WinZip来提取。)

我正在添加其他信息来记录使用不同.mat文件观察到的不同行为。它可能有助于诊断。

我可以通过以下调用打开并操作来自kaggle的.mat文件:

h5f = h5py.File('digitStruct.mat','r')

对于来自斯坦福的文件,我会根据用于打开的文件和函数获得不同的错误。

下面的命令执行时没有错误消息。这让我相信它不是一个可以用h5py打开的Matlab v7.3文件。

mat = scipy.io.loadmat('./Stanford/test_32x32.mat')

这两个调用都不起作用(提供简短的错误消息):

mat = scipy.io.loadmat('./test/digitStruct.mat')
Traceback...
NotImplementedError: Please use HDF reader for matlab v7.3 files

h5f = h5py.File('./test/digitStruct.mat','r')
Traceback...
OSError: Unable to open file (file signature not found)

另外,我无法用HDFView打开test/digitStruct.mat。我对Stanford digitStruct.mat文件的结论:它们可能是Matlab v7.3文件,但在我下载时已损坏。但是,我不确定我做错了什么(因为我可以毫无问题地下载和阅读kaggle文件)。

tensorflow scipy hdf5 h5py
1个回答
1
投票

通过一些Linux侦探工作,我找出了问题所在。我怀疑,从斯坦福网站上的digitStruct.mat文件中提取的*.tar.gz文件是HDF5(Matlab v7.3)文件,并且在我下载时被破坏了。

为了确认,我在Linux系统上使用浏览器下载了3个tar.gz文件,然后使用tar命令解压缩它们,并在Linux上使用h5py成功打开。然后我将它们转移到我的Windows系统,每个都按照预期与h5py一起工作。

这有点令人惊讶,因为我过去曾使用WinZip来提取tarball文件。显然,这些因素导致了腐败。 希望这能为将来的人们带来同样的麻烦。

注意:3个xxxx_32x32.mat文件是较旧的Matlab格式,必须使用scipy.io.loadmat()访问

© www.soinside.com 2019 - 2024. All rights reserved.