示例#1
0
def read_dataset(dataset):
  '''data format:
    data = <
      dataset: 'otb'/'vot2013'/'vot2014'/'vot2015'
      data: {'seq': <gts: np.array, frames: [string]>}     
    >
  '''
  # create the container
  data = Data()
  data.dataset = dataset

  # find the current path
  cur_dir = os.path.dirname(os.path.realpath(__file__))
  
  if dataset[:3] == 'vot':
    # find sequences
    dir_path = os.path.join(cur_dir, 'data', 'vot', dataset)
    seqs = [path for path in os.listdir(dir_path) \
                      if os.path.isdir(os.path.join(dir_path,path))]
    
    # load sequences
    data.data = {}
    for seq in seqs:
      print('loading...',dataset,seq)
      gt_path = os.path.join(dir_path,seq,'groundtruth.txt')
      gt = pd.read_csv(gt_path, header=None).as_matrix()
      if gt.shape[1] >= 6:
        x = np.amin(gt[:, ::2], axis=1)
        y = np.amin(gt[:, 1::2], axis=1)
        width = np.amax(gt[:, ::2], axis=1) - x
        height = np.amax(gt[:, 1::2], axis=1) - y
        gt = np.c_[x, y, width, height]

      data.data[seq] = Data()
      data.data[seq].gts = gt
      data.data[seq].frames = [os.path.join(dir_path, seq, '%08d.jpg'%(i+1)) for i in range(gt.shape[0])]
  elif dataset[:3] == 'otb':
    # find sequences
    dir_path = os.path.join(cur_dir, 'data', 'otb')
    seqs = [path for path in os.listdir(dir_path) \
                      if os.path.isdir(os.path.join(dir_path,path)) \
                      and path != 'Jogging' and path != 'Skating2']
    seqs = seqs + ['Jogging-1', 'Jogging-2', 'Skating2-1', 'Skating2-2']

    # load sequences
    data.data = {}
    for seq in seqs:
      print('loading...',dataset,seq)
      if seq == 'Jogging-1' or seq == 'Jogging-2' or seq == 'Skating2-1' or seq == 'Skating2-2':
        gt_path = os.path.join(dir_path,seq[:-2],'groundtruth_rect.'+seq[-1]+'.txt')
        img_dir_path = os.path.join(dir_path,seq[:-2],'img')
      elif seq == 'Human4':
        gt_path = os.path.join(dir_path,seq,'groundtruth_rect.2.txt')
        img_dir_path = os.path.join(dir_path,seq,'img')
      else:
        gt_path = os.path.join(dir_path,seq,'groundtruth_rect.txt')
        img_dir_path = os.path.join(dir_path,seq,'img')
      gt = pd.read_csv(gt_path, header=None, sep='[\s*\,*]+').as_matrix()

      data.data[seq] = Data()
      data.data[seq].gts = gt
      if seq == 'Board':
        data.data[seq].frames = [os.path.join(img_dir_path, '%05d.jpg'%(i+1)) for i in range(gt.shape[0])]
      elif seq == 'BlurCar1':
        data.data[seq].frames = [os.path.join(img_dir_path, '%04d.jpg'%(i+247)) for i in range(gt.shape[0])]
      elif seq == 'BlurCar3':
        data.data[seq].frames = [os.path.join(img_dir_path, '%04d.jpg'%(i+3)) for i in range(gt.shape[0])]
      elif seq == 'BlurCar4':
        data.data[seq].frames = [os.path.join(img_dir_path, '%04d.jpg'%(i+18)) for i in range(gt.shape[0])]
      else:
        data.data[seq].frames = [os.path.join(img_dir_path, '%04d.jpg'%(i+1)) for i in range(gt.shape[0])]

      for i in range(len(data.data[seq].frames)):
        if gt[i][2] < 1 or gt[i][3] < 1:
          print(str(i))
          exit(0)

      # test for the existence of the first frame
      print('testing...',dataset,seq)
      io.imread(data.data[seq].frames[0])
  return data
