211 lines
8.5 KiB
Python
211 lines
8.5 KiB
Python
![]() |
import numpy as np
|
||
|
from lib.test.evaluation.data import Sequence, BaseDataset, SequenceList
|
||
|
from lib.test.utils.load_text import load_text
|
||
|
|
||
|
|
||
|
class LaSOTExtensionSubsetDataset(BaseDataset):
|
||
|
"""
|
||
|
LaSOT test set consisting of 280 videos (see Protocol-II in the LaSOT paper)
|
||
|
Publication:
|
||
|
LaSOT: A High-quality Large-scale Single Object Tracking Benchmark
|
||
|
Heng Fan, Hexin Bai, Liting Lin, Fan Yang, Peng Chu, Ge Deng, Sijia Yu, Harshit, Mingzhen Huang, Juehuan Liu,
|
||
|
Yong Xu, Chunyuan Liao, Lin Yuan, Haibin Ling
|
||
|
IJCV, 2020
|
||
|
https://arxiv.org/pdf/2009.03465.pdf
|
||
|
Download the dataset from http://vision.cs.stonybrook.edu/~lasot/download.html
|
||
|
"""
|
||
|
def __init__(self):
|
||
|
super().__init__()
|
||
|
self.base_path = self.env_settings.lasot_extension_subset_path
|
||
|
self.sequence_list = self._get_sequence_list()
|
||
|
self.clean_list = self.clean_seq_list()
|
||
|
|
||
|
def clean_seq_list(self):
|
||
|
clean_lst = []
|
||
|
for i in range(len(self.sequence_list)):
|
||
|
cls, _ = self.sequence_list[i].split('-')
|
||
|
clean_lst.append(cls)
|
||
|
return clean_lst
|
||
|
|
||
|
def get_sequence_list(self):
|
||
|
return SequenceList([self._construct_sequence(s) for s in self.sequence_list])
|
||
|
|
||
|
def _construct_sequence(self, sequence_name):
|
||
|
class_name = sequence_name.split('-')[0]
|
||
|
anno_path = '{}/{}/{}/groundtruth.txt'.format(self.base_path, class_name, sequence_name)
|
||
|
|
||
|
ground_truth_rect = load_text(str(anno_path), delimiter=',', dtype=np.float64)
|
||
|
|
||
|
occlusion_label_path = '{}/{}/{}/full_occlusion.txt'.format(self.base_path, class_name, sequence_name)
|
||
|
|
||
|
# NOTE: pandas backed seems super super slow for loading occlusion/oov masks
|
||
|
full_occlusion = load_text(str(occlusion_label_path), delimiter=',', dtype=np.float64, backend='numpy')
|
||
|
|
||
|
out_of_view_label_path = '{}/{}/{}/out_of_view.txt'.format(self.base_path, class_name, sequence_name)
|
||
|
out_of_view = load_text(str(out_of_view_label_path), delimiter=',', dtype=np.float64, backend='numpy')
|
||
|
|
||
|
target_visible = np.logical_and(full_occlusion == 0, out_of_view == 0)
|
||
|
|
||
|
frames_path = '{}/{}/{}/img'.format(self.base_path, class_name, sequence_name)
|
||
|
|
||
|
frames_list = ['{}/{:08d}.jpg'.format(frames_path, frame_number) for frame_number in range(1, ground_truth_rect.shape[0] + 1)]
|
||
|
|
||
|
target_class = class_name
|
||
|
return Sequence(sequence_name, frames_list, 'lasot_extension_subset', ground_truth_rect.reshape(-1, 4),
|
||
|
object_class=target_class, target_visible=target_visible)
|
||
|
|
||
|
def __len__(self):
|
||
|
return len(self.sequence_list)
|
||
|
|
||
|
def _get_sequence_list(self):
|
||
|
sequence_list = ['atv-1',
|
||
|
'atv-2',
|
||
|
'atv-3',
|
||
|
'atv-4',
|
||
|
'atv-5',
|
||
|
'atv-6',
|
||
|
'atv-7',
|
||
|
'atv-8',
|
||
|
'atv-9',
|
||
|
'atv-10',
|
||
|
'badminton-1',
|
||
|
'badminton-2',
|
||
|
'badminton-3',
|
||
|
'badminton-4',
|
||
|
'badminton-5',
|
||
|
'badminton-6',
|
||
|
'badminton-7',
|
||
|
'badminton-8',
|
||
|
'badminton-9',
|
||
|
'badminton-10',
|
||
|
'cosplay-1',
|
||
|
'cosplay-10',
|
||
|
'cosplay-2',
|
||
|
'cosplay-3',
|
||
|
'cosplay-4',
|
||
|
'cosplay-5',
|
||
|
'cosplay-6',
|
||
|
'cosplay-7',
|
||
|
'cosplay-8',
|
||
|
'cosplay-9',
|
||
|
'dancingshoe-1',
|
||
|
'dancingshoe-2',
|
||
|
'dancingshoe-3',
|
||
|
'dancingshoe-4',
|
||
|
'dancingshoe-5',
|
||
|
'dancingshoe-6',
|
||
|
'dancingshoe-7',
|
||
|
'dancingshoe-8',
|
||
|
'dancingshoe-9',
|
||
|
'dancingshoe-10',
|
||
|
'footbag-1',
|
||
|
'footbag-2',
|
||
|
'footbag-3',
|
||
|
'footbag-4',
|
||
|
'footbag-5',
|
||
|
'footbag-6',
|
||
|
'footbag-7',
|
||
|
'footbag-8',
|
||
|
'footbag-9',
|
||
|
'footbag-10',
|
||
|
'frisbee-1',
|
||
|
'frisbee-2',
|
||
|
'frisbee-3',
|
||
|
'frisbee-4',
|
||
|
'frisbee-5',
|
||
|
'frisbee-6',
|
||
|
'frisbee-7',
|
||
|
'frisbee-8',
|
||
|
'frisbee-9',
|
||
|
'frisbee-10',
|
||
|
'jianzi-1',
|
||
|
'jianzi-2',
|
||
|
'jianzi-3',
|
||
|
'jianzi-4',
|
||
|
'jianzi-5',
|
||
|
'jianzi-6',
|
||
|
'jianzi-7',
|
||
|
'jianzi-8',
|
||
|
'jianzi-9',
|
||
|
'jianzi-10',
|
||
|
'lantern-1',
|
||
|
'lantern-2',
|
||
|
'lantern-3',
|
||
|
'lantern-4',
|
||
|
'lantern-5',
|
||
|
'lantern-6',
|
||
|
'lantern-7',
|
||
|
'lantern-8',
|
||
|
'lantern-9',
|
||
|
'lantern-10',
|
||
|
'misc-1',
|
||
|
'misc-2',
|
||
|
'misc-3',
|
||
|
'misc-4',
|
||
|
'misc-5',
|
||
|
'misc-6',
|
||
|
'misc-7',
|
||
|
'misc-8',
|
||
|
'misc-9',
|
||
|
'misc-10',
|
||
|
'opossum-1',
|
||
|
'opossum-2',
|
||
|
'opossum-3',
|
||
|
'opossum-4',
|
||
|
'opossum-5',
|
||
|
'opossum-6',
|
||
|
'opossum-7',
|
||
|
'opossum-8',
|
||
|
'opossum-9',
|
||
|
'opossum-10',
|
||
|
'paddle-1',
|
||
|
'paddle-2',
|
||
|
'paddle-3',
|
||
|
'paddle-4',
|
||
|
'paddle-5',
|
||
|
'paddle-6',
|
||
|
'paddle-7',
|
||
|
'paddle-8',
|
||
|
'paddle-9',
|
||
|
'paddle-10',
|
||
|
'raccoon-1',
|
||
|
'raccoon-2',
|
||
|
'raccoon-3',
|
||
|
'raccoon-4',
|
||
|
'raccoon-5',
|
||
|
'raccoon-6',
|
||
|
'raccoon-7',
|
||
|
'raccoon-8',
|
||
|
'raccoon-9',
|
||
|
'raccoon-10',
|
||
|
'rhino-1',
|
||
|
'rhino-2',
|
||
|
'rhino-3',
|
||
|
'rhino-4',
|
||
|
'rhino-5',
|
||
|
'rhino-6',
|
||
|
'rhino-7',
|
||
|
'rhino-8',
|
||
|
'rhino-9',
|
||
|
'rhino-10',
|
||
|
'skatingshoe-1',
|
||
|
'skatingshoe-2',
|
||
|
'skatingshoe-3',
|
||
|
'skatingshoe-4',
|
||
|
'skatingshoe-5',
|
||
|
'skatingshoe-6',
|
||
|
'skatingshoe-7',
|
||
|
'skatingshoe-8',
|
||
|
'skatingshoe-9',
|
||
|
'skatingshoe-10',
|
||
|
'wingsuit-1',
|
||
|
'wingsuit-2',
|
||
|
'wingsuit-3',
|
||
|
'wingsuit-4',
|
||
|
'wingsuit-5',
|
||
|
'wingsuit-6',
|
||
|
'wingsuit-7',
|
||
|
'wingsuit-8',
|
||
|
'wingsuit-9',
|
||
|
'wingsuit-10']
|
||
|
return sequence_list
|