PR2数据集和UM数据集的使用


发布于

|

分类

这两个数据集都是一个韩国团队搞出来的,用于跟踪的 RGB-D 数据集。数据集的主页在这里

这两个数据集很奇怪:没有任何说明文档,只带有一份mat例子。为了使用这个数据集,我们不得不自己写很多脚本。

我们的目标是,将这个数据集转换成VOC数据集的格式。

标签转换

这个数据集是做跟踪的用的,所以标签也是做跟踪的思路:每个人一个文件,只记录位置变化情况,即:时间、位置、时间、位置。然后我们可以通过插值,将这个人的移动轨迹标记出来。

我们拿到的文件,文件名都是绝对时间。我们拿到的标注,里面也都是绝对时间。那么,可以根据图片的时间,找到标注文件的对应的时间段,然后计算插值,将对应的框框标注出来。

由于VOC数据集使用xml格式的标注文件,我们还需要做一个数据转换。在这里,我直接写死了一些数据。

文件见这里

深度图的读取

作者提供的深度图也很奇怪:不是Kinect直接保存的oni文件,而是一个很奇怪的dat文件。

通过看matlab示例代码,发现它的格式其实很简单:几个标志位,几个大小说明,其他都是数据。

Python读的话,可以自定义数据结构dtype,然后使用nummpy来读取。读取之后,我们还需要做一些归一化操作,以及将一维图片转成三维等。

文件见这里

有一个思考: png图片可以保存4个通道:RGB+A,那么为什么不直接将D通道存储到A通道里呢?反正一般来说A通道是用不到的。

RGB文件和Depth文件

通过观察文件名,我知道了这个机器保存文件的原理:

  1. 保存RGB文件,文件名是当前绝对时间
  2. 保存Depth文件,文件名是当前绝对时间
  3. 循环

所以!看出来了么?它不是“同一时刻”保存的RGB和Depth。文件时间有一个小小的差值。

So,我们需要想办法消除这个差值,以便我们切换RGB图和Depth图而不用改动已有的标注。

我使用一个简单粗暴的办法:将RGB的时间作为参考,Depth的时间离谁近就取谁。

代码在这里

果不其然出现了预料到的问题:多个Depth文件映射到了同一个RGB文件上,出现频率在5%左右。只能说“还行吧”,需要手工处理的不是特别多。

所有代码

参考资料

A General Framework for Tracking Multiple People from a Moving Camera


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注