示例#2
0
def read_seq(dataset, seq):
  
  # create the container
  data = Data()
  data.dataset = dataset

  # find the current path
  cur_dir = os.path.dirname(os.path.realpath(__file__))

  print('loading...',dataset,seq)
  if dataset[:3] == 'vot':
    dir_path = os.path.join(cur_dir, 'data', 'vot', dataset)

    data.data = {}
    gt_path = os.path.join(dir_path,seq,'groundtruth.txt')
    gt = pd.read_csv(gt_path, header=None).as_matrix()
    if gt.shape[1] >= 6:
      x = np.amin(gt[:, ::2], axis=1)
      y = np.amin(gt[:, 1::2], axis=1)
      width = np.amax(gt[:, ::2], axis=1) - x
      height = np.amax(gt[:, 1::2], axis=1) - y
      gt = np.c_[x, y, width, height]

    data.data[seq] = Data()
    data.data[seq].gts = gt
    data.data[seq].frames = [os.path.join(dir_path, seq, '%08d.jpg'%(i+1)) for i in range(gt.shape[0])]
  elif dataset[:3] == 'otb':
    dir_path = os.path.join(cur_dir, 'data', 'otb')

    data.data = {}
    if seq == 'Jogging-1' or seq == 'Jogging-2' or seq == 'Skating2-1' or seq == 'Skating2-2':
      gt_path = os.path.join(dir_path,seq[:-2],'groundtruth_rect.'+seq[-1]+'.txt')
      img_dir_path = os.path.join(dir_path,seq[:-2],'img')
    elif seq == 'Human4':
      gt_path = os.path.join(dir_path,seq,'groundtruth_rect.2.txt')
      img_dir_path = os.path.join(dir_path,seq,'img')
    else:
      gt_path = os.path.join(dir_path,seq,'groundtruth_rect.txt')
      img_dir_path = os.path.join(dir_path,seq,'img')
    gt = pd.read_csv(gt_path, header=None, sep='[\s*\,*]+').as_matrix()

    data.data[seq] = Data()
    data.data[seq].gts = gt
    if seq == 'Board':
      data.data[seq].frames = [os.path.join(img_dir_path, '%05d.jpg'%(i+1)) for i in range(gt.shape[0])]
    elif seq == 'BlurCar1':
      data.data[seq].frames = [os.path.join(img_dir_path, '%04d.jpg'%(i+247)) for i in range(gt.shape[0])]
    elif seq == 'BlurCar3':
      data.data[seq].frames = [os.path.join(img_dir_path, '%04d.jpg'%(i+3)) for i in range(gt.shape[0])]
    elif seq == 'BlurCar4':
      data.data[seq].frames = [os.path.join(img_dir_path, '%04d.jpg'%(i+18)) for i in range(gt.shape[0])]
    else:
      data.data[seq].frames = [os.path.join(img_dir_path, '%04d.jpg'%(i+1)) for i in range(gt.shape[0])]

    for i in range(len(data.data[seq].frames)):
      if gt[i][2] < 1 or gt[i][3] < 1:
        print(str(i))
        exit(0)

    # test for the existence of the first frame
    print('testing...',dataset,seq)
    io.imread(data.data[seq].frames[0])
  return data
示例#3
0
文件: reader.py 项目: yuhsh24/PyMDNet
def read_dataset(dataset):
    """
    data format:
      data = <
        dataset: 'otb'/'vot2013'/'vot2014'/'vot2015'
        data: {'seq': <gts: np.array, frames: [string]>}     
        >
    """
    # create the container
    data = Data()  # 空数据
    data.dataset = dataset  # data的dataset成员

    # find the current path
    cur_dir = os.path.dirname(os.path.realpath(__file__))  # 获取当前路径

    if dataset[:3] == 'vot':  # vot数据集的读入方式
        # find sequences
        dir_path = os.path.join(cur_dir, 'data', 'vot', dataset)  # 获取路径
        seqs = [
            path for path in os.listdir(dir_path)
            if os.path.isdir(os.path.join(dir_path, path))
        ]  # 获取目录下所有视频名字
        # load sequences
        data.data = {}
        for seq in seqs:
            print('loading...', dataset, seq)
            gt_path = os.path.join(dir_path, seq, 'groundtruth.txt')
            gt = pd.read_csv(gt_path,
                             header=None).as_matrix()  # 读入groud truth的文件数据
            if gt.shape[1] >= 6:
                x = np.amin(gt[:, ::2], axis=1)
                y = np.amin(gt[:, 1::2], axis=1)
                width = np.amax(gt[:, ::2], axis=1) - x
                height = np.amax(gt[:, 1::2], axis=1) - y
                gt = np.c_[x, y, width, height]  # 获取每帧的真值

            data.data[seq] = Data()
            data.data[seq].gts = gt  # 保存每帧的真值
            data.data[seq].frames = [
                os.path.join(dir_path, seq, '%08d.jpg' % (i + 1))
                for i in range(gt.shape[0])
            ]  # 保存每帧的路径

    elif dataset[:3] == 'otb':  # otb数据集的读入方式
        # find sequences
        dir_path = os.path.join(cur_dir, 'data', 'otb')  # 保存otb数据集的目录
        seqs = [
            path for path in os.listdir(dir_path)
            if os.path.isdir(os.path.join(dir_path, path))
            and path != 'Jogging' and path != 'Skating2'
        ]  # 获取目录下所有视频名字
        seqs = seqs + ['Jogging-1', 'Jogging-2', 'Skating2-1', 'Skating2-2'
                       ]  # 由于这些视频的真值保存具有特殊性,所以特殊处理
        # load sequences
        data.data = {}
        for seq in seqs:
            print('loading...', dataset, seq)  # 载入指定数据集的指定视频
            if seq == 'Jogging-1' or seq == 'Jogging-2' or seq == 'Skating2-1' or seq == 'Skating2-2':  # 特殊视频处理
                gt_path = os.path.join(dir_path, seq[:-2],
                                       'groundtruth_rect.' + seq[-1] +
                                       '.txt')  # groundtruth单独一份
                img_dir_path = os.path.join(dir_path, seq[:-2],
                                            'img')  # 图片共享一份
            elif seq == 'Human4':  # 特殊数据集
                gt_path = os.path.join(dir_path, seq, 'groundtruth_rect.2.txt')
                img_dir_path = os.path.join(dir_path, seq, 'img')
            else:
                gt_path = os.path.join(
                    dir_path, seq,
                    'groundtruth_rect.txt')  # 普遍视频的groundtruth文件格式
                img_dir_path = os.path.join(dir_path, seq, 'img')  # 普通视频的图片前缀
            gt = pd.read_csv(gt_path, header=None,
                             sep='[\s*\,*]+').as_matrix()  # 读入真值

            data.data[seq] = Data()
            data.data[seq].gts = gt  # 保存真值
            if seq == 'Board':
                data.data[seq].frames = [
                    os.path.join(img_dir_path, '%05d.jpg' % (i + 1))
                    for i in range(gt.shape[0])
                ]
            elif seq == 'BlurCar1':
                data.data[seq].frames = [
                    os.path.join(img_dir_path, '%04d.jpg' % (i + 247))
                    for i in range(gt.shape[0])
                ]
            elif seq == 'BlurCar3':
                data.data[seq].frames = [
                    os.path.join(img_dir_path, '%04d.jpg' % (i + 3))
                    for i in range(gt.shape[0])
                ]
            elif seq == 'BlurCar4':
                data.data[seq].frames = [
                    os.path.join(img_dir_path, '%04d.jpg' % (i + 18))
                    for i in range(gt.shape[0])
                ]
            else:
                data.data[seq].frames = [
                    os.path.join(img_dir_path, '%04d.jpg' % (i + 1))
                    for i in range(gt.shape[0])
                ]

            for i in range(len(data.data[seq].frames)):
                if gt[i][2] < 1 or gt[i][3] < 1:
                    print(str(i))
                    exit(0)

            # test for the existence of the first frame
            print('testing...', dataset, seq)
            io.imread(data.data[seq].frames[0])
    return data