Copy disabled (too large)
Download .txt
Showing preview only (25,034K chars total). Download the full file to get everything.
Repository: EGO4D/episodic-memory
Branch: main
Commit: 5275b9570a3d
Files: 305
Total size: 115.8 MB
Directory structure:
gitextract_f8211mg8/
├── .gitignore
├── .gitmodules
├── .pre-commit-config.yaml
├── EgoTracks/
│ ├── README.md
│ ├── configs/
│ │ └── STARK/
│ │ ├── stark_st_R101.yaml
│ │ └── stark_st_base.yaml
│ ├── setup.py
│ ├── test.sh
│ ├── tools/
│ │ ├── __init__.py
│ │ ├── eval_datasets/
│ │ │ ├── __init__.py
│ │ │ ├── build.py
│ │ │ └── eval_ego4d_lt_tracking.py
│ │ ├── eval_net.py
│ │ ├── preprocess/
│ │ │ ├── __init__.py
│ │ │ └── extract_ego4d_clip_frames.py
│ │ ├── train_net.py
│ │ └── trainers/
│ │ ├── __init__.py
│ │ ├── base_trainer.py
│ │ └── starkst_trainer.py
│ ├── tracking/
│ │ ├── __init__.py
│ │ ├── config/
│ │ │ ├── __init__.py
│ │ │ ├── config.py
│ │ │ └── stark_defaults.py
│ │ ├── dataset/
│ │ │ ├── __init__.py
│ │ │ ├── base_image_dataset.py
│ │ │ ├── base_video_dataset.py
│ │ │ ├── build.py
│ │ │ ├── data_specs/
│ │ │ │ ├── README.md
│ │ │ │ ├── got10k_train_full_split.txt
│ │ │ │ ├── got10k_train_split.txt
│ │ │ │ ├── got10k_val_split.txt
│ │ │ │ ├── got10k_vot_exclude.txt
│ │ │ │ ├── got10k_vot_train_split.txt
│ │ │ │ ├── got10k_vot_val_split.txt
│ │ │ │ ├── lasot_train_split.txt
│ │ │ │ └── trackingnet_classmap.txt
│ │ │ ├── dataloader.py
│ │ │ ├── eval_datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_dataset.py
│ │ │ │ └── ego4d_lt_tracking_dataset.py
│ │ │ ├── processing/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_processing.py
│ │ │ │ ├── processing_utils.py
│ │ │ │ └── stark_processing.py
│ │ │ ├── trackingdataset.py
│ │ │ ├── train_datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── coco_seq.py
│ │ │ │ ├── ego4d_lt_tracking.py
│ │ │ │ ├── ego4d_vq.py
│ │ │ │ ├── got10k.py
│ │ │ │ ├── lasot.py
│ │ │ │ └── tracking_net.py
│ │ │ └── transforms.py
│ │ ├── metrics/
│ │ │ ├── __init__.py
│ │ │ └── miou.py
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── multiple_object_tracker.py
│ │ │ ├── single_object_tracker.py
│ │ │ ├── stark_tracker/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── backbone.py
│ │ │ │ ├── config/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── stark_st2/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── config.py
│ │ │ │ ├── head.py
│ │ │ │ ├── params.py
│ │ │ │ ├── position_encoding.py
│ │ │ │ ├── resnet.py
│ │ │ │ ├── stark_s.py
│ │ │ │ ├── stark_st.py
│ │ │ │ ├── stark_tracker.py
│ │ │ │ ├── transformer.py
│ │ │ │ └── utils/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── box_ops.py
│ │ │ │ ├── merge.py
│ │ │ │ ├── misc.py
│ │ │ │ └── preprocessing_utils.py
│ │ │ ├── template.py
│ │ │ └── tracker.py
│ │ ├── solver/
│ │ │ ├── __init__.py
│ │ │ └── build.py
│ │ └── utils/
│ │ ├── __init__.py
│ │ ├── bbox_helper.py
│ │ ├── defaults.py
│ │ ├── env.py
│ │ ├── load_helper.py
│ │ ├── load_text.py
│ │ ├── meters.py
│ │ ├── multiprocessing.py
│ │ ├── tensor.py
│ │ ├── types.py
│ │ └── utils.py
│ └── train.sh
├── LICENSE
├── MQ/
│ ├── Convert_annotation.py
│ ├── Eval.py
│ ├── Evaluation/
│ │ ├── ego4d/
│ │ │ ├── eval_action_detection.py
│ │ │ ├── eval_detection.py
│ │ │ ├── generate_detection.py
│ │ │ ├── generate_retrieval.py
│ │ │ ├── get_detect_performance.py
│ │ │ └── get_retrieval_performance.py
│ │ └── utils.py
│ ├── Infer.py
│ ├── Merge_detection_retrieval.py
│ ├── Models/
│ │ ├── ActionGenerator.py
│ │ ├── AnchorGenerator.py
│ │ ├── BoundaryAdjust.py
│ │ ├── BoxCoder.py
│ │ ├── GCNs.py
│ │ ├── Head.py
│ │ ├── Loss.py
│ │ ├── VSGN.py
│ │ ├── XGPN.py
│ │ └── matcher.py
│ ├── README.md
│ ├── Train.py
│ └── Utils/
│ ├── __init__.py
│ ├── dataset.py
│ └── opts.py
├── NLQ/
│ ├── 2D-TAN/
│ │ ├── CODE_OF_CONDUCT.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── README_2D-TAN.md
│ │ ├── SECURITY.md
│ │ ├── data/
│ │ │ ├── ActivityNet/
│ │ │ │ ├── download.sh
│ │ │ │ ├── test.json
│ │ │ │ ├── train.json
│ │ │ │ └── val.json
│ │ │ ├── Charades-STA/
│ │ │ │ ├── Charades_v1_test.csv
│ │ │ │ ├── Charades_v1_train.csv
│ │ │ │ ├── charades_sta_test.txt
│ │ │ │ ├── charades_sta_train.txt
│ │ │ │ ├── convert_vgg_features_to_hdf5.py
│ │ │ │ ├── download.sh
│ │ │ │ └── valid_videos.txt
│ │ │ ├── Ego4D_clip/
│ │ │ │ └── .gitkeep
│ │ │ └── TACoS/
│ │ │ ├── merge_npys_to_hdf5.py
│ │ │ ├── test.json
│ │ │ ├── train.json
│ │ │ └── val.json
│ │ ├── experiments/
│ │ │ ├── activitynet/
│ │ │ │ ├── 2D-TAN-64x64-K9L4-conv.yaml
│ │ │ │ └── 2D-TAN-64x64-K9L4-pool.yaml
│ │ │ ├── charades/
│ │ │ │ ├── 2D-TAN-16x16-K5L8-conv.yaml
│ │ │ │ └── 2D-TAN-16x16-K5L8-pool.yaml
│ │ │ ├── ego4d/
│ │ │ │ └── 2D-TAN-40x40-K9L4-pool-window-std-sf.yaml
│ │ │ └── tacos/
│ │ │ ├── 2D-TAN-128x128-K5L8-conv.yaml
│ │ │ └── 2D-TAN-128x128-K5L8-pool.yaml
│ │ ├── lib/
│ │ │ ├── core/
│ │ │ │ ├── config.py
│ │ │ │ ├── engine.py
│ │ │ │ ├── eval.py
│ │ │ │ └── utils.py
│ │ │ ├── datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── activitynet.py
│ │ │ │ ├── charades.py
│ │ │ │ ├── ego4d_clip.py
│ │ │ │ └── tacos.py
│ │ │ └── models/
│ │ │ ├── __init__.py
│ │ │ ├── frame_modules/
│ │ │ │ ├── __init__.py
│ │ │ │ └── frame_pool.py
│ │ │ ├── fusion_modules/
│ │ │ │ ├── __init__.py
│ │ │ │ └── base_fusion.py
│ │ │ ├── loss.py
│ │ │ ├── map_modules/
│ │ │ │ ├── __init__.py
│ │ │ │ └── map_conv.py
│ │ │ ├── prop_modules/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── dense.py
│ │ │ │ └── sparse.py
│ │ │ └── tan.py
│ │ ├── moment_localization/
│ │ │ ├── _init_paths.py
│ │ │ ├── test.py
│ │ │ └── train.py
│ │ └── notice.md
│ └── VSLNet/
│ ├── .gitignore
│ ├── README.md
│ ├── main.py
│ ├── model/
│ │ ├── VSLNet.py
│ │ ├── __init__.py
│ │ └── layers.py
│ ├── options.py
│ ├── requirements.txt
│ ├── run_train.sh
│ └── utils/
│ ├── __init__.py
│ ├── data_gen.py
│ ├── data_loader.py
│ ├── data_util.py
│ ├── evaluate_ego4d_nlq.py
│ ├── prepare_ego4d_dataset.py
│ └── runner_utils.py
├── README.md
├── VQ2D/
│ ├── .gitignore
│ ├── README.md
│ ├── configs/
│ │ ├── Base-RCNN-FPN.yaml
│ │ ├── siam_rcnn_2_gpus.yaml
│ │ └── siam_rcnn_8_gpus.yaml
│ ├── convert_videos_to_clips.py
│ ├── convert_videos_to_images.py
│ ├── detectron2_extensions/
│ │ ├── __init__.py
│ │ ├── config/
│ │ │ ├── __init__.py
│ │ │ └── defaults.py
│ │ ├── layers/
│ │ │ ├── __init__.py
│ │ │ └── wrappers.py
│ │ └── modeling/
│ │ ├── meta_arch/
│ │ │ ├── __init__.py
│ │ │ └── siam_rcnn.py
│ │ └── roi_heads/
│ │ ├── __init__.py
│ │ ├── set_heads.py
│ │ └── siam_heads.py
│ ├── evaluate_vq.py
│ ├── extract_vq_detection_scores.py
│ ├── perform_vq_inference.py
│ ├── process_vq_dataset.py
│ ├── requirements.txt
│ ├── scripts/
│ │ ├── extract_vq_detections.sh
│ │ ├── faster_evaluation/
│ │ │ └── merge_results.py
│ │ ├── infer_vq.sh
│ │ ├── train_2_gpus.sh
│ │ └── train_8_gpus.sh
│ ├── tools/
│ │ ├── test_model_loading.py
│ │ └── validate_extracted_clips.py
│ ├── train_siam_rcnn.py
│ ├── validate_challenge_predictions.py
│ ├── visualizations/
│ │ ├── .gitignore
│ │ ├── visualize_annotation_stats.ipynb
│ │ └── visualize_annotations.py
│ └── vq2d/
│ ├── baselines/
│ │ ├── __init__.py
│ │ ├── dataloader.py
│ │ ├── dataset.py
│ │ ├── feature_retrieval.py
│ │ ├── predictor.py
│ │ └── utils.py
│ ├── config.yaml
│ ├── constants.py
│ ├── metrics/
│ │ ├── __init__.py
│ │ ├── metrics.py
│ │ ├── spatio_temporal_metrics.py
│ │ ├── success_metrics.py
│ │ ├── temporal_metrics.py
│ │ ├── tracking_metrics.py
│ │ └── utils.py
│ ├── stats.py
│ ├── structures.py
│ ├── tools/
│ │ └── get_average_detector_flops.py
│ └── tracking/
│ ├── __init__.py
│ ├── kys.py
│ ├── particle_filter.py
│ ├── pfilter.py
│ ├── tracker.py
│ └── utils.py
└── VQ3D/
├── README.md
├── VQ3D/
│ ├── API/
│ │ ├── get_query_3d_ground_truth.py
│ │ └── metrics.py
│ ├── README.md
│ └── scripts/
│ ├── eval.py
│ ├── prepare_ground_truth_for_queries.py
│ └── run.py
├── annotation_API/
│ └── API/
│ └── bounding_box.py
├── camera_pose_estimation/
│ ├── Camera_Intrinsics_API/
│ │ ├── extract_frames.py
│ │ └── get_camera_intrinsics.py
│ ├── README.md
│ ├── SuperGlueMatching/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── extract_descriptors_api.py
│ │ ├── extract_visual_database.py
│ │ ├── match_pairs_api.py
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── matching.py
│ │ │ ├── superglue.py
│ │ │ ├── superpoint.py
│ │ │ ├── utils.py
│ │ │ └── weights/
│ │ │ ├── superglue_indoor.pth
│ │ │ ├── superglue_outdoor.pth
│ │ │ └── superpoint_v1.pth
│ │ ├── preprocess_color.py
│ │ ├── requirements.txt
│ │ └── scripts.sh
│ ├── Visualization/
│ │ ├── camera_trajectory.json
│ │ └── visualize_render_images.py
│ ├── extract_frames_all_clips.py
│ ├── extract_frames_for_colmap.py
│ ├── get_intrinsics_for_all_clips.py
│ ├── get_intrinsics_for_all_clips_greedy.py
│ ├── get_median_intrinsics.py
│ ├── main.sh
│ ├── pnp_api.py
│ ├── reconstruction.py
│ ├── run_all_data.py
│ ├── sfm_api_wsuperglue.py
│ ├── superglue_tracker.py
│ ├── undistort_image_api.py
│ ├── utils.py
│ └── visual_database_api.py
├── data/
│ ├── README.md
│ ├── all_clips_camera_poses_val.json
│ ├── mapping_vq2d_to_vq3d_queries_annotations_test.json
│ ├── mapping_vq2d_to_vq3d_queries_annotations_train.json
│ ├── mapping_vq2d_to_vq3d_queries_annotations_val.json
│ ├── scan_to_intrinsics.json
│ ├── vq3d_results/
│ │ └── siam_rcnn_residual_kys_val.json
│ └── vq3d_test_unannotated_template.json
├── depth_estimation/
│ ├── README.md
│ ├── compute_depth_for_ego4d.py
│ ├── main.sh
│ └── prepare_inputs_for_depth_estimation.py
└── requirements.txt
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
/MQ/runs/
EgoTracks/run.sh
================================================
FILE: .gitmodules
================================================
[submodule "VQ3D/depth_estimation/DPT"]
path = VQ3D/depth_estimation/DPT
url = git@github.com:isl-org/DPT.git
================================================
FILE: .pre-commit-config.yaml
================================================
default_language_version:
python: python3
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.3.0
hooks:
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/omnilib/ufmt
rev: v1.3.0
hooks:
- id: ufmt
additional_dependencies:
- black == 20.8b0
- usort == 0.6.3
================================================
FILE: EgoTracks/README.md
================================================
# EgoTracks
## Install packages
```sh
pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/torch1.8/index.html
pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
```
Then install EgoTracks as package:
```
python setup.py install
```
## Download clips
Please follow [Start here](https://github.com/EGO4D/docs/blob/main/docs/start-here.md) for instructions on how to access the dataset by accepting the terms of our license agreement.
And then use the following command to download clips and annotations for EgoTracks:
```
ego4d --output_directory ./ --datasets egotracks clips --benchmark EM --version v2
```
## Preprocess - extract frames from exported clips
Replace the following paths for reading and outputing to the correct place in ExtractFramesWorkflowParams in tools/preprocess/extract_ego4d_clip_frames.py:
* clip_dir: path to the downloaded clip directory
* annotation_path: path to the annotation file we would like to extract frames. If you want the test set only, only extract frames for the test set. If you also would like training part, then need to extract for training set as well.
* output_dir: path to the directory where to the save the extracted frame images.
And then extract frames from video clips:
```sh
python tools/preprocess/extract_ego4d_clip_frames.py
```
## Finetuning on EgoTracks
We used STARK (Res50) as pre-trained models, so download the model weights from https://drive.google.com/drive/folders/1fSgll53ZnVKeUn22W37Nijk-b9LGhMdN
Or you can use our trained checkpoint at https://drive.google.com/file/d/14vZmWxYSGJXZGxD5U1LthvvTR_eRzWCw/view?usp=share_link
Change the following paths in the tracking/config/stark_defaults.py:
* cfg.DATA.EGO4DLTT_ANNOTATION_PATH = "your_path/train_v1.json"
* cfg.DATA.EGO4DLTT_DATA_DIR = "your_path_to_extract_frames" - This is the same as the output_dir in preprocess
And change the model weights path and output directory in train.sh, and then run:
```sh
bash train.sh
```
## Infer challenge set and submit challenge result
We use "{clip_uid}\_{query_set_id}\_{object_title}" as unique name for each sequence (object). One could use the EGO4DLTTrackingDataset from tracking/dataset/eval_datasets/ego4d_lt_tracking_dataset.py for loading images and sequence name.
An example of how to run test and generate submission file is in tools/eval_datasets/eval_ego4d_lt_tracking.py and tools/train_net.py result2submission.
Change the following paths in the tracking/config/stark_defaults.py:
* cfg.EVAL.EGO4DLT.ANNOTATION_PATH = "your_path/challenge_test_v1_unannotated.json"
* cfg.EVAL.EGO4DLT.DATA_DIR = "your_path_to_extract_frames"
And change the model weights path and output directory in test.sh, and then run:
```sh
bash test.sh
```
================================================
FILE: EgoTracks/configs/STARK/stark_st_R101.yaml
================================================
_BASE_: "./stark_st_base.yaml"
MODEL_TYPE: STARK
DATA:
SAMPLER_MODE: trident_pro
MAX_SAMPLE_INTERVAL:
- 200
MEAN:
- 0.485
- 0.456
- 0.406
SEARCH:
CENTER_JITTER: 4.5
FACTOR: 5.0
SCALE_JITTER: 0.5
SIZE: 320
NUMBER: 1
STD:
- 0.229
- 0.224
- 0.225
TEMPLATE:
CENTER_JITTER: 0
FACTOR: 2.0
SCALE_JITTER: 0
SIZE: 128
NUMBER: 2
TRAIN:
DATASETS_NAME:
- LASOT
- GOT10K_vottrain
- COCO17
- TRACKINGNET
DATASETS_RATIO:
- 1
- 1
- 1
- 1
SAMPLE_PER_EPOCH: 600000
VAL:
DATASETS_NAME:
- GOT10K_votval
DATASETS_RATIO:
- 1
SAMPLE_PER_EPOCH: 100000
MODEL:
HEAD_TYPE: CORNER
NLAYER_HEAD: 3
BACKBONE:
DILATION: false
OUTPUT_LAYERS:
- layer3
STRIDE: 16
TYPE: resnet101
HIDDEN_DIM: 256
NUM_OBJECT_QUERIES: 1
POSITION_EMBEDDING: sine
PREDICT_MASK: false
TRANSFORMER:
DEC_LAYERS: 6
DIM_FEEDFORWARD: 2048
DIVIDE_NORM: false
DROPOUT: 0.1
ENC_LAYERS: 6
NHEADS: 8
PRE_NORM: false
TRAIN_STAGE_1:
BACKBONE_MULTIPLIER: 0.1
BATCH_SIZE: 16
DEEP_SUPERVISION: false
EPOCH: 50
FREEZE_BACKBONE_BN: true
FREEZE_LAYERS:
- conv1
- layer1
GRAD_CLIP_NORM: 0.1
LR: 0.0001
LR_DROP_EPOCH: 40
NUM_WORKER: 4
OPTIMIZER: ADAMW
PRINT_INTERVAL: 50
VAL_EPOCH_INTERVAL: 10
WEIGHT_DECAY: 0.0001
LOSS_FUNCTIONS: ["giou", "l1"]
LOSS_WEIGHTS: [2.0, 5.0]
TRAIN_STAGE_2:
BACKBONE_MULTIPLIER: 0.1
BATCH_SIZE: 16
DEEP_SUPERVISION: false
EPOCH: 5
FREEZE_BACKBONE_BN: true
FREEZE_LAYERS:
- conv1
- layer1
GRAD_CLIP_NORM: 0.1
LR: 0.0001
LR_DROP_EPOCH: 40
NUM_WORKER: 4
OPTIMIZER: ADAMW
PRINT_INTERVAL: 50
VAL_EPOCH_INTERVAL: 1
WEIGHT_DECAY: 0.0001
LOSS_FUNCTIONS: ["cls"]
LOSS_WEIGHTS: [1.0]
================================================
FILE: EgoTracks/configs/STARK/stark_st_base.yaml
================================================
MODEL_TYPE: STARK
DATA:
SAMPLER_MODE: trident_pro
MAX_SAMPLE_INTERVAL:
- 200
MEAN:
- 0.485
- 0.456
- 0.406
SEARCH:
CENTER_JITTER: 4.5
FACTOR: 5.0
SCALE_JITTER: 0.5
SIZE: 320
NUMBER: 1
STD:
- 0.229
- 0.224
- 0.225
TEMPLATE:
CENTER_JITTER: 0
FACTOR: 2.0
SCALE_JITTER: 0
SIZE: 128
NUMBER: 2
TRAIN:
DATASETS_NAME:
- LASOT
- GOT10K_vottrain
- COCO17
- TRACKINGNET
DATASETS_RATIO:
- 1
- 1
- 1
- 1
SAMPLE_PER_EPOCH: 600000
VAL:
DATASETS_NAME:
- GOT10K_votval
DATASETS_RATIO:
- 1
SAMPLE_PER_EPOCH: 100000
MODEL:
HEAD_TYPE: CORNER
NLAYER_HEAD: 3
BACKBONE:
DILATION: false
OUTPUT_LAYERS:
- layer3
STRIDE: 16
TYPE: resnet50
HIDDEN_DIM: 256
NUM_OBJECT_QUERIES: 1
POSITION_EMBEDDING: sine
PREDICT_MASK: false
TRANSFORMER:
DEC_LAYERS: 6
DIM_FEEDFORWARD: 2048
DIVIDE_NORM: false
DROPOUT: 0.1
ENC_LAYERS: 6
NHEADS: 8
PRE_NORM: false
TRAIN_STAGE_1:
BACKBONE_MULTIPLIER: 0.1
BATCH_SIZE: 16
DEEP_SUPERVISION: false
EPOCH: 50
FREEZE_BACKBONE_BN: true
FREEZE_LAYERS:
- conv1
- layer1
GRAD_CLIP_NORM: 0.1
LR: 0.0001
LR_DROP_EPOCH: 40
NUM_WORKER: 4
OPTIMIZER: ADAMW
PRINT_INTERVAL: 50
VAL_EPOCH_INTERVAL: 10
WEIGHT_DECAY: 0.0001
LOSS_FUNCTIONS: ["giou", "l1"]
LOSS_WEIGHTS: [2.0, 5.0]
TRAIN_STAGE_2:
BACKBONE_MULTIPLIER: 0.1
BATCH_SIZE: 16
DEEP_SUPERVISION: false
EPOCH: 5
FREEZE_BACKBONE_BN: true
FREEZE_LAYERS:
- conv1
- layer1
GRAD_CLIP_NORM: 0.1
LR: 0.0001
LR_DROP_EPOCH: 4
NUM_WORKER: 4
OPTIMIZER: ADAMW
PRINT_INTERVAL: 50
VAL_EPOCH_INTERVAL: 1
WEIGHT_DECAY: 0.0001
LOSS_FUNCTIONS: ["cls"]
LOSS_WEIGHTS: [1.0]
TEST:
SEARCH_FACTOR: 5.0
SEARCH_SIZE: 320
TEMPLATE_FACTOR: 2.0
TEMPLATE_SIZE: 128
TEST_BATCHSIZE: 8
IS_SEARCH_LOCAL: True
UPDATE_INTERVALS:
LASOT: [200]
GOT10K_TEST: [200]
TRACKINGNET: [25]
VOT20: [10]
VOT20LT: [200]
EGO4DVQTracking: [1]
================================================
FILE: EgoTracks/setup.py
================================================
#!/usr/bin/env python3
from setuptools import find_packages, setup
PROJECTS = {
"tracking.tools": "tools",
}
setup(
name="egotracks",
version="1.0",
# author="",
# url="unknown",
# description="EgoTracks",
# python_requires=">=3.7",
# install_requires=[
# "matplotlib",
# "detectron2",
# "opencv-python",
# "pandas",
# "torchvision>=0.4.2",
# "scikit-learn",
# "iopath",
# ],
packages=find_packages(exclude=("tests", "tools")) + list(PROJECTS.keys()),
package_dir=PROJECTS,
package_data={"tracking.tools": ["**"]},
)
================================================
FILE: EgoTracks/test.sh
================================================
python tools/train_net.py \
--num-gpus 8 --eval-only \
MODEL.WEIGHTS /checkpoint/haotang/experiments/EgoTracks/STARKST_ep0001.pth.tar \
OUTPUT_DIR /checkpoint/haotang/experiments/EgoTracks/res/test_challenge_set_small_v1_5FPS_multi_gpu_test
================================================
FILE: EgoTracks/tools/__init__.py
================================================
================================================
FILE: EgoTracks/tools/eval_datasets/__init__.py
================================================
================================================
FILE: EgoTracks/tools/eval_datasets/build.py
================================================
from .eval_ego4d_lt_tracking import (
eval_ego4d_lt_tracking,
)
EVAL_FUNCTIONS = {
"EGO4DLTTracking": eval_ego4d_lt_tracking,
}
CALCULATE_METRICS_FUNCTIONS = {
"EGO4DLTTracking": None,
}
def build_eval_function(dataset_name):
return EVAL_FUNCTIONS[dataset_name]
def build_calculate_metrics_function(dataset_name):
return CALCULATE_METRICS_FUNCTIONS[dataset_name]
================================================
FILE: EgoTracks/tools/eval_datasets/eval_ego4d_lt_tracking.py
================================================
import logging
import os
import pickle as pkl
import time
import detectron2.utils.comm as comm
import numpy as np
import torch
import torch.nn.parallel
import torch.optim
import torch.utils.data
import torch.utils.data.distributed
from tracking.dataset.eval_datasets.ego4d_lt_tracking_dataset import (
EGO4DLTTrackingDataset,
)
from tracking.metrics.lt_tracking_metrics import (
compute_f_score,
compute_precision_and_recall,
)
from tracking.metrics.miou import compute_overlaps
from tracking.tools.annotation.annotation_utils import seperate_occurrances
from tracking.utils.bbox_helper import xywh_2_cxywh
from tracking.utils.env import pathmgr
from tracking.utils.meters import AverageMeter, ProgressMeter
from tracking.utils.utils import opencv_loader
def trivial_batch_collator(batch):
"""
A batch collator that does nothing.
"""
return batch
def eval_ego4d_lt_tracking(model, cfg):
global_rank = comm.get_rank()
cfg.defrost()
result_dir = os.path.join(
cfg.OUTPUT_DIR,
"eval",
"EGO4DLTTracking",
f"{cfg.EVAL.EGO4DLT.TRACK_MODE}",
f"{cfg.MODEL_TYPE}",
)
cfg.freeze()
annotation_path = cfg.EVAL.EGO4DLT.ANNOTATION_PATH
data_dir = cfg.EVAL.EGO4DLT.DATA_DIR
track_mode = cfg.EVAL.EGO4DLT.TRACK_MODE
use_visual_clip = cfg.EVAL.EGO4DLT.USE_VISUAL_CLIP
eval_ratio = cfg.EVAL.EGO4DLT.EVAL_RATIO
print_freq = cfg.EVAL.PRINT_FREQ
# Initilize data loader
logging.info("building dataset")
eval_dataset = EGO4DLTTrackingDataset(
data_dir, annotation_path, ratio=eval_ratio, split="test"
)
logging.info(f"{global_rank}: Length of eval dataset {len(eval_dataset)}")
if comm.get_world_size() > 1:
eval_sampler = torch.utils.data.distributed.DistributedSampler(
eval_dataset, shuffle=False
)
batch_sampler = torch.utils.data.sampler.BatchSampler(
eval_sampler, 1, drop_last=False
)
else:
batch_sampler = None
eval_loader = torch.utils.data.DataLoader(
eval_dataset,
num_workers=cfg.EVAL.NUM_WORKERS,
batch_sampler=batch_sampler,
collate_fn=trivial_batch_collator, # don't batch, but yield individual elements
)
print(f"GPU {comm.get_local_rank()}: {len(eval_loader)}")
# Setup stats logger
result = {}
batch_time = AverageMeter("Time", ":6.3f")
data_time = AverageMeter("Data", ":6.3f")
progress = ProgressMeter(
len(eval_loader),
[batch_time, data_time],
)
save_dir = os.path.join(result_dir, "intermediate_result")
pathmgr.mkdirs(save_dir)
# switch to train mode
model.eval()
end = time.time()
# currently batchsize = 1
for i, data in enumerate(eval_loader):
seq = data[0]
seq_name = seq.name
clip_uid, target_id = seq_name.split("_")[:2]
object_title = "".join(seq_name.split("_")[2:])
if use_visual_clip:
raise NotImplementedError
else:
# visual_crop should only contain one element
assert len(seq.visual_crop) == 1
target_bbox = seq.visual_crop[list(seq.visual_crop.keys())[0]]
target_frame_number = list(seq.visual_crop.keys())[0]
logging.info(f"Processing {clip_uid}")
if track_mode == "forward_backward_from_vcrop":
total_frames = len(seq.frames)
if cfg.EVAL.EGO4DLT.SAMPLE_5FPS == True:
# This assumes the exported clips are 30FPS
forward_frame_numbers = list(
range(target_frame_number, total_frames, 6)
)
backward_frame_numbers = list(range(target_frame_number, -1, -6))
else:
forward_frame_numbers = list(range(target_frame_number, total_frames))
backward_frame_numbers = list(range(target_frame_number + 1))[::-1]
forward_meta_data = {
"target_bbox": target_bbox,
"target_id": target_id,
"frame_numbers": forward_frame_numbers,
}
backward_meta_data = {
"target_bbox": target_bbox,
"target_id": target_id,
"frame_numbers": backward_frame_numbers,
}
pred_traj = model.inference(seq, forward_meta_data)
forward_pred_bboxes = pred_traj[target_id]["bboxes"]
model.reset_tracker()
pred_traj = model.inference(seq, backward_meta_data)
backward_pred_bboxes = pred_traj[target_id]["bboxes"]
model.reset_tracker()
pred_bboxes = backward_pred_bboxes[::-1][:-1] + forward_pred_bboxes
else:
raise NotImplementedError(f"Track mode {track_mode} is not implemented.")
# measure elapsed time
batch_time.update(time.time() - end)
end = time.time()
if i % print_freq == 0:
progress.display(i)
result[seq_name] = {
"target_id": target_id,
"object_title": object_title,
"clip_uid": clip_uid,
"seq_name": seq_name,
"pred_bboxes": pred_bboxes,
}
model.reset_tracker()
save_path = os.path.join(save_dir, f"{seq_name}.pkl")
pkl.dump(result, pathmgr.open(save_path, "wb"))
logging.info(f"Node {global_rank}. Saved to {save_path}")
return result_dir
def gather_ego4d_lt_tracking_result(result):
gathered = {}
for seq_name, res in result.items():
gathered[seq_name] = res
return gathered
================================================
FILE: EgoTracks/tools/eval_net.py
================================================
# (c) Facebook, Inc. and its affiliates. Confidential and proprietary.
import argparse
import logging
import detectron2.utils.comm as comm
import torch
import torch.backends.cudnn as cudnn
import torch.nn.parallel
import torch.optim
import torch.utils.data
import torch.utils.data.distributed
from tracking.models.stark_tracker.stark_tracker import STARKTracker
from .eval_datasets.build import (
build_calculate_metrics_function,
build_eval_function,
)
from tracking.utils.defaults import setup
parser = argparse.ArgumentParser(description="Tracking")
MODELS = {
"STARK": STARKTracker,
}
def modify_STARK_cfg_by_dataset(cfg, dataset_name):
cfg.defrost()
if dataset_name == "EGO4DVQTracking":
cfg.TEST.IS_SEARCH_LOCAL = cfg.EVAL.EGO4DVQ.IS_SEARCH_LOCAL
cfg.TEST.UPDATE_INTERVALS.UPDATE_INTERVALS = getattr(
cfg.TEST.UPDATE_INTERVALS, dataset_name
)
cfg.freeze()
return cfg
def eval_main(args, cfg=None):
# The optional cfg is used for training code to overwrite
# which model checkpoint to read from
if cfg is None:
cfg = setup(args)
local_rank = comm.get_local_rank()
logging.info("Use GPU: {} for evaluating".format(local_rank))
cudnn.benchmark = False
cudnn.deterministic = True
# create model
for dataset_name in cfg.EVAL.EVAL_DATASETS:
logging.info(f"Creating model {cfg.MODEL_TYPE} for dataset {dataset_name}")
# In STARK, we need to set the update interval for different datasets
if cfg.MODEL_TYPE == "STARK":
cfg = modify_STARK_cfg_by_dataset(cfg, dataset_name)
logging.info(cfg)
if cfg.MODEL_TYPE in MODELS:
model = MODELS[cfg.MODEL_TYPE](
cfg, device=torch.device(f"cuda:{local_rank}")
)
else:
raise NotImplementedError(f"Model type {cfg.MODEL_TYPE} is not supported!")
eval_func = build_eval_function(dataset_name)
eval_func(model, cfg)
def calculate_metrics(args):
cfg = setup(args)
result = {}
for dataset_name in cfg.EVAL.EVAL_DATASETS:
calculate_metrics_func = build_calculate_metrics_function(dataset_name)
result[dataset_name] = calculate_metrics_func(cfg)
return result
if __name__ == "__main__":
eval_main()
================================================
FILE: EgoTracks/tools/preprocess/__init__.py
================================================
================================================
FILE: EgoTracks/tools/preprocess/extract_ego4d_clip_frames.py
================================================
"""
Extract frames from clip
"""
import csv
import functools
import json
import multiprocessing
import os
import time
from collections import defaultdict
from typing import List, NamedTuple
import av
from PIL import Image
from tqdm import tqdm
class ExtractFramesWorkflowParams(NamedTuple):
num_process: int = 8
clip_dir: str = "/datasets01/ego4d_track2/v1/clips"
annotation_path: str = (
"/checkpoint/haotang/data/EgoTracks/annotations/challenge_test_v1.json"
)
output_dir: str = "/checkpoint/haotang/data/EgoTracks/clips_frames"
def run_single_process(clip_uid: str, params: ExtractFramesWorkflowParams):
frames_save_dir = os.path.join(params.output_dir, "frames", f"{clip_uid}")
info_save_dir = os.path.join(params.output_dir, "clip_info")
info_save_path = os.path.join(params.output_dir, "clip_info", f"{clip_uid}.csv")
os.makedirs(frames_save_dir, exist_ok=True)
os.makedirs(info_save_dir, exist_ok=True)
clip_path = os.path.join(params.clip_dir, f"{clip_uid}.mp4")
frame_numbers = []
print(f"Start processing {clip_uid}!")
s = time.time()
with av.open(clip_path) as container:
avg_fps = container.streams.video[0].average_rate
stream_base = container.streams.video[0].time_base
pts_scale = avg_fps * stream_base
for frame in container.decode(video=0):
frame_number = int(frame.pts * pts_scale)
image = frame.to_ndarray(format="rgb24")
pil_img = Image.fromarray(image)
pil_img.save(
os.path.join(frames_save_dir, f"{frame_number}.jpg"), format="JPEG"
)
# cv2.imwrite(os.path.join(local_output_dir, f"{frame_number}.jpg"), image)
frame_numbers.append(f"{frame_number}.jpg")
with open(info_save_path, "w") as f:
write = csv.writer(f, delimiter="\n")
write.writerow(frame_numbers)
print(f"Finished {clip_uid} in {time.time() - s}!")
def extract_clip_ids(file_path: str):
with open(file_path, "r") as f:
annotations = json.load(f)
clip_uids = []
for v in annotations["videos"]:
for c in v["clips"]:
clip_uids.append(c["exported_clip_uid"])
return clip_uids
def remove_finished_clip_uids(clip_uids: List, params: ExtractFramesWorkflowParams):
res = []
info_save_dir = os.path.join(params.output_dir, "clip_info")
for clip_uid in clip_uids:
if not os.path.exists(os.path.join(info_save_dir, f"{clip_uid}.csv")):
res.append(clip_uid)
else:
print(f"{clip_uid} was already extracted!")
return res
def read_csv(path: str):
if not os.path.exists(path):
raise RuntimeError
with open(path) as f:
frame_numbers = [line.strip() for line in f.readlines()]
return frame_numbers
def combine_clip_info(params):
combined_save_path = os.path.join(params.output_dir, "clip_info.json")
clip_info_dir = os.path.join(params.output_dir, "clip_info")
clip_info_files = os.listdir(clip_info_dir)
clip_info_dict = defaultdict(dict)
for clip_info_file in tqdm(clip_info_files, total=len(clip_info_files)):
clip_uid = clip_info_file.split(".csv")[0]
info_path = os.path.join(clip_info_dir, f"{clip_uid}.csv")
frame_numbers = read_csv(info_path)
clip_info_dict[clip_uid]["frames"] = frame_numbers
with open(combined_save_path, "w") as f:
json.dump(clip_info_dict, f)
def main():
params = ExtractFramesWorkflowParams()
clip_uids = extract_clip_ids(params.annotation_path)
clip_uids = remove_finished_clip_uids(clip_uids, params)
print(f"Total {len(clip_uids)} to be processed ...")
# run_single_process(clip_uids[0], params=params)
pool = multiprocessing.Pool(params.num_process)
pool.map(functools.partial(run_single_process, params=params), clip_uids)
pool.close()
pool.join()
# Combine info for each clip into one file
combine_clip_info(params)
if __name__ == "__main__":
main()
================================================
FILE: EgoTracks/tools/train_net.py
================================================
"""
Train_net for Tracking
Run this command to test locally:
>>> buck run @mode/inplace @mode/dev-nosan //vision/fair_accel/pixar_env/pixar_environment/tracking/tools:train_net -- --print-passing-details
"""
from collections import defaultdict
import csv
import json
import logging
import os
from datetime import datetime
import detectron2.utils.comm as comm
import torch
import yaml
from torch import distributed as dist, multiprocessing as mp
from torch.backends import cudnn
from tracking.tools.eval_net import eval_main
from tracking.tools.trainers.starkst_trainer import STARKSTrainer, STARKSTTrainer
from tracking.utils.defaults import default_argument_parser, setup
from tracking.utils.env import pathmgr
from tracking.utils.types import Params
from tracking.utils.multiprocessing import launch_job
import pickle as pkl
import io
# # TODO: delete once finish debug
# def train_main(params, rank=0, gpu=0, group=None):
# OUTPUT_DIR = params.result_dir
# cudnn.benchmark = True
# print("Start training fisrt stage - STARKS ...")
# params.STARK.model_type = "stark_st1"
# params.STARK.TRAIN.TRAIN_CLS = False
# params.STARK.DATA.TRAIN.DATASETS_NAME = ["LASOT"]
# params.STARK.DATA.TRAIN.DATASETS_RATIO = [1]
# params.STARK.DATA.DATA_FRACTION = None # Faster test
# params.STARK.TRAIN.EPOCH = 2
# params.STARK.TRAIN.BATCH_SIZE = 4
# # decrease iterations to test faster
# params.STARK.DATA.TRAIN.SAMPLE_PER_EPOCH = 40
# params.STARK.DATA.VAL.SAMPLE_PER_EPOCH = 20
# params.STARK.TRAIN.VAL_EPOCH_INTERVAL = 5
# params.STARK.OUTPUT_DIR = os.path.join(OUTPUT_DIR, "STARKS")
# starks_trainer = STARKSTrainer(params.STARK)
# starks_trainer.train()
# comm.synchronize()
# print("Start training second stage - STARKST ...")
# params.STARK.model_type = "stark_st2"
# params.STARK.OUTPUT_DIR = os.path.join(OUTPUT_DIR, "STARKST")
# params.STARK.PREV_CHECKPOINT_DIR = os.path.join(
# OUTPUT_DIR, "STARKS", "checkpoints"
# )
# params.STARK.TRAIN.TRAIN_CLS = True
# starkst_trainer = STARKSTTrainer(params.STARK)
# print(f"{comm.get_rank()} Trainer {STARKSTTrainer} {starkst_trainer}")
# starkst_trainer.train(load_previous_ckpt=True)
# # train_main(params, rank=0, local_rank=-1, group=None)
# comm.synchronize()
# # eval_result
# checkpoint_dir = os.path.join(
# OUTPUT_DIR,
# "STARKST",
# "checkpoints",
# )
# checkpoint_list = pathmgr.ls(checkpoint_dir)
# checkpoint_list = sorted(checkpoint_list)
# checkpoint_path = os.path.join(checkpoint_dir, checkpoint_list[-1])
# params.model_path = checkpoint_path
# params.result_dir = os.path.join(
# OUTPUT_DIR,
# "eval",
# f"{params.track_mode}_{'5FPS' if params.is_read_5FPS_clip else '30FPS'}",
# )
# local_rank = comm.get_local_rank()
# global_rank = comm.get_rank()
# return eval_main(params, global_rank, local_rank)
def train_main(args):
logging.info(args)
cfg = setup(args)
output_dir = cfg.OUTPUT_DIR
pathmgr.mkdirs(output_dir)
if comm.is_main_process():
with pathmgr.open(os.path.join(output_dir, "config.yaml"), "w") as f:
yaml.dump(cfg.dump(), f)
if cfg.MODEL_TYPE == "STARK":
stage_1_cfg = cfg.clone()
stage_1_cfg.defrost()
# STARK requires two-stage training:
# First stage train localization while
# the second stage train classification
if comm.is_main_process():
logging.error("Start training fisrt stage - STARKS ...")
cudnn.benchmark = cfg.CUDNN_BENCHMARK
stage_1_cfg.TRAIN = cfg.TRAIN_STAGE_1.clone()
stage_1_cfg.OUTPUT_DIR = os.path.join(output_dir, "STARKS")
logging.info(stage_1_cfg)
stage_1_cfg.freeze()
starks_trainer = STARKSTrainer(stage_1_cfg)
if stage_1_cfg.MODEL.WEIGHTS:
starks_trainer.load_checkpoint(checkpoint=stage_1_cfg.MODEL.WEIGHTS)
if args.resume:
starks_trainer.load_checkpoint()
starks_trainer.train()
comm.synchronize()
if comm.is_main_process():
logging.error("Start training second stage - STARKST ...")
stage_2_cfg = cfg.clone()
stage_2_cfg.defrost()
stage_2_cfg.TRAIN = cfg.TRAIN_STAGE_2.clone()
stage_2_cfg.OUTPUT_DIR = os.path.join(output_dir, "STARKST")
stage_2_cfg.freeze()
prev_checkpoint_dir = os.path.join(output_dir, "STARKS", "checkpoints")
# Load the checkpoint from Stage1 training
checkpoint_list = pathmgr.ls(prev_checkpoint_dir)
checkpoint_list = sorted(checkpoint_list)
checkpoint_path = os.path.join(prev_checkpoint_dir, checkpoint_list[-1])
starkst_trainer = STARKSTTrainer(stage_2_cfg)
starkst_trainer.load_checkpoint(checkpoint=checkpoint_path)
starkst_trainer.train()
comm.synchronize()
else:
raise NotImplementedError(
f"Training model type {cfg.MODEL_TYPE} is not supported!"
)
# eval_result
eval_cfg = cfg.clone()
eval_cfg.defrost()
checkpoint_dir = os.path.join(
output_dir,
"STARKST",
"checkpoints",
)
checkpoint_list = pathmgr.ls(checkpoint_dir)
checkpoint_list = sorted(checkpoint_list)
checkpoint_path = os.path.join(checkpoint_dir, checkpoint_list[-1])
eval_cfg.MODEL.WEIGHTS = checkpoint_path
eval_cfg.freeze()
return eval_main(args, cfg=eval_cfg)
def run_train(
local_rank,
main_func,
params,
num_machines,
num_gpus_per_machine,
machine_rank,
dist_url,
):
world_size = num_machines * num_gpus_per_machine
rank = machine_rank * num_gpus_per_machine + local_rank
dist.init_process_group(
backend="NCCL",
init_method=dist_url,
world_size=world_size,
rank=local_rank,
)
assert comm._LOCAL_PROCESS_GROUP is None
for i in range(num_machines):
ranks_on_i = list(
range(i * num_gpus_per_machine, (i + 1) * num_gpus_per_machine)
)
pg = dist.new_group(ranks_on_i)
if i == machine_rank:
comm._LOCAL_PROCESS_GROUP = pg
torch.cuda.set_device(local_rank)
main_func(params, rank=rank, gpu=local_rank)
def result2submission(args):
cfg = setup(args)
result_dir = os.path.join(
cfg.OUTPUT_DIR,
"eval",
"EGO4DLTTracking",
f"{cfg.EVAL.EGO4DLT.TRACK_MODE}",
f"{cfg.MODEL_TYPE}",
)
intermediate_dir = os.path.join(result_dir, "intermediate_result")
result = {}
files = pathmgr.ls(intermediate_dir)
for f in files:
path = os.path.join(intermediate_dir, f)
logging.info(path)
shard_result = pkl.load(pathmgr.open(path, "rb"))
result.update(shard_result)
submission = defaultdict(dict)
for k, v in result.items():
data = []
for bbox_dict in v["pred_bboxes"]:
submission[k][int(bbox_dict["frame_number"])] = bbox_dict["bbox"] + [
bbox_dict["score"]
]
with open(os.path.join(result_dir, f"submission.json"), "w") as f:
json.dump(submission, f, indent=4)
def main():
args = default_argument_parser().parse_args()
args.config_file = "configs/STARK/stark_st_base.yaml"
if args.eval_only:
launch_job(
eval_main,
args.num_gpus,
num_machines=args.num_machines,
init_method=args.dist_url,
machine_rank=args.machine_rank,
args=(args,),
)
result2submission(args)
else:
launch_job(
train_main,
args.num_gpus,
num_machines=args.num_machines,
init_method=args.dist_url,
machine_rank=args.machine_rank,
args=(args,),
)
if __name__ == "__main__":
main()
================================================
FILE: EgoTracks/tools/trainers/__init__.py
================================================
================================================
FILE: EgoTracks/tools/trainers/base_trainer.py
================================================
import logging
import os
import traceback
import detectron2.utils.comm as comm
import torch
from torch.nn import BCEWithLogitsLoss
from torch.nn.functional import l1_loss
from torch.nn.parallel import (
DataParallel,
DistributedDataParallel,
DistributedDataParallel as DDP,
)
from torch.utils.data.distributed import DistributedSampler
from torch.utils.tensorboard import SummaryWriter
from tracking.dataset.build import build_dataloaders
from tracking.models.stark_tracker.stark_st import build_starkst
from tracking.models.stark_tracker.utils.box_ops import giou_loss
from tracking.solver.build import build_optimizer_scheduler
from tracking.utils.env import pathmgr
LOSS_FUNCTIONS = {"giou": giou_loss, "l1": l1_loss, "cls": BCEWithLogitsLoss()}
def build_loss_function(cfg):
loss_funcs = {}
loss_weights = {}
assert len(cfg.TRAIN.LOSS_FUNCTIONS) == len(cfg.TRAIN.LOSS_WEIGHTS)
for loss_name, loss_weight in zip(cfg.TRAIN.LOSS_FUNCTIONS, cfg.TRAIN.LOSS_WEIGHTS):
loss_funcs[loss_name] = LOSS_FUNCTIONS[loss_name]
loss_weights[loss_name] = loss_weight
return loss_funcs, loss_weights
class BaseTrainer:
"""Base trainer class. Contains functions for training and saving/loading checkpoints.
Trainer classes should inherit from this one and overload the train_epoch function."""
def __init__(self, cfg):
"""
args:
cfg - config for the entire training
"""
model = build_starkst(cfg)
# if comm.get_world_size() == 1:
# device = torch.device(f"cuda:{comm.get_local_rank()}")
# model = model.to(device)
# else:
device = torch.device("cuda")
model.to(device)
if comm.get_world_size() > 1:
model = DDP(
model, device_ids=[comm.get_local_rank()], find_unused_parameters=True
)
local_rank = comm.get_local_rank()
train_loader, val_loader = build_dataloaders(cfg, local_rank)
optimizer, lr_scheduler = build_optimizer_scheduler(cfg, model)
objective, loss_weight = build_loss_function(cfg)
self.optimizer = optimizer
self.lr_scheduler = lr_scheduler
self.model = model
self.loaders = [train_loader, val_loader]
self.epoch = 0
self.global_step = 0
self.stats = {}
self.cfg = cfg
self.output_dir = cfg.OUTPUT_DIR
self.log_path = os.path.join(self.output_dir, "log.txt")
self.print_interval = cfg.TRAIN.PRINT_INTERVAL
self.scheduler_type = cfg.TRAIN.SCHEDULER.TYPE
self.prev_checkpoint_dir = getattr(cfg, "PREV_CHECKPOINT_DIR", None)
self.checkpoint_dir = os.path.join(self.output_dir, "checkpoints")
pathmgr.mkdirs(self.output_dir)
pathmgr.mkdirs(self.checkpoint_dir)
if comm.is_main_process():
self.tensorboard_dir = os.path.join(self.output_dir, "tensorboard")
pathmgr.mkdirs(self.tensorboard_dir)
self.writer = SummaryWriter(self.tensorboard_dir)
self.device = device
self.objective = objective
self.loss_weight = loss_weight
def train(
self,
load_latest=False,
load_previous_ckpt=False,
):
"""Do training for the given number of epochs.
args:
max_epochs - Max number of training epochs,
load_latest - Bool indicating whether to resume from latest epoch.
"""
max_epochs = self.cfg.TRAIN.EPOCH
epoch = -1
num_tries = 1
for _i in range(num_tries):
try:
if load_latest:
self.load_checkpoint()
if load_previous_ckpt:
self.load_checkpoint(
checkpoint=self.prev_checkpoint_dir,
fields=["state_dict"],
)
for epoch in range(self.epoch + 1, max_epochs + 1):
self.epoch = epoch
self.train_epoch()
if self.lr_scheduler is not None:
if self.scheduler_type != "cosine":
self.lr_scheduler.step()
else:
self.lr_scheduler.step(epoch - 1)
# only save the last 10 checkpoints
if comm.is_main_process() and (
epoch > (max_epochs - 10)
or epoch % self.cfg.TRAIN.CHECKPOINT_PERIOD == 0
):
self.save_checkpoint()
except Exception:
print("Training crashed at epoch {}".format(epoch))
# self.epoch -= 1
# load_latest = True
print("Traceback for the error!")
print(traceback.format_exc())
print("Restarting training from last epoch ...")
raise Exception
print("Finished training!")
def train_epoch(self):
raise NotImplementedError
def save_checkpoint(self):
"""Saves a checkpoint of the network and other variables."""
if isinstance(self.model, (DistributedDataParallel, DataParallel)):
model = self.model.module
else:
model = self.model
model_type = type(model).__name__
state = {
"epoch": self.epoch,
"model_type": model_type,
"state_dict": model.state_dict(),
"model_info": getattr(model, "info", None),
"constructor": getattr(model, "constructor", None),
"optimizer": self.optimizer.state_dict(),
"stats": self.stats,
"cfg": self.cfg,
}
# First save as a tmp file
file_path = os.path.join(
self.checkpoint_dir, "{}_ep{:04d}.pth.tar".format(model_type, self.epoch)
)
with pathmgr.open(file_path, "wb") as f:
torch.save(state, f)
def load_checkpoint(
self, checkpoint=None, fields=None, ignore_fields=None, load_constructor=False
):
"""Loads a network checkpoint file.
Can be called in three different ways:
load_checkpoint():
Loads the latest epoch from the workspace. Use this to continue training.
load_checkpoint(epoch_num):
Loads the network at the given epoch number (int).
load_checkpoint(path_to_checkpoint):
Loads the file from the given absolute path (str).
"""
if isinstance(self.model, (DistributedDataParallel, DataParallel)):
model = self.model.module
else:
model = self.model
model_type = type(model).__name__
if checkpoint is None:
# Load most recent checkpoint
checkpoint_list = pathmgr.ls(os.path.join(self.checkpoint_dir))
checkpoint_list = [
ckpt for ckpt in checkpoint_list if ckpt.split("_")[0] == model_type
]
checkpoint_list = sorted(checkpoint_list)
if checkpoint_list:
checkpoint_path = os.path.join(self.checkpoint_dir, checkpoint_list[-1])
else:
logging.error("No matching checkpoint file found")
return
elif isinstance(checkpoint, int):
# Checkpoint is the epoch number
checkpoint_path = os.path.join(
self.checkpoint_dir,
"{}_ep{:04d}.pth.tar".format(model_type, checkpoint),
)
elif isinstance(checkpoint, str):
# Load from a checkpoint path, usually for finetuning purpose
if pathmgr.isfile(checkpoint):
checkpoint_path = checkpoint
fields = ["state_dict"]
elif pathmgr.isdir(checkpoint):
# Load from a checkpoint directory, usually training result from previous stage
checkpoint_list = pathmgr.ls(checkpoint)
checkpoint_list = [
ckpt for ckpt in checkpoint_list if ckpt.split("_")[0] == model_type
]
checkpoint_list = sorted(checkpoint_list)
if checkpoint_list:
checkpoint_path = os.path.join(checkpoint, checkpoint_list[-1])
else:
logging.error("No matching checkpoint file found")
return
else:
raise NotImplementedError
else:
raise TypeError
# Load network
with pathmgr.open(checkpoint_path, "rb") as f:
checkpoint_dict = torch.load(f, map_location="cpu")
if "model_type" in checkpoint_dict:
assert (
model_type == checkpoint_dict["model_type"]
), "Model is not of correct type."
if fields is None:
fields = checkpoint_dict.keys()
if ignore_fields is None:
ignore_fields = ["cfg"]
# Never load the scheduler. It exists in older checkpoints.
ignore_fields.extend(
["lr_scheduler", "constructor", "model_type", "actor_type", "model_info"]
)
# Load all fields
for key in fields:
if key in ignore_fields:
continue
if key == "state_dict":
logging.info(f"Loading state_dict from {checkpoint_path}")
model.load_state_dict(checkpoint_dict[key])
elif key == "optimizer":
self.optimizer.load_state_dict(checkpoint_dict[key])
else:
setattr(self, key, checkpoint_dict[key])
# Set the net info
if (
key == "constructor"
and load_constructor
and checkpoint_dict["constructor"] is not None
):
model.constructor = checkpoint_dict["constructor"]
if key == "model_info" and checkpoint_dict["model_info"] is not None:
model.info = checkpoint_dict["model_info"]
# Update the epoch in lr scheduler
if key == "epoch":
self.lr_scheduler.last_epoch = self.epoch
# 2021.1.10 Update the epoch in data_samplers
for loader in self.loaders:
if isinstance(loader.sampler, DistributedSampler):
loader.sampler.set_epoch(self.epoch)
return True
class StatValue:
def __init__(self):
self.clear()
def reset(self):
self.val = 0
def clear(self):
self.reset()
self.history = []
def update(self, val):
self.val = val
self.history.append(self.val)
class AverageMeter(object):
"""Computes and stores the average and current value"""
def __init__(self):
self.clear()
self.has_new_data = False
def reset(self):
self.avg = 0
self.val = 0
self.sum = 0
self.count = 0
def clear(self):
self.reset()
self.history = []
def update(self, val, n=1):
self.val = val
self.sum += val * n
self.count += n
self.avg = self.sum / self.count
def new_epoch(self):
if self.count > 0:
self.history.append(self.avg)
self.reset()
self.has_new_data = True
else:
self.has_new_data = False
================================================
FILE: EgoTracks/tools/trainers/starkst_trainer.py
================================================
import logging
import time
import traceback
from collections import OrderedDict
import torch
from detectron2.utils import comm
from torch.utils.data.distributed import DistributedSampler
from tracking.models.stark_tracker.utils.box_ops import (
box_cxcywh_to_xyxy,
box_xywh_to_xyxy,
)
from tracking.models.stark_tracker.utils.merge import merge_template_search
from tracking.models.stark_tracker.utils.misc import NestedTensor
from tracking.tools.trainers.base_trainer import AverageMeter, BaseTrainer, StatValue
from tracking.utils.env import pathmgr
class STARKSTrainer(BaseTrainer):
def __init__(self, cfg):
"""
args:
cfg: config_file
"""
super().__init__(cfg)
self._set_default_settings()
# Initialize statistics variables
self.stats = OrderedDict({loader.name: None for loader in self.loaders})
def _set_default_settings(self):
# Dict of all default values
default = {"print_interval": 10, "print_stats": None, "description": ""}
for param, default_value in default.items():
if getattr(self, param, None) is None:
setattr(self, param, default_value)
def cycle_dataset(self, loader):
"""Do a cycle of training or validation."""
self.model.train(loader.training)
torch.set_grad_enabled(loader.training)
self._init_timing()
for i, data in enumerate(loader, 1):
# get inputs
# if self.move_data_to_gpu:
data = data.to(self.device)
data["epoch"] = self.epoch
data["cfg"] = self.cfg
# forward pass
loss, stats = self.forward_and_compute_loss(data)
# backward pass and update weights
if loader.training:
self.optimizer.zero_grad()
loss.backward()
if self.cfg.TRAIN.GRAD_CLIP_NORM > 0:
torch.nn.utils.clip_grad_norm_(
self.model.parameters(), self.cfg.TRAIN.GRAD_CLIP_NORM
)
self.optimizer.step()
# update statistics
batch_size = data["template_images"].shape[loader.stack_dim]
self._update_stats(stats, batch_size, loader)
# print statistics
if comm.is_main_process():
self._print_stats(i, loader, batch_size)
def forward_and_compute_loss(self, data):
out_dict = self.forward_pass(data, run_box_head=True, run_cls_head=False)
# process the groundtruth
gt_bboxes = data["search_anno"] # (Ns, batch, 4) (x1,y1,w,h)
# compute losses
loss, stats = self.compute_losses(out_dict, gt_bboxes[0])
# Increment global step for TensorBoard logging
self.global_step += 1
return loss, stats
def forward_pass(self, data, run_box_head, run_cls_head):
feat_dict_list = []
# process the templates
for i in range(self.cfg.DATA.TEMPLATE.NUMBER):
template_img_i = data["template_images"][i].view(
-1, *data["template_images"].shape[2:]
) # (batch, 3, 128, 128)
template_att_i = data["template_att"][i].view(
-1, *data["template_att"].shape[2:]
) # (batch, 128, 128)
feat_dict_list.append(
self.model(
img=NestedTensor(template_img_i, template_att_i), mode="backbone"
)
)
# process the search regions (t-th frame)
search_img = data["search_images"].view(
-1, *data["search_images"].shape[2:]
) # (batch, 3, 320, 320)
search_att = data["search_att"].view(
-1, *data["search_att"].shape[2:]
) # (batch, 320, 320)
feat_dict_list.append(
self.model(img=NestedTensor(search_img, search_att), mode="backbone")
)
# run the transformer and compute losses
seq_dict = merge_template_search(feat_dict_list)
out_dict, _, _ = self.model(
seq_dict=seq_dict,
mode="transformer",
run_box_head=run_box_head,
run_cls_head=run_cls_head,
)
# out_dict: (B, N, C), outputs_coord: (1, B, N, C), target_query: (1, B, N, C)
return out_dict
def compute_losses(self, pred_dict, gt_bbox, return_status=True):
# Get boxes
pred_boxes = pred_dict["pred_boxes"]
if torch.isnan(pred_boxes).any():
raise ValueError("Network outputs is NAN! Stop Training")
num_queries = pred_boxes.size(1)
pred_boxes_vec = box_cxcywh_to_xyxy(pred_boxes).view(
-1, 4
) # (B,N,4) --> (BN,4) (x1,y1,x2,y2)
gt_boxes_vec = (
box_xywh_to_xyxy(gt_bbox)[:, None, :]
.repeat((1, num_queries, 1))
.view(-1, 4)
.clamp(min=0.0, max=1.0)
) # (B,4) --> (B,1,4) --> (B,N,4)
# compute giou and iou
try:
giou_loss, iou = self.objective["giou"](
pred_boxes_vec, gt_boxes_vec
) # (BN,4) (BN,4)
except Exception:
logging.error(traceback.format_exc())
giou_loss, iou = torch.tensor(0.0).cuda(), torch.tensor(0.0).cuda()
# Mean IoU
mean_iou = iou.detach().mean()
# compute l1 loss
l1_loss = self.objective["l1"](pred_boxes_vec, gt_boxes_vec) # (BN,4) (BN,4)
# weighted sum
loss = self.loss_weight["giou"] * giou_loss + self.loss_weight["l1"] * l1_loss
# Write losses and mIoU to Tensorboard
if comm.is_main_process():
self.writer.add_scalar("Loss/l1", l1_loss, global_step=self.global_step)
self.writer.add_scalar("Loss/giou", giou_loss, global_step=self.global_step)
self.writer.add_scalar("Loss/total", loss, global_step=self.global_step)
self.writer.add_scalar("mean_iou", mean_iou, global_step=self.global_step)
if return_status:
# status for log
status = {
"Loss/total": loss.item(),
"Loss/giou": giou_loss.item(),
"Loss/l1": l1_loss.item(),
"IoU": mean_iou.item(),
}
return loss, status
else:
return loss
def train_epoch(self):
"""Do one epoch for each loader."""
for loader in self.loaders:
if self.epoch % loader.epoch_interval == 0:
# 2021.1.10 Set epoch
if isinstance(loader.sampler, DistributedSampler):
loader.sampler.set_epoch(self.epoch)
self.cycle_dataset(loader)
if loader.name == "val":
comm.synchronize()
self._stats_new_epoch()
def _init_timing(self):
self.num_frames = 0
self.start_time = time.time()
self.prev_time = self.start_time
def _update_stats(self, new_stats: OrderedDict, batch_size, loader):
# Initialize stats if not initialized yet
if loader.name not in self.stats.keys() or self.stats[loader.name] is None:
self.stats[loader.name] = OrderedDict(
{name: AverageMeter() for name in new_stats.keys()}
)
for name, val in new_stats.items():
if name not in self.stats[loader.name].keys():
self.stats[loader.name][name] = AverageMeter()
self.stats[loader.name][name].update(val, batch_size)
def _print_stats(self, i, loader, batch_size):
self.num_frames += batch_size
current_time = time.time()
batch_fps = batch_size / (current_time - self.prev_time)
average_fps = self.num_frames / (current_time - self.start_time)
self.prev_time = current_time
if i % self.print_interval == 0 or i == loader.__len__():
print_str = "[%s: %d, %d / %d] " % (
loader.name,
self.epoch,
i,
loader.__len__(),
)
print_str += "FPS: %.1f (%.1f) , " % (average_fps, batch_fps)
for name, val in self.stats[loader.name].items():
if self.print_stats is None or name in self.print_stats:
if hasattr(val, "avg"):
print_str += "%s: %.5f , " % (name, val.avg)
# else:
# print_str += '%s: %r , ' % (name, val)
logging.error(print_str[:-5])
with pathmgr.open(self.log_path, "a") as f:
f.writelines(print_str[:-5] + "\n")
def _stats_new_epoch(self):
# Record learning rate
for loader in self.loaders:
if loader.training:
try:
lr_list = self.lr_scheduler.get_lr()
except Exception:
lr_list = self.lr_scheduler._get_lr(self.epoch)
for i, lr in enumerate(lr_list):
var_name = "LearningRate/group{}".format(i)
if var_name not in self.stats[loader.name].keys():
self.stats[loader.name][var_name] = StatValue()
self.stats[loader.name][var_name].update(lr)
for loader_stats in self.stats.values():
if loader_stats is None:
continue
for stat_value in loader_stats.values():
if hasattr(stat_value, "new_epoch"):
stat_value.new_epoch()
class STARKSTTrainer(STARKSTrainer):
def __init__(self, cfg):
"""
args:
cfg: config_file
"""
super().__init__(cfg)
def compute_losses(self, pred_dict, labels, return_status=True):
loss = self.loss_weight["cls"] * self.objective["cls"](
pred_dict["pred_logits"].view(-1), labels
)
# Write losses to Tensorboard
if comm.is_main_process():
self.writer.add_scalar("Loss/cls", loss, global_step=self.global_step)
if return_status:
# status for log
status = {"cls_loss": loss.item()}
return loss, status
else:
return loss
def forward_and_compute_loss(self, data):
# forward pass
out_dict = self.forward_pass(data, run_box_head=False, run_cls_head=True)
# process the groundtruth label
labels = data["label"].view(-1) # (batch, ) 0 or 1
loss, status = self.compute_losses(out_dict, labels)
# Increment global step for TensorBoard logging
self.global_step += 1
return loss, status
================================================
FILE: EgoTracks/tracking/__init__.py
================================================
================================================
FILE: EgoTracks/tracking/config/__init__.py
================================================
================================================
FILE: EgoTracks/tracking/config/config.py
================================================
from .stark_defaults import cfg as default_stark_config
CONFIGS = {"STARK": default_stark_config}
def get_cfg(model_type):
return CONFIGS[model_type].clone()
================================================
FILE: EgoTracks/tracking/config/stark_defaults.py
================================================
from fvcore.common.config import CfgNode
"""
Add default config for STARK-ST Stage2.
"""
cfg = CfgNode()
cfg.OUTPUT_DIR = None
cfg.SEED = -1
cfg.CUDNN_BENCHMARK = False
cfg.MODEL_TYPE = "STARK"
# MODEL
cfg.MODEL = CfgNode()
cfg.MODEL.HEAD_TYPE = "CORNER"
cfg.MODEL.NLAYER_HEAD = 3
cfg.MODEL.HIDDEN_DIM = 256
cfg.MODEL.NUM_OBJECT_QUERIES = 1
cfg.MODEL.POSITION_EMBEDDING = "sine" # sine or learned
cfg.MODEL.PREDICT_MASK = False
cfg.MODEL.WEIGHTS = None
# MODEL.BACKBONE
cfg.MODEL.BACKBONE = CfgNode()
cfg.MODEL.BACKBONE.TYPE = "resnet50" # resnet50, resnext101_32x8d
cfg.MODEL.BACKBONE.OUTPUT_LAYERS = ["layer3"]
cfg.MODEL.BACKBONE.STRIDE = 16
cfg.MODEL.BACKBONE.DILATION = False
# MODEL.TRANSFORMER
cfg.MODEL.TRANSFORMER = CfgNode()
cfg.MODEL.TRANSFORMER.NHEADS = 8
cfg.MODEL.TRANSFORMER.DROPOUT = 0.1
cfg.MODEL.TRANSFORMER.DIM_FEEDFORWARD = 2048
cfg.MODEL.TRANSFORMER.ENC_LAYERS = 6
cfg.MODEL.TRANSFORMER.DEC_LAYERS = 6
cfg.MODEL.TRANSFORMER.PRE_NORM = False
cfg.MODEL.TRANSFORMER.DIVIDE_NORM = False
# TRAIN
# General TRAIN config
TRAIN = CfgNode()
TRAIN.TRAIN_CLS = False
TRAIN.LR = 0.0001
TRAIN.WEIGHT_DECAY = 0.0001
TRAIN.EPOCH = 50
TRAIN.LR_DROP_EPOCH = 40
TRAIN.BATCH_SIZE = 16
TRAIN.NUM_WORKER = 8
TRAIN.OPTIMIZER = "ADAMW"
TRAIN.BACKBONE_MULTIPLIER = 0.1
TRAIN.DEEP_SUPERVISION = False
TRAIN.FREEZE_BACKBONE_BN = True
TRAIN.FREEZE_LAYERS = ["conv1", "layer1"]
TRAIN.PRINT_INTERVAL = 50
TRAIN.VAL_EPOCH_INTERVAL = 20
TRAIN.GRAD_CLIP_NORM = 0.1
TRAIN.CHECKPOINT_PERIOD = 10
# TRAIN.SCHEDULER
TRAIN.SCHEDULER = CfgNode()
TRAIN.SCHEDULER.TYPE = "step"
TRAIN.SCHEDULER.DECAY_RATE = 0.1
TRAIN.LOSS_FUNCTIONS = ["giou", "l1"]
TRAIN.LOSS_WEIGHTS = [2.0, 5.0]
cfg.TRAIN = TRAIN.clone()
cfg.TRAIN_STAGE_1 = TRAIN.clone()
cfg.TRAIN_STAGE_2 = TRAIN.clone()
cfg.TRAIN_STAGE_2.EPOCH = 10
cfg.TRAIN_STAGE_2.CHECKPOINT_PERIOD = 1
cfg.TRAIN_STAGE_2.TRAIN_CLS = True
cfg.TRAIN_STAGE_2.LOSS_FUNCTIONS = ["cls"]
cfg.TRAIN_STAGE_2.LOSS_WEIGHTS = [1.0]
# DATA
cfg.DATA = CfgNode()
cfg.DATA.SAMPLER_MODE = "trident_pro" # sampling methods
cfg.DATA.MEAN = [0.485, 0.456, 0.406]
cfg.DATA.STD = [0.229, 0.224, 0.225]
cfg.DATA.MAX_SAMPLE_INTERVAL = [200]
# We fetch data from different manifold folders
cfg.DATA.COCO_DATA_DIR = ""
cfg.DATA.TRACKINGNET_DATA_DIR = ""
cfg.DATA.CACHED_TRACKINGNET_SEQUENCE_LIST_DIR: str = ""
cfg.DATA.LASOT_DATA_DIR: str = ""
cfg.DATA.GOT10K_DATA_DIR: str = ""
cfg.DATA.CACHED_GOT10K_META_INFO_DIR: str = ""
cfg.DATA.EGO4DLTT_ANNOTATION_PATH = (
"/checkpoint/haotang/data/EgoTracks/annotations/train_v1.json"
)
cfg.DATA.EGO4DLTT_DATA_DIR = "/checkpoint/haotang/data/EgoTracks/clips_frames"
cfg.DATA.DATA_FRACTION = None
# DATA.TRAIN
cfg.DATA.TRAIN = CfgNode()
cfg.DATA.TRAIN.DATASETS_NAME = ["LASOT", "GOT10K_vottrain", "COCO17", "TRACKINGNET"]
cfg.DATA.TRAIN.DATASETS_RATIO = [1, 1, 1, 1]
cfg.DATA.TRAIN.SAMPLE_PER_EPOCH = 60000
# DATA.VAL
cfg.DATA.VAL = CfgNode()
cfg.DATA.VAL.DATASETS_NAME = ["GOT10K_votval"]
cfg.DATA.VAL.DATASETS_RATIO = [1]
cfg.DATA.VAL.SAMPLE_PER_EPOCH = 10000
# DATA.SEARCH
cfg.DATA.SEARCH = CfgNode()
cfg.DATA.SEARCH.NUMBER = 1 # number of search frames for multiple frames training
cfg.DATA.SEARCH.SIZE = 320
cfg.DATA.SEARCH.FACTOR = 5.0
cfg.DATA.SEARCH.CENTER_JITTER = 4.5
cfg.DATA.SEARCH.SCALE_JITTER = 0.5
# DATA.TEMPLATE
cfg.DATA.TEMPLATE = CfgNode()
cfg.DATA.TEMPLATE.NUMBER = 2
cfg.DATA.TEMPLATE.SIZE = 128
cfg.DATA.TEMPLATE.FACTOR = 2.0
cfg.DATA.TEMPLATE.CENTER_JITTER = 0
cfg.DATA.TEMPLATE.SCALE_JITTER = 0
# TEST
cfg.TEST = CfgNode()
cfg.TEST.TEMPLATE_FACTOR = 2.0
cfg.TEST.TEMPLATE_SIZE = 128
cfg.TEST.SEARCH_SIZE = 320
cfg.TEST.SEARCH_FACTOR = 5.0
cfg.TEST.TEST_BATCHSIZE = 8
cfg.TEST.IS_SEARCH_LOCAL = True
cfg.TEST.UPDATE_INTERVALS = CfgNode()
# This attribute will be overwritten during evaluation,
# to correctly set the update_intervals for different datasets
cfg.TEST.UPDATE_INTERVALS.UPDATE_INTERVALS = [100]
cfg.TEST.UPDATE_INTERVALS.LASOT = [200]
cfg.TEST.UPDATE_INTERVALS.GOT10K = [200]
cfg.TEST.UPDATE_INTERVALS.GOT10K_TEST = [200]
cfg.TEST.UPDATE_INTERVALS.TRACKINGNET = [25]
cfg.TEST.UPDATE_INTERVALS.VOT20 = [10]
cfg.TEST.UPDATE_INTERVALS.VOT20LT = [200]
cfg.TEST.UPDATE_INTERVALS.EGO4DVQTracking = [1]
cfg.TEST.UPDATE_INTERVALS.EGO4DLTTracking = [30]
# Eval
cfg.EVAL = CfgNode()
cfg.EVAL.EVAL_DATASETS = ["EGO4DLTTracking"]
cfg.EVAL.OUTPUT_DIR = None
cfg.EVAL.NUM_WORKERS = 8
cfg.EVAL.PRINT_FREQ = 10
cfg.EVAL.GOT10K = CfgNode()
cfg.EVAL.GOT10K.VISUALIZE = False
# Ego4D Lt track dataset config
cfg.EVAL.EGO4DLT = CfgNode()
cfg.EVAL.EGO4DLT.ANNOTATION_PATH = (
"/checkpoint/haotang/data/EgoTracks/annotations/challenge_test_v1_unannotated.json"
)
cfg.EVAL.EGO4DLT.DATA_DIR = "/checkpoint/haotang/data/EgoTracks/clips_frames"
cfg.EVAL.EGO4DLT.SAMPLE_5FPS = True
cfg.EVAL.EGO4DLT.TRACK_MODE = "forward_backward_from_vcrop"
cfg.EVAL.EGO4DLT.USE_VISUAL_CLIP = False
cfg.EVAL.EGO4DLT.EVAL_RATIO = 1.0
cfg.EVAL.EGO4DLT.PRE_DOWNLOAD = False
================================================
FILE: EgoTracks/tracking/dataset/__init__.py
================================================
================================================
FILE: EgoTracks/tracking/dataset/base_image_dataset.py
================================================
import torch.utils.data
from tracking.utils.utils import opencv_loader
class BaseImageDataset(torch.utils.data.Dataset):
"""Base class for image datasets"""
def __init__(self, name, root, image_loader=opencv_loader):
"""
args:
root - The root path to the dataset
image_loader (jpeg4py_loader) - The function to read the images. jpeg4py (https://github.com/ajkxyz/jpeg4py)
is used by default.
"""
self.name = name
self.root = root
self.image_loader = image_loader
self.image_list = [] # Contains the list of sequences.
self.class_list = []
def __len__(self):
"""Returns size of the dataset
returns:
int - number of samples in the dataset
"""
return self.get_num_images()
def __getitem__(self, index):
"""Not to be used! Check get_frames() instead."""
return None
def get_name(self):
"""Name of the dataset
returns:
string - Name of the dataset
"""
raise NotImplementedError
def get_num_images(self):
"""Number of sequences in a dataset
returns:
int - number of sequences in the dataset."""
return len(self.image_list)
def has_class_info(self):
return False
def get_class_name(self, image_id):
return None
def get_num_classes(self):
return len(self.class_list)
def get_class_list(self):
return self.class_list
def get_images_in_class(self, class_name):
raise NotImplementedError
def has_segmentation_info(self):
return False
def get_image_info(self, seq_id):
"""Returns information about a particular image,
args:
seq_id - index of the image
returns:
Dict
"""
raise NotImplementedError
def get_image(self, image_id, anno=None):
"""Get a image
args:
image_id - index of image
anno(None) - The annotation for the sequence (see get_sequence_info). If None, they will be loaded.
returns:
image -
anno -
dict - A dict containing meta information about the sequence, e.g. class of the target object.
"""
raise NotImplementedError
================================================
FILE: EgoTracks/tracking/dataset/base_video_dataset.py
================================================
import torch.utils.data
from tracking.utils.utils import opencv_loader
class BaseVideoDataset(torch.utils.data.Dataset):
"""Base class for video datasets"""
def __init__(self, name, root, image_loader=opencv_loader):
"""
args:
root - The root path to the dataset
image_loader (jpeg4py_loader) - The function to read the images. jpeg4py (https://github.com/ajkxyz/jpeg4py)
is used by default.
"""
self.name = name
self.root = root
self.image_loader = image_loader
self.sequence_list = [] # Contains the list of sequences.
self.class_list = []
def __len__(self):
"""Returns size of the dataset
returns:
int - number of samples in the dataset
"""
return self.get_num_sequences()
def __getitem__(self, index):
"""Not to be used! Check get_frames() instead."""
return None
def is_video_sequence(self):
"""Returns whether the dataset is a video dataset or an image dataset
returns:
bool - True if a video dataset
"""
return True
def is_synthetic_video_dataset(self):
"""Returns whether the dataset contains real videos or synthetic
returns:
bool - True if a video dataset
"""
return False
def get_name(self):
"""Name of the dataset
returns:
string - Name of the dataset
"""
raise NotImplementedError
def get_num_sequences(self):
"""Number of sequences in a dataset
returns:
int - number of sequences in the dataset."""
return len(self.sequence_list)
def has_class_info(self):
return False
def has_occlusion_info(self):
return False
def get_num_classes(self):
return len(self.class_list)
def get_class_list(self):
return self.class_list
def get_sequences_in_class(self, class_name):
raise NotImplementedError
def has_segmentation_info(self):
return False
def get_sequence_info(self, seq_id):
"""Returns information about a particular sequences,
args:
seq_id - index of the sequence
returns:
Dict
"""
raise NotImplementedError
def get_frames(self, seq_id, frame_ids, anno=None):
"""Get a set of frames from a particular sequence
args:
seq_id - index of sequence
frame_ids - a list of frame numbers
anno(None) - The annotation for the sequence (see get_sequence_info). If None, they will be loaded.
returns:
list - List of frames corresponding to frame_ids
list - List of dicts for each frame
dict - A dict containing meta information about the sequence, e.g. class of the target object.
"""
raise NotImplementedError
================================================
FILE: EgoTracks/tracking/dataset/build.py
================================================
import os
from typing import List
import tracking.dataset.transforms as tfm
from torch.utils.data.distributed import DistributedSampler
# datasets related
from tracking.dataset.dataloader import LTRLoader
from tracking.dataset.processing.stark_processing import STARKProcessing
from tracking.dataset.trackingdataset import TrackingDataset
from tracking.dataset.train_datasets.coco_seq import MSCOCOSeq
from tracking.dataset.train_datasets.ego4d_vq import Ego4DVQ
from tracking.dataset.train_datasets.got10k import Got10k
from tracking.dataset.train_datasets.ego4d_lt_tracking import EGO4DLTT
from tracking.dataset.train_datasets.lasot import Lasot
from tracking.dataset.train_datasets.tracking_net import TrackingNet
from tracking.utils.utils import opencv_loader
# TODO: Add other dataset class
def names2datasets(name_list: List, cfg, image_loader=opencv_loader):
assert isinstance(name_list, list)
datasets = []
for name in name_list:
assert name in [
"LASOT",
"GOT10K_vottrain",
"GOT10K_votval",
"GOT10K_train_full",
"COCO17",
"VID",
"TRACKINGNET",
"EGO4DVQ",
"EGO4DLTT",
], f"Dataset {name} not found!"
if name == "LASOT":
datasets.append(
Lasot(
cfg.DATA.LASOT_DATA_DIR,
split="train",
image_loader=image_loader,
data_fraction=cfg.DATA.DATA_FRACTION,
)
)
if name == "GOT10K_vottrain":
datasets.append(
Got10k(
os.path.join(cfg.DATA.GOT10K_DATA_DIR, "train"),
split="vottrain",
image_loader=image_loader,
data_fraction=cfg.DATA.DATA_FRACTION,
cached_sequence_meta_info_dir=cfg.DATA.CACHED_GOT10K_META_INFO_DIR,
)
)
if name == "GOT10K_train_full":
datasets.append(
Got10k(
os.path.join(cfg.DATA.GOT10K_DATA_DIR, "train"),
split="train_full",
image_loader=image_loader,
data_fraction=cfg.DATA.DATA_FRACTION,
cached_sequence_meta_info_dir=cfg.DATA.CACHED_GOT10K_META_INFO_DIR,
)
)
if name == "GOT10K_votval":
datasets.append(
Got10k(
os.path.join(cfg.DATA.GOT10K_DATA_DIR, "train"),
split="votval",
image_loader=image_loader,
data_fraction=cfg.DATA.DATA_FRACTION,
cached_sequence_meta_info_dir=cfg.DATA.CACHED_GOT10K_META_INFO_DIR,
)
)
if name == "COCO17":
datasets.append(
MSCOCOSeq(
cfg.DATA.COCO_DATA_DIR,
version="2017",
image_loader=image_loader,
data_fraction=cfg.DATA.DATA_FRACTION,
)
)
if name == "EGO4DVQ":
datasets.append(
Ego4DVQ(
cfg.DATA.EGO4DVQ_DATA_DIR,
cfg.DATA.EGO4DVQ_ANNOTATION_PATH,
image_loader=image_loader,
data_fraction=cfg.DATA.DATA_FRACTION,
)
)
# if name == "VID":
# datasets.append(
# ImagenetVID(
# cfg.DATA.VID_DATA_DIR,
# image_loader=image_loader,
# data_fraction=cfg.DATA.DATA_FRACTION,
# )
# )
if name == "TRACKINGNET":
datasets.append(
TrackingNet(
cfg.DATA.TRACKINGNET_DATA_DIR,
image_loader=image_loader,
data_fraction=cfg.DATA.DATA_FRACTION,
cached_sequence_list_dir=cfg.DATA.CACHED_TRACKINGNET_SEQUENCE_LIST_DIR,
)
)
if name == "EGO4DLTT":
datasets.append(
EGO4DLTT(
cfg.DATA.EGO4DLTT_DATA_DIR,
cfg.DATA.EGO4DLTT_ANNOTATION_PATH,
image_loader=image_loader,
data_fraction=cfg.DATA.DATA_FRACTION,
)
)
return datasets
def build_dataloaders(cfg, local_rank=-1):
# Data transform
transform_joint = tfm.Transform(
tfm.ToGrayscale(probability=0.05), tfm.RandomHorizontalFlip(probability=0.5)
)
transform_train = tfm.Transform(
tfm.ToTensorAndJitter(0.2),
tfm.RandomHorizontalFlip_Norm(probability=0.5),
tfm.Normalize(mean=cfg.DATA.MEAN, std=cfg.DATA.STD),
)
transform_val = tfm.Transform(
tfm.ToTensor(), tfm.Normalize(mean=cfg.DATA.MEAN, std=cfg.DATA.STD)
)
# The tracking pairs processing module
output_sz = {"template": cfg.DATA.TEMPLATE.SIZE, "search": cfg.DATA.SEARCH.SIZE}
search_area_factor = {
"template": cfg.DATA.TEMPLATE.FACTOR,
"search": cfg.DATA.SEARCH.FACTOR,
}
center_jitter_factor = {
"template": cfg.DATA.TEMPLATE.CENTER_JITTER,
"search": cfg.DATA.SEARCH.CENTER_JITTER,
}
scale_jitter_factor = {
"template": cfg.DATA.TEMPLATE.SCALE_JITTER,
"search": cfg.DATA.SEARCH.SCALE_JITTER,
}
data_processing_train = STARKProcessing(
search_area_factor=search_area_factor,
output_sz=output_sz,
center_jitter_factor=center_jitter_factor,
scale_jitter_factor=scale_jitter_factor,
mode="sequence",
transform=transform_train,
joint_transform=transform_joint,
)
data_processing_val = STARKProcessing(
search_area_factor=search_area_factor,
output_sz=output_sz,
center_jitter_factor=center_jitter_factor,
scale_jitter_factor=scale_jitter_factor,
mode="sequence",
transform=transform_val,
joint_transform=transform_joint,
)
# Train sampler and loader
num_template = getattr(cfg.DATA.TEMPLATE, "NUMBER", 1)
num_search = getattr(cfg.DATA.SEARCH, "NUMBER", 1)
sampler_mode = getattr(cfg.DATA, "SAMPLER_MODE", "causal")
train_cls = getattr(cfg.TRAIN, "TRAIN_CLS", False)
print("sampler_mode", sampler_mode)
dataset_train = TrackingDataset(
datasets=names2datasets(cfg.DATA.TRAIN.DATASETS_NAME, cfg, opencv_loader),
p_datasets=cfg.DATA.TRAIN.DATASETS_RATIO,
samples_per_epoch=cfg.DATA.TRAIN.SAMPLE_PER_EPOCH,
max_gap=cfg.DATA.MAX_SAMPLE_INTERVAL,
num_search_frames=num_search,
num_template_frames=num_template,
processing=data_processing_train,
frame_sample_mode=sampler_mode,
train_cls=train_cls,
)
train_sampler = DistributedSampler(dataset_train) if local_rank != -1 else None
shuffle = False if local_rank != -1 else True
loader_train = LTRLoader(
"train",
dataset_train,
training=True,
batch_size=cfg.TRAIN.BATCH_SIZE,
shuffle=shuffle,
num_workers=cfg.TRAIN.NUM_WORKER,
drop_last=True,
stack_dim=1,
sampler=train_sampler,
)
# Validation samplers and loaders
dataset_val = TrackingDataset(
datasets=names2datasets(cfg.DATA.VAL.DATASETS_NAME, cfg, opencv_loader),
p_datasets=cfg.DATA.VAL.DATASETS_RATIO,
samples_per_epoch=cfg.DATA.VAL.SAMPLE_PER_EPOCH,
max_gap=cfg.DATA.MAX_SAMPLE_INTERVAL,
num_search_frames=num_search,
num_template_frames=num_template,
processing=data_processing_val,
frame_sample_mode=sampler_mode,
train_cls=train_cls,
)
val_sampler = DistributedSampler(dataset_val) if local_rank != -1 else None
loader_val = LTRLoader(
"val",
dataset_val,
training=False,
batch_size=cfg.TRAIN.BATCH_SIZE,
num_workers=cfg.TRAIN.NUM_WORKER,
drop_last=True,
stack_dim=1,
sampler=val_sampler,
epoch_interval=cfg.TRAIN.VAL_EPOCH_INTERVAL,
)
return loader_train, loader_val
================================================
FILE: EgoTracks/tracking/dataset/data_specs/README.md
================================================
# README
## Description for different text files
GOT10K
- got10k_train_full_split.txt: the complete GOT-10K training set. (9335 videos)
- got10k_train_split.txt: part of videos from the GOT-10K training set
- got10k_val_split.txt: another part of videos from the GOT-10K training set
- got10k_vot_exclude.txt: 1k videos that are forbidden from "using to train models then testing on VOT" (as required by [VOT Challenge](https://www.votchallenge.net/vot2020/participation.html))
- got10k_vot_train_split.txt: part of videos from the "VOT-permitted" GOT-10K training set
- got10k_vot_val_split.txt: another part of videos from the "VOT-permitted" GOT-10K training set
LaSOT
- lasot_train_split.txt: the complete LaSOT training set
TrackingNnet
- trackingnet_classmap.txt: The map from the sequence name to the target class for the TrackingNet
================================================
FILE: EgoTracks/tracking/dataset/data_specs/got10k_train_full_split.txt
================================================
3784
8998
3906
1631
8277
8358
2338
7938
2988
8302
2662
2663
2825
7447
4781
2218
6348
5860
4517
2819
8075
5391
116
3606
7976
7941
1024
4519
1970
557
8579
6908
993
7204
1991
3674
8781
6840
5
3225
3763
8688
6778
5777
4794
2744
8126
3864
1733
2923
6829
701
683
2081
1831
2404
1459
2741
5972
3618
7462
2654
103
2174
6224
2989
2506
2766
5912
2699
3295
3986
609
4895
6673
801
1098
1602
2490
3129
8476
3186
7355
4784
4270
1812
4226
2267
8873
6544
6112
2381
4752
753
3776
6511
6016
731
2559
7369
5866
563
7731
1105
5603
50
4238
2208
8725
4994
4719
1444
8807
7298
8139
8760
8173
2332
4131
5207
1065
8562
3992
4024
2188
9095
6765
1707
6105
6922
5362
1486
7898
4135
6574
1551
998
6565
8127
8927
2544
4365
510
768
3535
3875
6808
2931
487
1088
4451
368
2470
8111
3493
7338
8281
6390
1271
4373
3667
3494
3757
2966
3756
7840
6315
7827
3300
6261
4163
2217
6549
94
7236
9136
1857
6691
3470
6271
807
516
9311
6098
3144
8420
5425
5694
2643
6696
6072
7285
3781
903
8522
6092
5979
2622
2529
855
3420
3261
8953
7866
2492
3157
359
1520
2642
7452
759
36
8931
1744
4350
1089
9199
4295
1889
1908
4868
4498
1968
9103
3273
8723
7413
4114
5584
4874
1427
5211
7618
1542
1353
8158
4168
3200
6345
8560
5619
5953
3158
8849
5831
1411
7294
8103
6539
7397
1006
5450
3119
4274
5352
4571
2319
4217
4976
902
1814
2651
3299
3398
982
2428
5793
1346
7057
3737
7329
4449
2110
7405
1773
958
3901
4127
8234
2994
7066
1289
2995
5871
3556
9085
846
2366
585
7032
5516
5230
3481
2732
6658
7423
1855
6384
3554
5823
4948
7058
4667
5377
2503
7694
9191
9144
655
3409
62
8019
8970
5523
7403
3379
2323
4833
5750
3178
6548
8891
7501
3280
7404
343
2171
8397
1367
8611
6118
6603
3729
7182
9048
7733
5642
7141
3335
4845
5449
3467
6250
163
5168
2040
5339
3609
8352
3426
8567
769
187
6151
6437
7028
8507
3970
9146
2068
5028
7492
1661
2815
2469
2563
3814
8430
4305
3479
5678
9115
4132
1211
5459
4814
545
4556
238
4296
2724
1260
2581
6087
4632
4313
380
1209
5447
3032
7942
8943
806
2432
6130
4314
2131
9045
6531
5706
6747
7724
2017
3292
5469
2743
424
4233
7643
8619
5192
4516
9324
3537
9152
8058
7526
8711
1949
5982
1732
6702
7027
6388
7012
328
2130
452
306
7669
3134
5761
3703
44
4189
695
7672
5224
9215
5644
3143
3704
5443
2348
7177
2328
4725
354
1418
7810
7746
9002
5759
7226
4535
9160
4385
5397
7249
2936
3204
6287
385
2371
2738
3636
9033
2246
2680
6940
4310
2054
9250
9080
4568
5586
4469
2038
3410
7900
4332
6108
678
3319
9079
1054
4048
4751
1320
6890
7931
1398
4349
5299
5025
7932
5738
7787
4590
4020
1274
2488
8497
3372
8965
3219
799
3664
6500
7093
4362
6205
4244
4652
1964
5945
6434
2031
2684
6632
4588
8271
3232
5782
2904
6789
5636
7200
3632
5435
8203
3480
4786
7579
3351
1921
798
3646
3094
4359
1654
5975
376
5965
780
7821
9224
6738
3185
2133
6248
5996
2834
531
5688
2448
7925
7974
5924
6401
5778
6594
5442
8336
4522
3770
6340
6328
4946
4161
2954
2588
8465
2885
1606
5787
3407
3121
7310
1413
1932
4787
2579
3325
508
5610
6480
4290
479
3792
6628
2545
6717
6972
2665
6730
3547
6845
5929
3540
4356
8993
1052
2235
8356
3403
8818
8260
572
4159
1180
5348
941
7948
2676
3539
4866
6422
8365
3217
1310
2059
9177
1419
2283
8892
8162
1212
6277
3725
7806
6149
7874
718
6888
7118
277
656
8763
8289
4759
5854
8659
7710
3145
5981
1881
5799
6947
1609
6396
2631
2887
318
2550
6132
1736
2907
7816
48
4304
8133
6698
2760
7779
7732
7642
1154
7242
711
9262
539
8033
7440
1913
5480
5570
8594
8772
4654
8974
6128
6183
1071
8449
2142
2298
524
1695
820
4053
8241
1856
8641
3981
217
1063
9286
3152
221
5461
1270
2006
7164
1199
6951
5604
5400
5309
3498
6407
6661
7097
8165
5169
3852
7070
5702
4344
6648
6904
3272
7119
5795
2365
2659
353
5444
6968
2755
1924
2098
2972
6006
5865
8740
2418
3401
7856
5841
598
836
1147
931
8897
0
6049
1837
865
1871
6116
6831
5773
3587
303
1883
2163
3070
1308
7953
6300
6909
853
7301
3279
123
7186
3194
5553
5133
1931
4622
6075
4891
5722
5693
8
2339
6596
71
379
4506
4370
1238
2707
3344
4254
8767
1726
325
4148
5438
5357
548
1332
6824
2290
2335
3146
2594
2315
3389
3885
2621
4116
5389
7412
7222
4894
8595
2000
4978
4721
6444
3796
9321
2236
6409
1523
1468
9249
8270
2341
2874
174
4757
4502
4703
9034
9108
5451
2619
5022
9158
490
6540
1466
2962
8771
3036
2712
4539
1581
5638
9246
4308
4363
4647
4470
1636
2511
1311
6560
7519
8027
9217
6464
6364
3779
4822
3563
3982
5896
5510
6655
1524
2846
3137
621
141
1887
6567
8921
4671
6052
8445
8699
7349
3553
2117
7651
5034
5383
649
3818
9022
8414
1012
8159
5081
8571
4765
9135
4361
4073
9142
727
2835
8229
3989
4490
4923
5477
1638
3643
712
9044
2230
499
7166
96
3172
8431
8401
1470
6356
8817
927
4212
2152
1795
3812
4949
1219
1538
3029
6481
9042
7775
7742
423
2085
7715
4541
9061
5916
3950
7420
4878
7406
7046
7808
4911
8804
6927
8820
3264
300
8670
2979
252
4407
3383
4688
8504
6723
26
3837
2489
4137
8209
229
6490
2364
9016
1763
1728
338
8335
9063
5280
2791
641
5454
4581
5420
4548
2840
8508
3463
7231
7619
2560
1755
6201
165
1471
6279
5806
6867
5890
2396
3416
1981
6073
5872
3045
4182
7607
3318
4414
2998
6553
7139
5624
2123
3666
723
5110
6932
8200
2222
8399
1041
4138
1594
3569
9253
393
7940
8004
1475
6759
5393
1107
2597
878
9309
7576
5250
1759
3142
2015
571
3921
1255
7080
893
2160
1355
82
1562
9153
8583
4085
4644
7196
9165
3558
4550
6374
7826
8602
4146
9257
6083
874
8383
3731
3374
3653
8222
7344
470
1813
4478
6871
7245
6866
3998
7433
276
1915
1988
8168
2518
2686
831
6143
5205
8718
1703
7729
2077
7983
8450
1195
9232
507
7989
6974
4054
5828
8655
6679
5245
7783
5886
9098
6491
8782
3525
6542
131
8110
9186
9074
4933
9035
2607
4
2057
6273
2711
5829
3382
2696
3043
2048
619
2499
5295
1162
7807
3694
2194
3149
1940
7934
840
3592
8237
4731
1324
8486
8726
8573
2928
9078
2272
2564
1370
5911
7434
8026
407
7546
2004
5849
3034
7887
3425
1118
926
3430
1544
5902
2282
1124
2334
129
1372
4842
6473
4382
1028
415
8269
8073
6910
2796
3038
5735
5080
2852
6306
8842
9188
3637
1066
532
928
5485
2838
6753
9008
7984
2816
8819
7103
5977
5044
2064
2599
4973
382
3249
6446
6638
852
1724
3368
892
3250
8258
7962
4300
1616
167
8855
2090
4424
879
5136
5350
2635
7828
8506
63
3004
3847
3676
1184
1705
6745
1263
5020
746
1888
7036
1033
3914
5433
3905
4641
8909
228
4801
3766
8085
643
6914
9280
3013
5657
3696
1590
2920
8282
2403
416
911
3849
4215
1120
5490
296
2306
3140
3742
4819
6153
6414
760
3000
7498
7108
6429
3031
5314
751
3357
5808
7505
98
7652
4027
6257
3943
1799
8577
5577
4969
9163
2025
6061
4026
5732
588
7017
1415
4961
4940
7152
538
706
2802
8983
3375
1246
6593
5837
1789
7939
4997
5939
2411
6133
199
7593
1702
5406
6082
2359
2912
6109
100
8149
5470
2807
3384
6413
3362
5621
6019
9241
9268
7703
4111
7967
5458
7181
5492
1112
6729
4577
106
8853
3774
979
7082
4610
1853
9003
9292
2867
6262
2245
3460
1557
767
4796
8147
2658
5769
6985
7065
421
7990
3289
1540
9316
2251
6896
5947
4965
2652
4480
963
9047
7168
7824
3976
6210
7018
7179
5016
7789
6102
6828
7659
9109
9071
8115
7628
7110
16
7513
835
939
4078
2351
2322
3881
4945
560
6837
6094
6475
7901
3
771
8029
3135
8044
7127
3741
5156
7030
4906
113
3747
7042
5232
5225
3002
4747
6879
5379
4886
7192
4184
1896
1834
8689
3665
2957
6913
8009
4851
6420
7987
828
3003
8884
8815
3198
8008
194
6251
3303
3934
395
1285
4169
1648
1347
3600
4631
509
211
6230
7241
8250
2219
2582
8353
7790
7583
4462
3904
9004
6942
1704
5686
8051
2981
5511
6182
7088
1699
1222
3455
6189
1528
5197
6221
7893
3283
2837
7773
8766
2942
8021
614
4102
7362
1786
400
133
556
3127
5237
3727
1440
3873
6322
8448
6285
8696
8800
4009
3386
454
4847
5685
9093
246
1314
5895
6863
4302
4260
8405
8417
7116
255
3223
4737
7852
6337
814
710
1094
6103
5809
5882
6336
4974
1499
2806
3744
2664
2436
4482
8665
8918
1076
8676
5725
9248
4755
1447
9328
5500
78
2653
792
6854
6093
6172
3378
4492
5529
5476
3846
1391
383
4289
3883
2648
3265
2525
5402
4599
6870
6877
4413
2464
8519
2521
1839
5822
5664
7257
5375
6852
6764
5182
8914
3015
8509
3080
4562
8979
6215
6643
8601
6096
4812
5246
7862
527
7849
6737
12
2468
7961
275
27
5932
3840
7341
4996
8564
2154
3788
6138
7831
4442
757
4464
1170
2568
19
323
6584
7675
3441
2067
9027
2486
4379
4744
1737
7563
301
3907
4742
6857
1221
9284
8458
8236
2897
4004
1526
5345
4423
6246
8578
1057
3711
4986
4785
3997
7311
4788
107
8387
2041
2608
8628
5830
6031
783
6817
3293
541
773
8473
2501
7247
5667
804
483
1639
696
6060
5429
5762
1527
7342
1329
6225
7895
381
8030
8520
8362
4734
3526
9273
2039
4142
5084
875
6905
8968
5275
3052
650
7509
232
2595
3631
1810
4355
8315
8908
1777
4834
3164
2336
1543
6212
8346
3024
3719
1242
6265
8101
3133
6150
6358
3316
4089
1647
4629
7117
2596
5366
1225
6371
624
2209
1428
1158
7648
466
8765
802
153
4639
3657
6482
9320
2693
6591
3294
2617
5052
6305
3227
8784
7170
93
5868
6716
1671
178
2703
954
3254
2262
5046
5743
8647
6393
7706
6604
3728
6978
7489
7474
8754
2740
2233
6038
1491
8814
2080
2358
5944
5653
1164
9259
4518
7343
5748
3897
923
5967
2677
3503
1202
4966
1836
1863
6634
1962
9096
9064
977
4049
1464
658
536
3402
8064
1309
259
7999
8122
910
224
6152
7142
6070
7523
8411
2408
6766
9214
9312
8325
6192
626
6025
6240
8708
4630
6777
1075
8906
408
9269
6236
9067
2514
8568
2324
156
3136
3530
7878
7308
4335
2065
3845
4453
3356
1450
371
7219
5171
201
8642
2099
477
1603
8339
7430
3061
235
8291
1133
8474
7035
8653
989
4569
9092
8347
3102
1743
9086
5140
7438
1530
4342
2460
7646
5047
5071
5430
6944
610
2803
1448
4696
6156
4386
4248
4256
994
2112
805
8011
8276
8999
4956
1712
2795
7553
6436
2158
9083
3184
5784
4428
612
5288
6222
1365
5074
6848
575
5213
2175
4240
351
2086
2656
5150
9255
8189
7735
1261
1344
4097
8674
2984
4235
5998
6488
537
1267
7486
7124
6245
7955
7337
5436
1194
8226
209
1710
7906
4357
4139
5679
2584
2854
1004
8246
8586
5087
1878
4926
6637
3197
7757
8249
4055
6502
1248
990
3928
2770
2751
1020
6426
4190
6839
2671
884
3871
9212
4179
3394
10
5861
5316
6869
2985
8905
8559
4457
2480
2313
4100
4395
6835
7799
7890
2785
5468
7302
5862
1803
6376
3171
8591
717
7053
1655
4489
2522
2921
8555
1984
895
8949
1305
738
7606
112
3042
1325
437
3167
3340
511
3689
5813
8982
69
4421
7150
550
8829
8685
3147
8956
3166
7023
8633
3308
2014
3573
3880
4045
2069
6051
4950
702
6664
8418
2454
6181
4853
4166
7022
7418
3605
9181
7172
5031
4589
7858
6586
6351
8334
7504
634
3759
1890
890
6959
5085
4919
2161
1191
256
3610
7079
3427
4071
7323
2982
7263
7444
4251
5846
4864
3649
4311
7461
8120
4582
6373
2805
4872
4869
5493
5867
2670
7099
30
8933
930
7919
501
7261
5289
7449
7772
3613
7848
3196
474
205
841
2611
6185
3088
409
7239
5938
7871
1343
6705
1027
5596
2199
9113
5471
6134
838
2345
8359
4061
1474
3229
270
4245
1979
5995
1517
8652
4006
4880
6137
4693
2528
6996
2926
5798
2477
2549
1128
3341
6014
4479
2861
4208
5175
5174
5118
3736
5463
1588
2327
8380
7982
1514
1058
4586
6608
7985
3044
1822
3628
6851
549
1811
2184
2601
4608
8922
2540
6659
3859
307
3650
3767
8167
505
4366
4824
5520
461
1933
2401
8106
2055
7844
8544
8838
4797
7419
6686
7670
6039
5672
5141
6543
206
5252
4718
888
1601
3218
5114
713
4022
4419
6708
397
425
6612
5057
1729
6573
4729
4080
1034
2961
534
8194
5598
9218
2424
329
4154
1597
922
109
8823
3578
9038
8437
3307
128
8032
1412
7333
8762
8851
8865
3056
468
3808
3064
8798
7052
7767
9231
1086
2162
6566
2109
3439
6122
3642
7696
8610
5279
1808
8687
8377
817
8714
6066
4008
3640
6015
1021
7601
4855
6017
87
7071
2730
7268
3614
6084
6117
6924
9102
2829
375
8724
2095
22
1541
2970
633
139
451
4521
179
1396
3876
5824
8020
426
4982
4172
1157
190
4859
1455
3110
3323
9104
858
6719
6428
4495
8551
2141
3984
3066
67
4299
5821
8444
6581
6097
7090
7781
8944
3085
8606
2114
5355
8901
1461
3301
422
7000
4820
5790
1379
7536
4199
8736
8991
5241
1698
1294
1753
196
2987
8680
4658
4144
8639
6441
8255
8156
3677
6385
6520
7700
3760
6001
1144
5478
7394
8057
5018
4232
5235
6844
3111
8802
867
949
7843
573
2278
6801
7629
2714
5105
6946
2697
5315
1571
8677
2537
4374
3833
7820
3750
2033
6526
3884
8706
7195
417
3603
3001
6284
5873
5718
8576
8457
3589
5839
459
3626
6342
8729
6933
607
6053
8228
3773
1805
6365
5142
6069
1389
9026
570
4614
5712
5533
9222
2821
1897
819
766
4060
4902
5905
6842
5446
1277
4303
2836
934
1014
7822
7494
3466
665
1047
5881
3328
4664
315
1315
1462
8616
7725
2756
5749
1730
8184
4567
5065
7499
8867
1304
3669
9192
410
8177
6710
1210
2329
8443
3911
1899
7686
3315
7190
6180
3116
5341
4394
8337
9182
6969
5715
2172
1742
2782
3715
9195
7960
2517
4890
8294
2337
8014
3353
7475
2193
4843
8831
4200
4653
6196
6957
3063
2996
8959
8973
6529
3457
5274
8002
6823
6154
5561
1780
9318
7657
1758
6503
7678
3274
1625
4327
3236
8575
3155
4707
4331
1494
8756
3174
1074
8116
8295
8311
3048
3752
6050
6483
8003
9175
4674
1642
2556
6166
7165
8441
5413
3990
1640
1778
7500
8304
1395
4315
5949
3364
242
5763
1036
249
2430
7426
8131
411
6267
2045
6606
899
8065
9052
7507
5779
5616
2107
5408
2980
6310
5776
4328
821
3251
2354
7076
1700
5313
6736
79
8212
3959
5677
7545
160
6790
6859
3659
6770
1106
8846
956
7472
2050
8099
4795
8053
9293
7037
1646
9307
1069
5322
5332
2708
8977
917
2419
184
2105
1578
3923
5780
1903
2512
429
5582
493
4972
445
8286
555
320
8300
322
617
3413
4459
525
5631
6314
5157
5300
8545
182
1031
4429
2495
7586
1534
3099
3916
3738
1919
535
2119
1299
177
1838
2159
4099
8285
5172
8540
6020
7683
3073
3115
1673
3087
3488
2416
1894
5942
3597
5834
2007
43
1779
4174
2023
2546
2429
9006
436
4214
4536
3693
5426
6767
5903
4368
2170
5051
7490
7882
2859
5035
7835
5372
7122
925
3253
6338
8393
4093
5848
7588
2683
8049
5403
5894
8745
8550
2941
3484
9029
4461
8022
725
2355
1619
3030
1975
5623
2415
1957
6141
9278
3226
3062
5670
7326
8759
8496
6619
8187
8262
6199
951
7183
668
2388
4698
5681
8240
2851
871
4988
9084
9089
3162
1167
8244
5227
6461
2831
776
5010
5770
5282
3574
5102
1278
2281
5455
305
4628
4663
9119
7487
8746
4889
6569
1175
102
2386
8940
2479
5566
53
8833
1918
8001
321
6786
6861
4358
2771
7467
975
4777
605
3543
2600
7584
9299
4530
6477
7364
7328
183
4761
7543
304
1196
4623
7839
2139
5519
1953
533
5989
7590
7428
6346
6162
1091
1946
6260
4405
5676
8924
7171
8409
1866
6379
3411
2387
3051
7398
154
1185
6442
6004
1611
2165
9018
8323
616
3995
8952
1533
7853
4194
213
789
4991
3675
7456
5752
175
7556
4195
907
2248
9057
8467
4594
1017
7968
880
7446
3304
1666
4942
3867
4802
9156
6357
4621
887
6213
5261
1336
521
8928
1818
7864
4792
6742
157
1593
823
7235
5303
5633
1100
1692
8047
5993
1460
6714
1630
6440
6307
3608
292
212
401
5974
7107
8301
8342
2720
4583
2757
7315
833
4466
4236
1282
5273
2149
287
8484
2380
8119
7167
737
5076
6598
3596
5382
2650
8980
3421
1356
1954
7823
1172
2226
1941
6136
7274
2256
4928
324
1407
4410
4579
1061
7113
486
862
3435
6956
2873
1465
6113
8225
8512
6806
272
6008
1241
88
5662
3555
689
8733
2812
7453
6282
420
2471
4477
7495
1445
594
6939
1564
8704
8590
7992
7374
5796
9298
4213
5713
5864
326
5513
402
464
608
1951
8640
8180
3347
3459
4162
2690
7478
5856
5240
2389
3022
602
5547
1798
1345
9276
599
3673
3277
1635
8625
1567
5928
636
5671
2896
3477
412
7575
4201
685
4760
1229
4275
8960
3123
4471
5941
3355
3999
7157
6354
7741
6850
8783
1943
6769
7330
8721
8477
1381
848
778
6408
2644
5817
1441
1723
2144
2776
2368
120
367
8839
8749
5353
4158
3148
9114
1233
9228
8857
2895
1286
200
6755
5125
5857
1657
7658
5097
5000
942
7020
586
784
7078
6194
8658
8957
9325
1851
8911
4862
7004
1186
8824
1651
2999
561
7639
4316
5086
3187
7912
2624
9183
8487
5089
8475
7554
4031
6297
6059
5329
115
2058
7650
7634
7121
2485
7805
2241
7713
4352
2409
1026
2745
4549
6474
5124
5201
6556
6617
9091
3945
8402
5648
5257
2192
4901
7750
6131
6027
6352
4625
1254
5498
3720
8261
3939
5576
3685
6713
8472
991
8354
8068
5655
5997
1029
7506
6740
2575
2990
4898
583
7402
3290
5388
6715
8235
5361
4970
1363
3338
5731
9014
5358
2216
2856
635
1193
3705
6334
7666
5270
1384
6368
8604
3564
1937
2481
1341
721
2100
3958
6551
3813
2592
7980
5385
319
2357
8761
8910
8693
1204
489
4827
8024
7832
6427
3895
89
9068
8067
1708
1111
8963
1902
9251
5719
9143
5537
9169
77
5365
1840
485
4456
2841
1169
3271
7144
6886
9140
7173
6003
1659
1807
8371
2439
274
4660
3448
6623
347
2103
3400
2106
9073
8169
3687
3305
4416
8454
6635
332
2433
2909
3839
4063
1944
6509
1296
7770
1880
6610
4075
9331
4484
302
418
4219
1333
2350
6498
8424
4694
4883
5269
6580
5007
6722
1669
8470
2571
513
3810
7049
6332
7363
3532
8456
2097
297
8841
7180
714
1587
5234
4268
2320
7372
660
8503
1668
8847
1101
7275
3336
6460
722
7782
3947
502
4258
2132
1835
181
3841
427
3446
2551
8324
6963
4284
7297
7577
3399
9148
8213
5656
8440
851
657
2446
4292
6992
976
1108
2681
3237
8582
377
5969
5287
9209
8523
7178
7833
6175
2126
3023
5090
7491
6640
6077
2221
2780
1694
4094
144
6161
3203
7123
749
3625
3848
980
2270
7819
3672
7689
7203
2718
1714
2884
3474
3802
3851
4224
7237
5415
7998
7207
4106
9036
1046
8731
5070
6818
4592
6056
693
1328
3309
5791
2629
2736
202
388
7886
4417
8786
8822
4035
7718
8492
5505
1192
4388
8941
5019
7538
6732
7296
6389
5923
1405
3278
3917
1688
8374
443
4037
9099
5190
6402
4177
9310
7747
4348
7197
4844
4998
5609
4345
29
3332
8648
4107
346
2577
3941
1215
3782
8252
4706
2675
3790
7459
6164
7316
1149
6687
582
3139
5040
7645
3882
7322
4034
1861
4701
8757
3208
8801
6349
8907
1823
4528
4789
143
4746
9234
3866
9245
1911
1366
4393
2061
859
1959
6967
3138
7382
9031
6237
845
80
6911
7163
5229
4736
8738
33
8543
357
3193
7262
4448
6796
6793
3321
7569
6411
7692
7340
1417
5847
3836
2678
1188
8727
223
8615
7417
5771
3170
8061
2935
8263
8257
6883
1276
1239
812
6258
3922
7525
8117
3039
603
8554
7573
2787
3445
5115
3478
962
3961
6570
7722
216
2797
5154
2530
4904
2405
7542
4021
3252
5370
9302
236
4532
1361
3373
1716
2183
1583
3783
868
1687
8925
1433
6198
8208
6367
7603
882
3469
1645
7654
1176
4231
150
7997
5456
7031
4375
8840
5634
6945
705
3442
4774
3822
7148
1922
8459
6249
8713
6197
8599
6071
6756
1634
950
5640
7749
5920
6622
4783
7837
7479
7229
3919
1797
5272
8945
4908
5439
6903
5833
6930
8197
9261
1711
5483
6046
4285
8852
7409
8971
8278
7534
7792
2444
7496
8063
1665
248
3894
4585
1982
66
6651
4850
1240
7511
7524
9258
2075
3979
4714
7592
965
2919
8239
1842
8013
4750
2344
6155
3468
31
2087
1599
1573
5883
7613
195
3749
644
2189
8779
8743
9005
8081
1040
7785
5820
8830
5495
4867
2710
3843
491
7153
6217
1148
4741
1761
5484
3423
5474
6916
5876
7252
1739
8930
6647
5198
4903
8488
7366
2774
2726
2385
7625
3179
2211
8845
6600
399
6810
3447
6684
4915
8368
1867
2325
2101
1335
7734
3722
7437
3716
7025
4000
6897
1408
7154
5013
2204
9233
4225
3817
1877
9161
2197
6991
3390
280
1892
1612
7753
2801
7246
7909
6229
9314
8407
1436
3879
6432
6849
5326
5327
8535
7910
7745
5545
7916
207
1783
6158
8517
7361
8070
6430
119
6146
4183
1083
7385
4497
9133
1686
3765
5099
595
8046
4418
4043
2361
7915
9149
1717
1141
6375
1018
5602
1262
7485
9178
6629
3339
8934
4648
7988
6252
3440
864
5418
3874
7280
6191
8388
4323
6792
4324
2232
7228
8684
7813
6187
6678
3177
3534
4953
4402
7739
6319
2414
8700
5946
8238
4533
6917
4167
4618
2115
2268
3081
1247
4001
8580
7636
3101
2195
1559
3714
2484
7188
6028
7530
2828
1977
3238
6496
2340
110
3247
7532
7541
924
1632
484
4487
4439
6447
1319
4944
6347
1791
2285
8087
5452
91
1166
162
5185
7933
4743
1627
7259
8620
8525
8207
5845
9011
5525
4269
4700
1824
8186
8872
8299
3957
8242
4558
6439
2666
5943
6958
8112
5121
8806
6170
7688
3486
2082
7436
2778
1096
786
2206
5170
1443
6030
3312
9151
8485
6404
8498
2883
8961
2280
8341
9137
4337
2809
2445
809
8298
8643
8316
4951
6853
1572
3215
3938
2249
6515
1337
8328
7712
1429
4117
5441
3230
4152
7225
3513
6953
1507
348
3639
5739
2673
1550
6301
1652
8453
204
6833
8056
2200
5217
1854
4711
7368
4572
4032
7531
1013
3634
2875
6058
8307
7609
1766
904
667
5410
6578
3601
1664
3233
7390
8178
4486
4952
4427
4876
9166
3107
2772
6295
5001
5296
3371
6518
6327
854
1615
8288
1912
5927
6202
5814
9032
1059
3214
6547
7038
5781
6926
4390
6114
1622
4318
5803
5984
736
3561
6554
5045
4277
7386
9081
8462
2034
4955
2701
932
1298
7758
7176
9205
2276
3077
3803
3562
8054
7946
295
1843
7728
1629
7768
3663
6363
2971
431
9285
2513
1116
3656
4529
6366
5758
6339
8398
816
4153
648
2536
1826
7870
8113
7730
7101
6555
9256
6774
1072
4578
2598
3604
5880
861
8273
3350
3117
4685
9219
4334
5165
2035
7224
4066
4253
4447
3815
5038
253
3658
2252
330
3967
6443
2143
7336
6135
593
2734
8390
4655
7800
1399
1173
5618
2822
7905
7503
4431
2443
1568
3909
1974
2496
4772
5164
4105
2138
2864
3799
3924
4882
8245
1585
5528
5692
5730
5832
137
3175
2894
2062
3899
2752
4028
2113
5411
293
2647
730
3758
1667
8879
9303
6653
3698
3968
3053
503
2150
4645
2257
4627
8303
7966
8742
4692
5901
8547
2277
5546
986
370
4697
8712
4804
4881
1182
6650
7290
3487
2814
5668
7567
5333
3724
4164
3084
8896
3888
6537
17
6882
3531
704
1037
8866
5263
6758
3762
1393
3824
5575
5112
214
1439
5700
8932
1306
5011
6928
5173
4098
1132
7352
4778
7723
1368
2390
670
2685
5855
1772
6380
3853
940
5424
6091
1748
6193
5297
6572
8877
6874
430
5041
5267
1145
7448
620
9112
4294
1432
72
130
2393
7920
4597
6614
8889
3697
1895
3462
2616
3978
4791
7846
7780
8372
428
6559
8326
9211
2363
1525
5980
7888
3331
8118
7899
615
7377
791
5930
6627
8322
1138
770
8460
5100
8274
8350
6316
2893
7594
9236
5082
8150
1986
1909
8902
2145
3617
3501
7
2426
5056
8016
2702
5360
8135
8385
8378
8018
8574
720
8893
3021
1978
4782
1816
2083
4051
1446
5870
971
9097
8006
4222
8287
686
1377
611
8153
4920
4808
1536
679
4096
3891
4884
432
4615
8988
5560
3451
5589
3514
6169
1414
3244
1490
7100
3588
690
7317
4171
2266
6800
108
2793
5151
6977
2587
8188
8752
6318
5815
5116
263
3311
5191
5689
289
3392
5755
1022
5548
9319
8937
6011
7632
5328
4993
4141
5407
1865
520
7305
7208
526
3645
1859
2520
3523
8629
7304
8881
3076
4005
8329
2205
2214
6925
8691
4136
8883
974
7873
7952
3965
5887
7964
7189
2406
2783
8086
405
6568
5147
2021
4727
4826
7674
1600
5078
2949
6624
6541
8986
5740
4679
8500
3591
4434
398
983
7544
1478
4570
6012
465
9330
7206
808
8737
2356
4959
8812
6955
3599
2168
1420
1721
1794
5897
8422
2
4023
2739
3619
8797
5496
8951
8181
6893
9254
1809
5682
4309
6929
2742
5988
3363
4493
8434
4210
1503
1876
5094
4600
4936
4798
3933
5216
646
7660
3098
8773
4076
1576
5335
3746
3327
47
4602
8636
4129
363
6417
7416
9025
4377
4766
2779
4151
9046
7860
3154
3476
7620
966
2052
8344
1752
7199
4412
8895
8882
2463
339
56
5390
4821
7555
6558
1905
5258
8880
4205
3580
6735
1023
4511
3850
161
7395
2532
3349
7055
7387
758
1907
872
3006
659
815
1961
6902
7668
4708
1904
4433
5159
6816
8664
6918
1016
6513
7314
5364
7480
9313
716
3395
6843
2292
918
4329
1035
6344
8593
3404
5212
837
480
8524
1342
3690
6797
7414
288
8863
3352
1628
24
135
3314
2181
8650
5915
8078
6812
1375
6040
906
5635
7126
1387
7458
6119
5591
3795
1531
95
1960
7522
3033
898
4607
4921
3913
2623
4430
6268
7063
1326
9075
2505
7400
1284
2951
747
6466
1357
6493
7320
5892
576
5107
5559
97
2583
6361
8843
3509
7892
6086
1476
4612
7427
4267
9094
7050
6048
8455
8382
2227
284
2898
3221
2353
2157
5990
5810
3581
7279
6188
7859
3549
5539
7918
2022
9066
630
2500
5111
6561
5127
8095
5569
6123
1338
8605
3491
4187
8220
7334
9213
3067
6997
2853
4735
4372
1489
5954
6662
2207
973
3361
960
6350
4170
7431
8076
1129
750
7559
7194
2261
2300
6590
5893
6889
3125
8788
334
7286
3472
8164
7693
1469
1181
669
7515
5563
4773
3210
6324
3113
9070
3638
7551
2541
3506
5138
4069
7198
7560
3306
6100
2932
4473
1741
14
4672
7564
8748
8874
3804
3678
2240
2610
2862
1358
5716
42
5176
9326
8464
1038
2993
3017
9072
32
4809
4364
2808
4125
448
152
7299
5431
6178
793
3444
9120
8410
4963
772
5457
6954
3014
6881
286
553
1948
6398
6255
3057
8646
6176
2700
7106
5663
6683
1281
6013
8799
7635
9289
1885
442
2225
6294
5054
2674
7884
8730
8216
4203
1488
7111
4013
3623
7950
1971
1966
3248
2900
1553
472
3865
7796
6937
4591
8098
5208
294
5627
5691
5687
7149
4879
3624
7005
2773
3112
9185
1633
7830
5101
8707
8469
4678
4860
700
5527
9194
2794
5068
2639
1177
4282
6492
8128
5859
5029
5123
2877
522
5048
7230
2104
6642
6731
2717
5149
2043
9059
5277
844
1394
3262
5515
6706
3651
9105
7671
2880
3607
6410
2508
8463
2394
1916
1125
5343
3322
5307
4547
1589
8478
8899
2955
8028
7293
4619
4058
2781
8715
1272
5734
4474
4863
4367
49
8844
5605
8671
6743
4281
7077
1874
2626
2516
258
5249
6186
7958
5432
3801
6288
4732
9121
7558
2527
4661
6819
3835
7508
584
215
5036
4261
8978
5228
647
4657
2591
5931
5088
9204
929
4381
5421
2965
5050
6495
5033
4799
959
6115
3520
1232
5811
317
8976
7705
3842
2178
7187
1373
7112
2694
8627
8493
3991
7441
6308
2589
6462
3406
7673
8660
2902
752
1025
849
7682
6982
6652
3612
298
5148
4873
3414
1693
1458
327
2016
5002
6768
7016
5583
3270
857
8232
7158
7981
4676
4675
2164
8360
6709
8143
365
4062
4527
7928
9009
6228
5818
2533
9305
8887
55
2507
8870
6649
5158
76
5595
6693
5306
8666
3020
7527
3082
6304
1591
6145
6868
7205
9107
1165
6773
172
1993
4176
8400
4611
7589
8702
5386
6095
6335
1561
8805
5963
7393
3681
2037
4968
7451
3360
7466
8361
4455
4064
5422
1689
3977
7269
362
4178
4145
6127
5162
2399
9225
7068
1650
794
3007
1348
7736
444
6081
5298
2026
2543
9087
3593
7425
3730
8468
2641
7529
1720
6377
8732
5851
7956
3150
3785
6485
3611
2869
8510
4775
4463
1251
9124
6873
3391
6505
4118
1617
8837
7051
3213
3668
5347
8452
6289
5840
478
3522
453
3376
6190
3342
2237
2870
5178
5567
5952
6919
3005
134
3397
7443
8539
6822
5264
3288
5962
8421
6744
8608
4656
1802
2073
4271
1043
2922
8211
2196
5260
3789
7211
7571
7834
5680
2047
5502
3369
3437
3286
5517
3912
8386
1442
6961
2191
2417
9088
5155
6813
4520
7375
1224
811
1891
3748
4123
2789
5305
8419
7248
9237
992
4038
4499
2060
5538
850
2669
7612
104
9290
2526
1287
4160
4633
7125
742
744
4534
2407
7714
4555
8764
7661
4722
7721
3205
6657
1214
3754
6080
4593
3018
8792
2294
4450
7701
9301
127
7069
4513
6243
8025
4010
8632
4715
5284
4574
726
4252
4561
7354
299
6088
1090
5012
5684
3489
5639
4888
1584
1969
4846
2915
6804
2775
7306
6506
9306
5231
7740
4283
953
6725
458
8290
1504
1539
8885
138
3764
1256
257
335
1011
7060
5986
9323
4740
8994
4140
6807
8254
3963
9297
2102
2964
9207
4910
8709
4411
1672
457
5852
8037
4932
3679
8794
2362
8592
495
8432
1608
2155
7411
2881
9244
37
6535
8219
4505
8635
1928
8384
2570
8996
7610
2128
8728
6656
8935
6681
2070
176
9062
972
514
1796
4039
6838
2462
230
569
5521
4637
4939
4420
2863
672
4995
3807
447
1656
2005
5113
3297
8858
2118
6309
1926
481
1156
1509
1228
1787
5978
8678
3951
2929
4980
5039
4713
7002
151
5536
8148
3823
4709
2299
142
7067
2372
3761
9
2265
5747
2764
724
2913
3151
4525
6370
4247
9329
5494
3721
629
3621
7371
59
1999
6704
3734
2698
4691
6938
9117
8415
6353
6750
9077
2679
7623
2478
7321
6611
4007
2076
5772
6416
2264
8348
2672
6546
754
6934
7908
8546
4404
592
4748
6625
2129
7944
2377
6
8929
8275
3515
4524
3660
8710
419
6878
170
8313
7460
8753
2917
6891
6663
4918
7129
396
7256
3500
631
5585
8343
2695
6168
6292
3176
5092
5160
3701
9021
7221
7825
1216
1438
3471
2318
8923
6223
2182
7621
8514
9010
8987
1252
1972
1872
1715
8205
6463
8138
8989
5661
2890
565
2427
8946
1303
3718
6000
3620
1560
5276
8089
9260
1467
6173
7641
7520
5061
4677
5757
4400
2620
2719
8995
2079
6644
1683
8141
7754
5744
2952
7568
654
7457
5368
3310
1510
4440
1513
3072
8034
1456
9164
3163
3035
6111
5042
7161
1401
1084
8000
6672
8531
5404
6550
8379
9141
8681
7752
6394
7011
3739
8253
978
4771
6024
4828
7959
1649
1727
7073
8349
6952
661
7283
3159
2590
3496
8741
3969
2956
4565
920
1830
8558
1930
6677
6825
8256
7454
7521
4710
1768
3753
6459
5606
5292
1397
240
2733
946
6711
3242
2627
4929
5006
3202
132
2295
2746
1293
2124
5405
4065
818
7464
1820
4398
1312
6994
6920
261
987
6120
3109
331
2986
4338
7774
5122
8396
1364
8969
6712
8161
7083
7595
5940
1566
6419
8634
4432
6047
4749
6076
1161
8217
674
8494
3688
2447
4704
969
7477
1160
3243
3173
4979
9288
6860
1662
6171
225
5143
313
8327
3275
3385
7626
3103
4401
6794
5600
5043
7664
933
6830
4452
3980
1604
5875
6633
4635
5756
3329
1751
8108
4817
1989
1237
1893
2848
9334
51
8875
4981
5417
4134
877
6688
3545
4943
5615
2476
1684
3652
7396
1769
1171
6563
3415
3644
340
6630
8284
3256
7240
5371
3405
2108
6360
1734
5612
8638
2343
1103
7803
6809
3055
188
8031
3124
3683
4537
988
2297
4893
6499
3396
839
4467
5195
4041
6457
4441
6378
6472
6195
4912
6884
5922
7014
1660
38
1595
6752
4554
1292
2709
3800
6057
1980
8775
6587
6392
6263
7214
5219
282
309
6685
2253
6311
4092
18
7570
5543
4081
2515
6278
8690
5294
6184
5215
9130
6720
250
7250
4983
639
3567
7841
2636
4067
8446
5703
8609
2586
7695
1253
6701
7930
6317
5921
7719
8501
7312
4110
6219
4552
5059
4088
7975
9132
6054
692
3412
4079
6754
6950
5281
3028
8321
3877
7614
8939
4188
2223
239
4745
6875
7096
5571
4403
2640
5556
1845
6690
1825
4157
314
4682
8825
1003
6206
8093
7215
6465
99
8077
6631
4206
2523
366
1208
6043
4640
1457
5475
4985
1351
3090
5625
7307
8466
2003
8854
218
1500
4476
2293
1847
5032
2147
866
3710
2552
1749
6692
3926
4112
6458
735
9171
60
9304
6726
2630
2882
1178
1151
4922
4662
173
7233
1776
6533
4113
2423
2425
4343
5800
970
6372
1009
6607
3068
8435
6423
3126
4813
1709
1201
7104
5620
3932
5701
5724
3366
8050
4984
5023
9203
5079
627
290
779
5572
5233
1392
4975
8534
8210
2269
1143
2475
2562
905
4546
267
3536
8538
449
101
7367
2722
4605
7356
6781
8537
8697
6820
8340
8926
3821
2349
2259
6545
8100
8395
2258
2911
5108
3946
1406
8683
8296
5579
2177
8264
1425
3940
957
3647
515
5342
8363
2449
3108
1001
2937
3452
5574
4319
9184
8381
945
6876
600
5714
4871
8532
1852
8856
392
2018
8878
369
5711
9230
5304
7266
1681
7829
2309
4683
8938
2255
6159
3207
4651
2029
4341
5106
5794
9024
4712
2434
7151
7359
6431
1290
5918
8705
3438
5554
8876
7415
6290
5373
3805
2950
2331
6772
8997
6576
2307
8515
4033
3428
6487
6595
45
5792
333
762
2383
3388
666
2166
460
943
364
6980
8223
8221
637
6218
4108
5381
4649
5096
1614
8768
5095
3809
5030
984
3538
5120
2498
5222
5613
5486
5119
241
5707
9227
544
4109
7771
728
3671
9327
1230
9270
1070
8565
4769
7056
5654
7965
1793
5956
7883
1362
5479
8769
8821
8320
1901
1994
2461
5552
389
2839
6467
2762
4763
3499
1487
7599
4488
3241
8272
1131
4496
7006
7265
4897
2747
6618
5291
4563
5146
1939
6369
8548
6163
5526
4068
9030
5349
8433
748
1477
4265
9200
3878
462
6846
9040
4806
3519
6798
5464
5179
546
6044
8114
7216
6276
1495
494
8146
5434
856
8403
8071
3972
5544
3337
6855
1546
2824
1718
6009
2042
251
9076
3330
5004
192
4717
3797
1146
394
7814
7699
4659
4689
4156
7903
9054
7332
7811
1119
5531
6782
5210
8412
2633
7924
4624
8314
5666
3240
2310
4262
8160
4553
8196
2661
7213
7455
7399
870
6126
1227
1226
781
937
6343
2578
2892
4124
2792
5696
6865
6455
8312
5193
6026
5251
3787
4460
4687
7923
1140
9106
796
2482
9170
8695
2749
6734
4825
114
8319
827
4175
390
7611
7484
1249
7727
955
579
3629
8915
2958
885
7227
1424
4810
4604
1535
774
7518
5428
1955
8233
2645
2167
6484
3855
1502
4861
2333
2973
4829
1906
3966
476
9023
6960
3483
2748
5891
8174
7702
8948
5324
4396
1605
2823
7348
7347
5933
310
9082
916
4255
203
4239
5976
6200
6435
4425
787
1121
6034
13
39
3104
5961
5507
5785
1463
7339
1575
7801
5445
8283
5951
6995
999
5163
6023
3786
6536
5850
3524
3528
4508
6674
2939
8227
4598
7550
8495
8622
1152
4538
4003
1318
739
3296
8202
1552
6204
5236
3576
4699
9238
1879
488
2274
433
5587
1678
9282
7914
8552
6445
7971
8331
6880
7476
7282
1570
7271
3827
6489
8091
9287
7351
1765
5286
6921
542
1762
8553
4987
894
3622
7855
92
3131
4811
3590
6517
4510
733
4954
1360
5669
2842
8107
5646
5968
1618
1827
7709
8521
5807
5321
9239
5501
3745
4437
1586
7273
5265
6605
7917
1607
6074
4668
7061
1580
8694
8461
4573
618
9173
5243
435
8770
2421
7450
3870
8308
2605
2934
9240
6887
4512
1198
7585
7691
7738
2843
8423
7929
6971
7854
86
9128
4298
622
790
9155
6579
2203
7716
1265
8645
3834
1174
7380
623
8936
4306
8082
4312
8661
5753
7243
2768
8155
85
4143
3047
8479
7809
2833
5555
7578
1637
1936
8130
5549
8062
7143
5522
8966
5614
8105
8719
7655
7502
8268
5760
6695
5565
7615
9226
4870
4507
3160
4835
1598
2465
4422
5248
7867
1078
5015
6660
1676
5354
6391
5351
7184
6280
5936
6124
1327
2906
269
8292
2466
8809
5167
8142
8204
2713
1910
2930
2494
5592
7384
7726
5727
625
1735
5710
5518
2491
1410
4989
5183
8777
6562
4947
3692
6129
384
1097
2084
5209
3723
7272
6895
2459
543
8621
5394
6211
2074
1511
2524
7776
5055
7191
6207
7922
281
8436
2918
3141
4800
6323
7631
8903
2716
3735
3012
5301
3975
2800
7963
105
1920
7391
4909
1754
4816
5488
5145
5098
5139
5268
9317
8631
4346
7318
136
3993
1220
2151
308
7483
7582
3071
1339
3777
8191
5378
7087
1056
7465
5608
6564
512
2754
2687
1596
5376
1512
566
6382
7360
1757
8035
2296
4264
3551
1053
4716
1537
8518
254
6253
7132
8557
3490
9267
5473
2412
7539
7136
6670
3974
891
1323
5958
1217
2879
9118
1259
2317
7033
2467
6665
6244
2180
2140
7098
5126
6395
4150
547
4120
4307
1725
2737
8549
8195
1245
6286
935
1756
1701
1626
7379
3492
3717
5802
2817
1234
1005
4101
21
2576
4650
3381
1030
2844
1641
936
2729
6469
8913
8369
5994
341
81
4083
1685
5152
3380
8739
6615
3829
164
7927
4779
829
4216
8528
3641
4606
2769
6970
1545
8850
4971
5489
2008
4564
8682
7784
5768
9252
901
438
3577
2765
5904
664
3348
6298
3602
2502
8617
7684
4293
5166
5805
4126
2451
6906
7234
9243
3778
2940
1087
9053
5026
2504
5283
2820
4242
797
3925
1383
8750
7861
1403
6973
7617
968
3065
5395
4347
8144
2688
6527
8597
8673
7327
6331
1422
7115
244
7013
2092
54
7970
5742
3464
4823
8588
2938
3060
6406
4149
2375
6616
8803
1555
4369
1380
3011
6144
3367
4990
7370
7131
1995
2602
985
8785
8480
9125
1927
3269
3771
1032
7378
6900
5726
2731
2020
4503
3313
6727
8793
2304
523
6036
58
7993
5512
5049
2721
8482
673
7937
1168
4472
8247
7287
9017
6421
9190
3584
1819
1792
2810
6033
638
6749
7677
981
7160
4726
1886
7845
7911
6975
568
7422
4613
4501
2569
4263
3206
4133
2420
3706
8894
2263
5774
4925
9180
8888
2945
2091
1873
6303
729
6728
2156
3267
1860
6597
1374
4930
5253
938
580
5825
4839
166
8198
6892
8701
74
7094
7284
8954
3156
6140
4279
5594
2229
7535
5466
8413
7105
8192
2632
7638
9308
8530
832
4643
2201
3268
4322
6510
2967
262
403
7973
1258
8828
4036
5838
9263
8529
2788
4202
237
3838
1291
2305
4056
5628
7281
1430
6476
7935
2850
6041
2013
4016
4576
5312
6827
6321
8669
8439
830
1942
1519
2750
6106
6993
6235
5899
7313
5331
4371
7086
4399
8600
2660
5409
3465
5499
6231
5745
1801
5337
4468
1451
4192
1275
8230
2302
1114
4960
8860
3900
6468
5058
1505
8868
5588
3858
1947
2565
1472
8499
243
8442
6583
7085
5374
2250
4291
4426
492
2311
8305
3662
5338
8780
7488
3890
5005
2442
4680
7358
9116
4397
5999
587
7902
83
3566
2134
8942
4767
6601
2456
1745
5736
5254
8017
4015
7690
3798
8947
1067
2116
7945
590
2547
2535
64
2053
5359
2493
6669
4351
6412
7473
6147
7175
6983
5196
745
2657
3497
697
3161
7528
2239
5991
3201
7681
2440
5189
2959
2044
8917
2046
6313
6333
5318
2763
4301
2555
2213
2933
4121
1340
3903
4392
7889
5323
1055
707
3857
518
6078
5134
6645
9138
1592
680
4446
7943
3461
3887
5601
2321
6621
558
4914
913
5637
6453
8511
4531
1218
5508
2603
6802
8426
8297
2947
5971
6552
5262
5935
782
7435
8357
6139
1136
1473
5008
3585
3627
2914
5356
2997
2347
881
5652
4849
8808
8351
4017
2010
6836
7616
4391
3630
3712
6099
2969
5238
4333
2301
4406
1236
1050
1864
1104
8408
8251
8795
5879
3365
7481
8206
2452
1767
8859
124
3948
4444
8962
4438
5003
1740
8428
3105
5117
1095
1480
8755
7881
3097
4877
155
1917
2455
6042
337
6724
6045
8483
7135
2242
4566
1679
834
1746
795
3548
2314
2036
4046
9129
6979
7084
5091
2413
8170
5775
1817
529
7220
813
2916
5130
8972
126
1243
2370
4831
9122
3010
5104
2613
6761
7482
909
2146
4595
5340
3512
6283
2346
653
6121
2615
7421
1869
1002
8834
2991
8992
632
1093
4543
645
2352
4115
373
1483
6966
8598
3896
3434
5987
8318
1815
1223
1548
6885
5073
6330
2573
1369
4095
1431
2185
5766
1301
7258
8048
7598
2847
1996
2378
8561
743
6381
271
1956
7439
7596
7134
6636
5804
1858
6214
4730
8536
1203
3118
9202
1875
5885
8975
168
5898
4014
4186
3346
3041
5558
9296
8157
4339
3234
1738
2604
6803
5387
5590
125
2173
8012
8005
4858
3069
651
372
378
8366
6299
1449
7793
8541
3235
8043
3086
3983
6949
4690
2176
6494
7637
8406
3856
7408
350
7021
8224
7044
7662
6697
7679
169
528
7029
2790
7138
7432
7602
8333
1582
1378
519
482
9279
8015
6592
4514
3542
2612
628
5053
6699
6227
2094
1621
847
3598
2728
8490
7276
6620
8345
9216
4278
4059
9058
5063
5816
4173
8134
1997
3182
3224
8129
5109
4494
189
7640
8243
180
2963
1123
5593
3263
4185
7140
8990
6320
9275
4601
4854
5907
1135
8083
5964
7788
1992
8069
9174
6160
35
8572
2865
46
3952
6418
2510
5783
20
3816
2715
3930
2548
5204
4122
4103
708
7756
3825
777
3550
8502
3929
5440
6751
7764
4070
7331
3743
9131
9206
3828
23
41
4197
234
5723
7622
8832
4626
2169
5599
2976
5266
1967
1150
5334
90
822
2538
3169
6771
7442
498
4967
5580
7581
7680
4728
1115
4040
1064
3106
6266
4415
9294
5597
7059
197
7218
6948
5690
4234
1653
4485
4019
3370
919
1330
6085
2078
3768
5427
4545
2435
8862
3633
8145
5221
1388
5913
8140
7471
7156
6989
1190
6832
2830
4387
3454
7469
2910
4526
5187
2410
9223
6247
6912
4681
1300
7407
8612
6523
3616
6894
7253
4515
5874
5448
7137
7957
1130
3092
7054
3516
5797
1000
2727
4336
9090
6403
7255
8919
6522
6760
8898
4803
1938
374
8686
9150
3985
7045
3475
6065
7991
1409
7851
6671
6090
5826
7857
1155
8964
1117
7072
6064
2497
4899
2397
3189
2369
15
5027
5754
8950
5617
8391
914
6264
279
6174
5184
3733
7392
5278
2924
567
7994
352
8084
2148
2723
3359
70
1870
7708
220
3994
9013
3191
9220
4155
5717
1110
2198
9179
785
5325
4770
4250
52
4634
5072
9037
601
8036
7996
2483
7232
8675
8836
1279
5346
7676
6104
1515
4603
5607
7894
5144
2628
68
440
3586
3083
4830
4378
7762
1134
4542
7850
6296
2866
4011
8751
4776
7954
7102
5697
2032
5729
5017
6962
2051
1092
764
9019
2759
8581
1484
8618
912
2382
4892
8447
8176
5491
5695
5504
1060
7064
709
578
4320
2379
7649
8416
1613
5344
7512
7865
3037
6689
6557
1569
5955
3707
9168
8566
1775
5950
6943
7804
434
6179
9300
1142
7947
6456
6291
5789
6538
9134
3049
5075
5399
5161
1623
948
6302
6063
7516
117
506
3302
7146
355
3854
1081
2827
1496
2574
6167
3183
4287
5482
1722
7319
7277
3860
3443
3298
8364
3826
7254
2360
5093
7039
6325
4230
2567
6241
4443
559
2625
4228
8967
6405
1674
3936
4475
8556
8585
896
3713
6259
4297
6718
2392
2279
4927
1283
2374
2860
7665
663
596
6293
6805
2811
7383
8306
8330
3153
2153
2618
2441
3615
8092
552
5285
5255
8124
9247
5530
8175
6242
5660
3433
1610
1832
3892
3862
640
2127
2474
4196
3495
7217
5206
4836
7759
4376
800
4227
3699
9055
5665
6826
7463
9065
4720
5069
3245
3453
3358
6532
5970
7921
4087
1547
3424
8040
7995
6787
9069
8716
2561
8199
1479
2767
7818
7145
604
7597
4896
9281
4666
185
8171
7978
3059
9196
9221
2135
1800
2974
1529
5948
446
4436
8672
3508
6208
5673
6998
5203
278
7041
9110
5853
8121
1764
3046
2400
6575
4738
2228
7761
9322
7019
6931
6383
6762
283
3935
2534
7717
6785
471
8214
231
4241
5310
3844
5746
2011
7209
336
6433
756
9167
6741
3345
7685
4018
6682
9147
4790
5836
5906
8747
676
3964
6362
3510
7510
2308
1806
5917
1189
4012
3387
1331
5319
5423
8900
147
3780
1696
9111
6783
6497
4104
1898
3987
260
4616
2121
9283
1400
2437
4670
2735
1163
2096
6521
1423
4523
2243
6667
6990
3944
6915
6763
5611
404
2691
1015
7092
7562
8624
2291
4193
5934
5503
2326
4408
2960
842
1963
3354
5568
9050
3806
439
9154
6055
6451
2190
7633
688
4354
8890
2813
2872
8102
8317
6609
1497
8389
6449
1682
3594
5103
5812
863
268
3054
8079
2260
2027
3091
7687
6703
3557
2019
8427
2799
8182
6641
3168
2284
1934
4865
1077
6507
1658
3811
1774
7897
2238
2943
191
3869
3246
4057
3188
414
8072
7838
1382
4962
6010
5363
4042
1983
4077
7429
1833
3583
4044
1109
1295
386
5481
3927
311
1349
5651
5878
562
2202
8904
765
1501
8654
2975
2689
3680
5180
1900
7707
4723
8912
4029
3579
869
2888
8657
6599
741
4288
2244
7357
5704
8791
208
8587
7969
4805
8526
4887
8871
7468
3343
886
7794
5764
2646
6454
6101
7885
7744
1297
4119
4856
122
2286
2925
5131
3570
5843
3027
5320
5626
540
1862
5401
7335
699
7760
9198
3259
7345
8698
1280
6479
3100
3988
1322
5737
1268
3257
6791
3326
4815
7644
1082
2826
6821
8984
2553
5290
5909
4762
9242
8096
8066
4325
6666
7193
7114
8060
2376
7872
6788
3544
5460
3507
2509
6626
3429
5542
4220
2968
5271
4249
3863
1868
5581
2012
6270
8038
4050
121
2845
1565
1998
2275
5524
6068
7624
4913
9277
1506
803
8848
5925
2450
2072
8190
4753
9162
1923
825
7303
9028
2088
8516
1556
5937
7847
2367
7549
1049
1521
4739
3931
8958
4130
7877
7876
897
5985
7346
7537
111
3700
1126
7896
1288
3419
4673
1051
5720
1068
3458
146
291
6256
5514
2857
4580
6239
6525
8717
391
4841
6676
4360
1453
4211
73
1675
1987
4025
1321
662
8265
6424
2758
7765
7656
3209
7497
7600
9039
7697
5177
2983
5622
9295
1200
3284
964
2024
1269
4551
8088
5659
2212
5199
5551
8607
5573
2247
5200
6341
7951
8429
7720
5919
1273
3529
6707
9176
7552
3255
5649
6110
9235
1137
9272
775
788
5786
5186
6746
2667
9145
7630
3953
1828
8827
6471
4702
7815
467
6387
3195
6238
6508
2373
5983
4931
2948
921
2438
517
3949
2137
3216
5683
3695
1719
4837
9159
6981
860
7410
5497
1770
5557
8810
5194
4857
9100
6329
2609
1925
3686
9041
4924
349
9187
3393
3661
7120
6858
4587
3831
3130
5396
5060
6486
3937
8023
824
5398
1354
8861
5534
7292
4389
6029
6226
3505
4326
7445
581
6089
3450
7324
6516
6775
1207
4575
5135
9265
3918
9020
3473
3898
7812
6571
6757
6639
2557
1206
6148
7325
8790
4938
7026
4383
8041
1250
7267
1952
7561
8811
4941
8373
4848
6602
8355
8104
5214
6654
4330
995
3181
3422
456
1782
3408
6530
719
7587
5910
3058
740
2009
4207
5336
2798
9229
8668
2473
4221
1493
3281
171
9157
9139
7766
6220
9127
3324
5308
3708
2431
8080
2093
2585
406
7040
5064
5247
4758
6512
2953
4257
4935
2705
2572
3436
8513
5884
1385
4852
2637
7091
2761
6007
8332
6694
2422
4917
2186
6898
1390
6965
3132
7698
475
2002
2692
5024
7365
7373
4091
1731
947
3962
8692
1788
8734
8656
6862
6856
1950
1914
5658
3635
1620
4780
2580
1454
2786
687
7238
3648
6452
1197
3190
5900
9043
4958
1935
1821
1187
1153
7737
7223
3820
7169
7350
5674
6254
3025
6680
1690
2899
3893
1577
5728
9189
5077
34
3560
2179
5462
1402
3654
1376
7936
4246
5506
1179
5647
4686
8644
1352
2855
6079
2254
2668
2287
2457
3418
7264
677
3074
2655
1042
2210
4504
7089
8309
4209
4280
3258
2977
84
4705
1244
3511
6355
8813
3228
9266
1122
613
732
5202
8425
2638
6470
2886
3541
8132
2063
8201
5129
2818
7949
6936
8090
4465
7295
5239
7009
9271
8563
2832
952
8136
6776
3565
5188
7288
6999
285
5487
7763
7608
8584
2071
7868
2804
3655
7048
6847
3276
4082
4272
3910
3709
1574
4559
7580
7081
5014
7769
8183
6386
7574
356
4937
2487
9315
7572
3040
671
2682
8626
3868
8623
387
8679
4074
1481
3527
3595
4754
2453
1579
4638
9123
1829
316
3009
3691
763
4875
3572
4642
3128
4273
2777
6032
4793
233
7147
996
3199
8835
3517
7210
6125
6037
3684
8589
3915
3095
8310
3180
7043
4458
2889
57
4483
7667
8375
1434
7493
6986
4733
8471
5827
2111
1313
7986
3075
2614
7547
4977
8527
3212
7300
5842
5244
3291
597
1007
2030
227
3830
5540
247
5643
9333
1958
3096
1371
5220
7926
2927
1516
7130
193
1522
6165
6923
3794
4223
5535
2472
8630
3971
9101
2946
222
4609
7291
8542
6501
7548
4557
6274
1010
5226
7309
1317
9056
6275
1624
1099
4191
4030
7270
5392
2316
3819
1670
8154
8045
4807
8864
2391
5908
8338
8218
6400
9193
3165
843
6613
6941
4380
9332
5629
7557
4321
3702
681
734
1159
4665
5959
1697
5509
8774
7389
3832
3751
8637
3079
1680
6841
703
684
8293
3682
5733
4818
3231
3078
5562
9001
3889
7024
2519
1713
3287
219
6021
8776
2289
7212
4832
4684
4617
4237
2649
8185
6326
3568
551
1426
4181
8869
312
2905
4165
8248
2558
900
1044
8613
7743
5437
7604
3122
5708
8649
2878
4695
4491
1929
7533
5223
7711
915
1844
5751
3008
8055
961
6142
4636
61
198
2271
5698
4596
4500
5709
5819
7972
2992
1643
1048
6281
8886
360
4198
1841
6814
3960
2606
7001
5888
450
7133
7015
7034
5153
8920
5066
469
1302
8816
463
8651
5869
8193
6582
5578
1231
9274
7260
7751
8052
6799
2089
2342
8451
3260
5550
7795
2288
1205
40
496
8367
7836
5973
3908
5242
5062
2706
997
6514
5419
9201
1965
6062
3050
5302
8735
358
2398
7470
1644
8179
7047
1549
5414
2539
7381
589
8166
8505
6035
3956
4540
6721
8074
1062
2384
2531
7159
3502
3902
4584
2554
264
8720
2849
4916
5218
7202
883
4560
1677
4317
7863
4509
6577
2903
1452
1416
5369
473
6233
6359
5992
4934
8059
6834
4907
3320
8267
8280
2066
2402
1485
3772
3732
4764
9126
3575
5564
4768
5641
1884
2330
1804
344
698
3089
1532
4454
761
7289
8094
3432
1747
6811
8722
8826
4646
3222
8614
2901
7003
652
8663
4266
413
810
75
3334
4905
6438
4756
5137
6528
6534
6988
6177
8533
889
5384
7201
5132
7802
6864
3973
873
4840
1482
8376
3769
5858
6675
4286
2593
5863
4353
7817
7540
4999
4838
2303
6002
7913
1508
5317
7755
2784
4964
3431
6209
3755
6022
6399
6232
3954
455
5416
6448
1558
7591
245
140
9210
6585
4084
967
7798
6795
7095
6733
3861
9264
361
1045
755
8042
7074
7778
6415
4724
6450
2049
1563
1307
3485
1790
7869
3282
6907
3920
2868
5801
5632
1079
5009
3955
7517
5128
3417
3019
2725
1784
2312
2753
6976
342
8266
1849
2273
5037
7880
3793
7401
5412
8279
1257
3670
9049
3266
8955
6519
8916
2858
694
5650
1019
4669
1785
3533
5877
2704
8603
3726
6668
497
1085
6815
6157
6646
6964
186
8097
5645
8481
8215
3775
2542
7514
5699
4072
3518
5767
3239
3740
1404
8981
4086
6397
6984
4204
6899
682
6589
3317
2944
3456
4340
7424
9208
6504
4409
1
145
1882
4620
2634
4992
5453
4481
3377
266
7875
530
1235
7605
504
1771
8489
345
7353
7797
7174
5914
2871
5721
6067
3582
7653
5467
6234
691
8758
2122
1213
2908
1492
1437
2187
1266
2395
7278
8491
5256
1554
8163
5966
7128
7904
1691
6272
1264
3996
1706
1334
1316
6478
6935
1518
6700
8703
8744
8152
8778
5367
4218
9007
6312
606
7565
5293
2891
675
2125
2120
826
7008
5705
7748
8010
1498
5330
5472
2215
7627
3016
6588
1850
4128
8569
6987
7566
148
8151
8789
7907
8596
715
6018
9060
3872
1750
5889
4047
5960
3120
3449
1421
1102
3333
9197
8796
8123
8007
2028
8404
1945
1985
8109
5380
8438
3504
6739
4180
5835
4243
25
4002
1976
3482
8392
158
5181
4885
8985
11
6872
6425
5926
7062
5083
8394
4259
5844
1990
3942
5532
2220
28
5957
149
6748
1663
3559
7647
2566
1359
8787
5259
7010
554
8231
4229
6005
8172
8125
1350
3571
9051
1973
1386
1781
5788
159
7007
3220
1846
3093
4445
2056
8370
3211
1113
4384
2231
273
4276
642
7663
5311
265
226
9012
7879
118
7109
7251
1760
8667
2876
7162
3552
6901
6779
5021
6524
4957
3114
4544
441
1848
2136
2458
8662
1127
5541
3026
1080
6780
2224
8259
1073
9000
7244
7977
500
4435
7376
7979
1435
9291
7704
3791
3521
210
7388
1039
6269
4052
8570
3285
564
8039
3546
6203
1183
6107
4147
6216
2234
7185
3192
7155
2001
7777
876
944
908
7791
5465
6784
65
9172
5675
7075
3886
7891
2978
1008
5630
591
5067
1139
577
9015
574
8137
7786
5765
4900
4090
7842
5741
================================================
FILE: EgoTracks/tracking/dataset/data_specs/got10k_train_split.txt
================================================
3784
8998
3906
1631
8277
8358
2338
7938
2988
8302
2662
2663
2825
7447
4781
2218
6348
5860
4517
2819
8075
5391
116
3606
7976
7941
1024
4519
1970
557
8579
6908
993
7204
1991
3674
8781
6840
5
3225
3763
8688
6778
5777
4794
2744
8126
3864
1733
2923
6829
701
683
2081
1831
2404
1459
2741
5972
3618
7462
2654
103
2174
6224
2989
2506
2766
5912
2699
3295
3986
609
4895
6673
801
1098
1602
2490
3129
8476
3186
7355
4784
4270
1812
4226
2267
8873
6544
6112
2381
4752
753
3776
6511
6016
731
2559
7369
5866
563
7731
1105
5603
50
4238
2208
8725
4994
4719
1444
8807
7298
8139
8760
8173
2332
4131
5207
1065
8562
3992
4024
2188
9095
6765
1707
6105
6922
5362
1486
7898
4135
6574
1551
998
6565
8127
8927
2544
4365
510
768
3535
3875
6808
2931
487
1088
4451
368
2470
8111
3493
7338
8281
6390
1271
4373
3667
3494
3757
2966
3756
7840
6315
7827
3300
6261
4163
2217
6549
94
7236
9136
1857
6691
3470
6271
807
516
9311
6098
3144
8420
5425
5694
2643
6696
6072
7285
3781
903
8522
6092
5979
2622
2529
855
3420
3261
8953
7866
2492
3157
359
1520
2642
7452
759
36
8931
1744
4350
1089
9199
4295
1889
1908
4868
4498
1968
9103
3273
8723
7413
4114
5584
4874
1427
5211
7618
1542
1353
8158
4168
3200
6345
8560
5619
5953
3158
8849
5831
1411
7294
8103
6539
7397
1006
5450
3119
4274
5352
4571
2319
4217
4976
902
1814
2651
3299
3398
982
2428
5793
1346
7057
3737
7329
4449
2110
7405
1773
958
3901
4127
8234
2994
7066
1289
2995
5871
3556
9085
846
2366
585
7032
5516
5230
3481
2732
6658
7423
1855
6384
3554
5823
4948
7058
4667
5377
2503
7694
9191
9144
655
3409
62
8019
8970
5523
7403
3379
2323
4833
5750
3178
6548
8891
7501
3280
7404
343
2171
8397
1367
8611
6118
6603
3729
7182
9048
7733
5642
7141
3335
4845
5449
3467
6250
163
5168
2040
5339
3609
8352
3426
8567
769
187
6151
6437
7028
8507
3970
9146
2068
5028
7492
1661
2815
2469
2563
3814
8430
4305
3479
5678
9115
4132
1211
5459
4814
545
4556
238
4296
2724
1260
2581
6087
4632
4313
380
1209
5447
3032
7942
8943
806
2432
6130
4314
2131
9045
6531
5706
6747
7724
2017
3292
5469
2743
424
4233
7643
8619
5192
4516
9324
3537
9152
8058
7526
8711
1949
5982
1732
6702
7027
6388
7012
328
2130
452
306
7669
3134
5761
3703
44
4189
695
7672
5224
9215
5644
3143
3704
5443
2348
7177
2328
4725
354
1418
7810
7746
9002
5759
7226
4535
9160
4385
5397
7249
2936
3204
6287
385
2371
2738
3636
9033
2246
2680
6940
4310
2054
9250
9080
4568
5586
4469
2038
3410
7900
4332
6108
678
3319
9079
1054
4048
4751
1320
6890
7931
1398
4349
5299
5025
7932
5738
7787
4590
4020
1274
2488
8497
3372
8965
3219
799
3664
6500
7093
4362
6205
4244
4652
1964
5945
6434
2031
2684
6632
4588
8271
3232
5782
2904
6789
5636
7200
3632
5435
8203
3480
4786
7579
3351
1921
798
3646
3094
4359
1654
5975
376
5965
780
7821
9224
6738
3185
2133
6248
5996
2834
531
5688
2448
7925
7974
5924
6401
5778
6594
5442
8336
4522
3770
6340
6328
4946
4161
2954
2588
8465
2885
1606
5787
3407
3121
7310
1413
1932
4787
2579
3325
508
5610
6480
4290
479
3792
6628
2545
6717
6972
2665
6730
3547
6845
5929
3540
4356
8993
1052
2235
8356
3403
8818
8260
572
4159
1180
5348
941
7948
2676
3539
4866
6422
8365
3217
1310
2059
9177
1419
2283
8892
8162
1212
6277
3725
7806
6149
7874
718
6888
7118
277
656
8763
8289
4759
5854
8659
7710
3145
5981
1881
5799
6947
1609
6396
2631
2887
318
2550
6132
1736
2907
7816
48
4304
8133
6698
2760
7779
7732
7642
1154
7242
711
9262
539
8033
7440
1913
5480
5570
8594
8772
4654
8974
6128
6183
1071
8449
2142
2298
524
1695
820
4053
8241
1856
8641
3981
217
1063
9286
3152
221
5461
1270
2006
7164
1199
6951
5604
5400
5309
3498
6407
6661
7097
8165
5169
3852
7070
5702
4344
6648
6904
3272
7119
5795
2365
2659
353
5444
6968
2755
1924
2098
2972
6006
5865
8740
2418
3401
7856
5841
598
836
1147
931
8897
0
6049
1837
865
1871
6116
6831
5773
3587
303
1883
2163
3070
1308
7953
6300
6909
853
7301
3279
123
7186
3194
5553
5133
1931
4622
6075
4891
5722
5693
8
2339
6596
71
379
4506
4370
1238
2707
3344
4254
8767
1726
325
4148
5438
5357
548
1332
6824
2290
2335
3146
2594
2315
3389
3885
2621
4116
5389
7412
7222
4894
8595
2000
4978
4721
6444
3796
9321
2236
6409
1523
1468
9249
8270
2341
2874
174
4757
4502
4703
9034
9108
5451
2619
5022
9158
490
6540
1466
2962
8771
3036
2712
4539
1581
5638
9246
4308
4363
4647
4470
1636
2511
1311
6560
7519
8027
9217
6464
6364
3779
4822
3563
3982
5896
5510
6655
1524
2846
3137
621
141
1887
6567
8921
4671
6052
8445
8699
7349
3553
2117
7651
5034
5383
649
3818
9022
8414
1012
8159
5081
8571
4765
9135
4361
4073
9142
727
2835
8229
3989
4490
4923
5477
1638
3643
712
9044
2230
499
7166
96
3172
8431
8401
1470
6356
8817
927
4212
2152
1795
3812
4949
1219
1538
3029
6481
9042
7775
7742
423
2085
7715
4541
9061
5916
3950
7420
4878
7406
7046
7808
4911
8804
6927
8820
3264
300
8670
2979
252
4407
3383
4688
8504
6723
26
3837
2489
4137
8209
229
6490
2364
9016
1763
1728
338
8335
9063
5280
2791
641
5454
4581
5420
4548
2840
8508
3463
7231
7619
2560
1755
6201
165
1471
6279
5806
6867
5890
2396
3416
1981
6073
5872
3045
4182
7607
3318
4414
2998
6553
7139
5624
2123
3666
723
5110
6932
8200
2222
8399
1041
4138
1594
3569
9253
393
7940
8004
1475
6759
5393
1107
2597
878
9309
7576
5250
1759
3142
2015
571
3921
1255
7080
893
2160
1355
82
1562
9153
8583
4085
4644
7196
9165
3558
4550
6374
7826
8602
4146
9257
6083
874
8383
3731
3374
3653
8222
7344
470
1813
4478
6871
7245
6866
3998
7433
276
1915
1988
8168
2518
2686
831
6143
5205
8718
1703
7729
2077
7983
8450
1195
9232
507
7989
6974
4054
5828
8655
6679
5245
7783
5886
9098
6491
8782
3525
6542
131
8110
9186
9074
4933
9035
2607
4
2057
6273
2711
5829
3382
2696
3043
2048
619
2499
5295
1162
7807
3694
2194
3149
1940
7934
840
3592
8237
4731
1324
8486
8726
8573
2928
9078
2272
2564
1370
5911
7434
8026
407
7546
2004
5849
3034
7887
3425
1118
926
3430
1544
5902
2282
1124
2334
129
1372
4842
6473
4382
1028
415
8269
8073
6910
2796
3038
5735
5080
2852
6306
8842
9188
3637
1066
532
928
5485
2838
6753
9008
7984
2816
8819
7103
5977
5044
2064
2599
4973
382
3249
6446
6638
852
1724
3368
892
3250
8258
7962
4300
1616
167
8855
2090
4424
879
5136
5350
2635
7828
8506
63
3004
3847
3676
1184
1705
6745
1263
5020
746
1888
7036
1033
3914
5433
3905
4641
8909
228
4801
3766
8085
643
6914
9280
3013
5657
3696
1590
2920
8282
2403
416
911
3849
4215
1120
5490
296
2306
3140
3742
4819
6153
6414
760
3000
7498
7108
6429
3031
5314
751
3357
5808
7505
98
7652
4027
6257
3943
1799
8577
5577
4969
9163
2025
6061
4026
5732
588
7017
1415
4961
4940
7152
538
706
2802
8983
3375
1246
6593
5837
1789
7939
4997
5939
2411
6133
199
7593
1702
5406
6082
2359
2912
6109
100
8149
5470
2807
3384
6413
3362
5621
6019
9241
9268
7703
4111
7967
5458
7181
5492
1112
6729
4577
106
8853
3774
979
7082
4610
1853
9003
9292
2867
6262
2245
3460
1557
767
4796
8147
2658
5769
6985
7065
421
7990
3289
1540
9316
2251
6896
5947
4965
2652
4480
963
9047
7168
7824
3976
6210
7018
7179
5016
7789
6102
6828
7659
9109
9071
8115
7628
7110
16
7513
835
939
4078
2351
2322
3881
4945
560
6837
6094
6475
7901
3
771
8029
3135
8044
7127
3741
5156
7030
4906
113
3747
7042
5232
5225
3002
4747
6879
5379
4886
7192
4184
1896
1834
8689
3665
2957
6913
8009
4851
6420
7987
828
3003
8884
8815
3198
8008
194
6251
3303
3934
395
1285
4169
1648
1347
3600
4631
509
211
6230
7241
8250
2219
2582
8353
7790
7583
4462
3904
9004
6942
1704
5686
8051
2981
5511
6182
7088
1699
1222
3455
6189
1528
5197
6221
7893
3283
2837
7773
8766
2942
8021
614
4102
7362
1786
400
133
556
3127
5237
3727
1440
3873
6322
8448
6285
8696
8800
4009
3386
454
4847
5685
9093
246
1314
5895
6863
4302
4260
8405
8417
7116
255
3223
4737
7852
6337
814
710
1094
6103
5809
5882
6336
4974
1499
2806
3744
2664
2436
4482
8665
8918
1076
8676
5725
9248
4755
1447
9328
5500
78
2653
792
6854
6093
6172
3378
4492
5529
5476
3846
1391
383
4289
3883
2648
3265
2525
5402
4599
6870
6877
4413
2464
8519
2521
1839
5822
5664
7257
5375
6852
6764
5182
8914
3015
8509
3080
4562
8979
6215
6643
8601
6096
4812
5246
7862
527
7849
6737
12
2468
7961
275
27
5932
3840
7341
4996
8564
2154
3788
6138
7831
4442
757
4464
1170
2568
19
323
6584
7675
3441
2067
9027
2486
4379
4744
1737
7563
301
3907
4742
6857
1221
9284
8458
8236
2897
4004
1526
5345
4423
6246
8578
1057
3711
4986
4785
3997
7311
4788
107
8387
2041
2608
8628
5830
6031
783
6817
3293
541
773
8473
2501
7247
5667
804
483
1639
696
6060
5429
5762
1527
7342
1329
6225
7895
381
8030
8520
8362
4734
3526
9273
2039
4142
5084
875
6905
8968
5275
3052
650
7509
232
2595
3631
1810
4355
8315
8908
1777
4834
3164
2336
1543
6212
8346
3024
3719
1242
6265
8101
3133
6150
6358
3316
4089
1647
4629
7117
2596
5366
1225
6371
624
2209
1428
1158
7648
466
8765
802
153
4639
3657
6482
9320
2693
6591
3294
2617
5052
6305
3227
8784
7170
93
5868
6716
1671
178
2703
954
3254
2262
5046
5743
8647
6393
7706
6604
3728
6978
7489
7474
8754
2740
2233
6038
1491
8814
2080
2358
5944
5653
1164
9259
4518
7343
5748
3897
923
5967
2677
3503
1202
4966
1836
1863
6634
1962
9096
9064
977
4049
1464
658
536
3402
8064
1309
259
7999
8122
910
224
6152
7142
6070
7523
8411
2408
6766
9214
9312
8325
6192
626
6025
6240
8708
4630
6777
1075
8906
408
9269
6236
9067
2514
8568
2324
156
3136
3530
7878
7308
4335
2065
3845
4453
3356
1450
371
7219
5171
201
8642
2099
477
1603
8339
7430
3061
235
8291
1133
8474
7035
8653
989
4569
9092
8347
3102
1743
9086
5140
7438
1530
4342
2460
7646
5047
5071
5430
6944
610
2803
1448
4696
6156
4386
4248
4256
994
2112
805
8011
8276
8999
4956
1712
2795
7553
6436
2158
9083
3184
5784
4428
612
5288
6222
1365
5074
6848
575
5213
2175
4240
351
2086
2656
5150
9255
8189
7735
1261
1344
4097
8674
2984
4235
5998
6488
537
1267
7486
7124
6245
7955
7337
5436
1194
8226
209
1710
7906
4357
4139
5679
2584
2854
1004
8246
8586
5087
1878
4926
6637
3197
7757
8249
4055
6502
1248
990
3928
2770
2751
1020
6426
4190
6839
2671
884
3871
9212
4179
3394
10
5861
5316
6869
2985
8905
8559
4457
2480
2313
4100
4395
6835
7799
7890
2785
5468
7302
5862
1803
6376
3171
8591
717
7053
1655
4489
2522
2921
8555
1984
895
8949
1305
738
7606
112
3042
1325
437
3167
3340
511
3689
5813
8982
69
4421
7150
550
8829
8685
3147
8956
3166
7023
8633
3308
2014
3573
3880
4045
2069
6051
4950
702
6664
8418
2454
6181
4853
4166
7022
7418
3605
9181
7172
5031
4589
7858
6586
6351
8334
7504
634
3759
1890
890
6959
5085
4919
2161
1191
256
3610
7079
3427
4071
7323
2982
7263
7444
4251
5846
4864
3649
4311
7461
8120
4582
6373
2805
4872
4869
5493
5867
2670
7099
30
8933
930
7919
501
7261
5289
7449
7772
3613
7848
3196
474
205
841
2611
6185
3088
409
7239
5938
7871
1343
6705
1027
5596
2199
9113
5471
6134
838
2345
8359
4061
1474
3229
270
4245
1979
5995
1517
8652
4006
4880
6137
4693
2528
6996
2926
5798
2477
2549
1128
3341
6014
4479
2861
4208
5175
5174
5118
3736
5463
1588
2327
8380
7982
1514
1058
4586
6608
7985
3044
1822
3628
6851
549
1811
2184
2601
4608
8922
2540
6659
3859
307
3650
3767
8167
505
4366
4824
5520
461
1933
2401
8106
2055
7844
8544
8838
4797
7419
6686
7670
6039
5672
5141
6543
206
5252
4718
888
1601
3218
5114
713
4022
4419
6708
397
425
6612
5057
1729
6573
4729
4080
1034
2961
534
8194
5598
9218
2424
329
4154
1597
922
109
8823
3578
9038
8437
3307
128
8032
1412
7333
8762
8851
8865
3056
468
3808
3064
8798
7052
7767
9231
1086
2162
6566
2109
3439
6122
3642
7696
8610
5279
1808
8687
8377
817
8714
6066
4008
3640
6015
1021
7601
4855
6017
87
7071
2730
7268
3614
6084
6117
6924
9102
2829
375
8724
2095
22
1541
2970
633
139
451
4521
179
1396
3876
5824
8020
426
4982
4172
1157
190
4859
1455
3110
3323
9104
858
6719
6428
4495
8551
2141
3984
3066
67
4299
5821
8444
6581
6097
7090
7781
8944
3085
8606
2114
5355
8901
1461
3301
422
7000
4820
5790
1379
7536
4199
8736
8991
5241
1698
1294
1753
196
2987
8680
4658
4144
8639
6441
8255
8156
3677
6385
6520
7700
3760
6001
1144
5478
7394
8057
5018
4232
5235
6844
3111
8802
867
949
7843
573
2278
6801
7629
2714
5105
6946
2697
5315
1571
8677
2537
4374
3833
7820
3750
2033
6526
3884
8706
7195
417
3603
3001
6284
5873
5718
8576
8457
3589
5839
459
3626
6342
8729
6933
607
6053
8228
3773
1805
6365
5142
6069
1389
9026
570
4614
5712
5533
9222
2821
1897
819
766
4060
4902
5905
6842
5446
1277
4303
2836
934
1014
7822
7494
3466
665
1047
5881
3328
4664
315
1315
1462
8616
7725
2756
5749
1730
8184
4567
5065
7499
8867
1304
3669
9192
410
8177
6710
1210
2329
8443
3911
1899
7686
3315
7190
6180
3116
5341
4394
8337
9182
6969
5715
2172
1742
2782
3715
9195
7960
2517
4890
8294
2337
8014
3353
7475
2193
4843
8831
4200
4653
6196
6957
3063
2996
8959
8973
6529
3457
5274
8002
6823
6154
5561
1780
9318
7657
1758
6503
7678
3274
1625
4327
3236
8575
3155
4707
4331
1494
8756
3174
1074
8116
8295
8311
3048
3752
6050
6483
8003
9175
4674
1642
2556
6166
7165
8441
5413
3990
1640
1778
7500
8304
1395
4315
5949
3364
242
5763
1036
249
2430
7426
8131
411
6267
2045
6606
899
8065
9052
7507
5779
5616
2107
5408
2980
6310
5776
4328
821
3251
2354
7076
1700
5313
6736
79
8212
3959
5677
7545
160
6790
6859
3659
6770
1106
8846
956
7472
2050
8099
4795
8053
9293
7037
1646
9307
1069
5322
5332
2708
8977
917
2419
184
2105
1578
3923
5780
1903
2512
429
5582
493
4972
445
8286
555
320
8300
322
617
3413
4459
525
5631
6314
5157
5300
8545
182
1031
4429
2495
7586
1534
3099
3916
3738
1919
535
2119
1299
177
1838
2159
4099
8285
5172
8540
6020
7683
3073
3115
1673
3087
3488
2416
1894
5942
3597
5834
2007
43
1779
4174
2023
2546
2429
9006
436
4214
4536
3693
5426
6767
5903
4368
2170
5051
7490
7882
2859
5035
7835
5372
7122
925
3253
6338
8393
4093
5848
7588
2683
8049
5403
5894
8745
8550
2941
3484
9029
4461
8022
725
2355
1619
3030
1975
5623
2415
1957
6141
9278
3226
3062
5670
7326
8759
8496
6619
8187
8262
6199
951
7183
668
2388
4698
5681
8240
2851
871
4988
9084
9089
3162
1167
8244
5227
6461
2831
776
5010
5770
5282
3574
5102
1278
2281
5455
305
4628
4663
9119
7487
8746
4889
6569
1175
102
2386
8940
2479
5566
53
8833
1918
8001
321
6786
6861
4358
2771
7467
975
4777
605
3543
2600
7584
9299
4530
6477
7364
7328
183
4761
7543
304
1196
4623
7839
2139
5519
1953
533
5989
7590
7428
6346
6162
1091
1946
6260
4405
5676
8924
7171
8409
1866
6379
3411
2387
3051
7398
154
1185
6442
6004
1611
2165
9018
8323
616
3995
8952
1533
7853
4194
213
789
4991
3675
7456
5752
175
7556
4195
907
2248
9057
8467
4594
1017
7968
880
7446
3304
1666
4942
3867
4802
9156
6357
4621
887
6213
5261
1336
521
8928
1818
7864
4792
6742
157
1593
823
7235
5303
5633
1100
1692
8047
5993
1460
6714
1630
6440
6307
3608
292
212
401
5974
7107
8301
8342
2720
4583
2757
7315
833
4466
4236
1282
5273
2149
287
8484
2380
8119
7167
737
5076
6598
3596
5382
2650
8980
3421
1356
1954
7823
1172
2226
1941
6136
7274
2256
4928
324
1407
4410
4579
1061
7113
486
862
3435
6956
2873
1465
6113
8225
8512
6806
272
6008
1241
88
5662
3555
689
8733
2812
7453
6282
420
2471
4477
7495
1445
594
6939
1564
8704
8590
7992
7374
5796
9298
4213
5713
5864
326
5513
402
464
608
1951
8640
8180
3347
3459
4162
2690
7478
5856
5240
2389
3022
602
5547
1798
1345
9276
599
3673
3277
1635
8625
1567
5928
636
5671
2896
3477
412
7575
4201
685
4760
1229
4275
8960
3123
4471
5941
3355
3999
7157
6354
7741
6850
8783
1943
6769
7330
8721
8477
1381
848
778
6408
2644
5817
1441
1723
2144
2776
2368
120
367
8839
8749
5353
4158
3148
9114
1233
9228
8857
2895
1286
200
6755
5125
5857
1657
7658
5097
5000
942
7020
586
784
7078
6194
8658
8957
9325
1851
8911
4862
7004
1186
8824
1651
2999
561
7639
4316
5086
3187
7912
2624
9183
8487
5089
8475
7554
4031
6297
6059
5329
115
2058
7650
7634
7121
2485
7805
2241
7713
4352
2409
1026
2745
4549
6474
5124
5201
6556
6617
9091
3945
8402
5648
5257
2192
4901
7750
6131
6027
6352
4625
1254
5498
3720
8261
3939
5576
3685
6713
8472
991
8354
8068
5655
5997
1029
7506
6740
2575
2990
4898
583
7402
3290
5388
6715
8235
5361
4970
1363
3338
5731
9014
5358
2216
2856
635
1193
3705
6334
7666
5270
1384
6368
8604
3564
1937
2481
1341
721
2100
3958
6551
3813
2592
7980
5385
319
2357
8761
8910
8693
1204
489
4827
8024
7832
6427
3895
89
9068
8067
1708
1111
8963
1902
9251
5719
9143
5537
9169
77
5365
1840
485
4456
2841
1169
3271
7144
6886
9140
7173
6003
1659
1807
8371
2439
274
4660
3448
6623
347
2103
3400
2106
9073
8169
3687
3305
4416
8454
6635
332
2433
2909
3839
4063
1944
6509
1296
7770
1880
6610
4075
9331
4484
302
418
4219
1333
2350
6498
8424
4694
4883
5269
6580
5007
6722
1669
8470
2571
513
3810
7049
6332
7363
3532
8456
2097
297
8841
7180
714
1587
5234
4268
2320
7372
660
8503
1668
8847
1101
7275
3336
6460
722
7782
3947
502
4258
2132
1835
181
3841
427
3446
2551
8324
6963
4284
7297
7577
3399
9148
8213
5656
8440
851
657
2446
4292
6992
976
1108
2681
3237
8582
377
5969
5287
9209
8523
7178
7833
6175
2126
3023
5090
7491
6640
6077
2221
2780
1694
4094
144
6161
3203
7123
749
3625
3848
980
2270
7819
3672
7689
7203
2718
1714
2884
3474
3802
3851
4224
7237
5415
7998
7207
4106
9036
1046
8731
5070
6818
4592
6056
693
1328
3309
5791
2629
2736
202
388
7886
4417
8786
8822
4035
7718
8492
5505
1192
4388
8941
5019
7538
6732
7296
6389
5923
1405
3278
3917
1688
8374
443
4037
9099
5190
6402
4177
9310
7747
4348
7197
4844
4998
5609
4345
29
3332
8648
4107
346
2577
3941
1215
3782
8252
4706
2675
3790
7459
6164
7316
1149
6687
582
3139
5040
7645
3882
7322
4034
1861
4701
8757
3208
8801
6349
8907
1823
4528
4789
143
4746
9234
3866
9245
1911
1366
4393
2061
859
1959
6967
3138
7382
9031
6237
845
80
6911
7163
5229
4736
8738
33
8543
357
3193
7262
4448
6796
6793
3321
7569
6411
7692
7340
1417
5847
3836
2678
1188
8727
223
8615
7417
5771
3170
8061
2935
8263
8257
6883
1276
1239
812
6258
3922
7525
8117
3039
603
8554
7573
2787
3445
5115
3478
962
3961
6570
7722
216
2797
5154
2530
4904
2405
7542
4021
3252
5370
9302
236
4532
1361
3373
1716
2183
1583
3783
868
1687
8925
1433
6198
8208
6367
7603
882
3469
1645
7654
1176
4231
150
7997
5456
7031
4375
8840
5634
6945
705
3442
4774
3822
7148
1922
8459
6249
8713
6197
8599
6071
6756
1634
950
5640
7749
5920
6622
4783
7837
7479
7229
3919
1797
5272
8945
4908
5439
6903
5833
6930
8197
9261
1711
5483
6046
4285
8852
7409
8971
8278
7534
7792
2444
7496
8063
1665
248
3894
4585
1982
66
6651
4850
1240
7511
7524
9258
2075
3979
4714
7592
965
2919
8239
1842
8013
4750
2344
6155
3468
31
2087
1599
1573
5883
7613
195
3749
644
2189
8779
8743
9005
8081
1040
7785
5820
8830
5495
4867
2710
3843
491
7153
6217
1148
4741
1761
5484
3423
5474
6916
5876
7252
1739
8930
6647
5198
4903
8488
7366
2774
2726
2385
7625
3179
2211
8845
6600
399
6810
3447
6684
4915
8368
1867
2325
2101
1335
7734
3722
7437
3716
7025
4000
6897
1408
7154
5013
2204
9233
4225
3817
1877
9161
2197
6991
3390
280
1892
1612
7753
2801
7246
7909
6229
9314
8407
1436
3879
6432
6849
5326
5327
8535
7910
7745
5545
7916
207
1783
6158
8517
7361
8070
6430
119
6146
4183
1083
7385
4497
9133
1686
3765
5099
595
8046
4418
4043
2361
7915
9149
1717
1141
6375
1018
5602
1262
7485
9178
6629
3339
8934
4648
7988
6252
3440
864
5418
3874
7280
6191
8388
4323
6792
4324
2232
7228
8684
7813
6187
6678
3177
3534
4953
4402
7739
6319
2414
8700
5946
8238
4533
6917
4167
4618
2115
2268
3081
1247
4001
8580
7636
3101
2195
1559
3714
2484
7188
6028
7530
2828
1977
3238
6496
2340
110
3247
7532
7541
924
1632
484
4487
4439
6447
1319
4944
6347
1791
2285
8087
5452
91
1166
162
5185
7933
4743
1627
7259
8620
8525
8207
5845
9011
5525
4269
4700
1824
8186
8872
8299
3957
8242
4558
6439
2666
5943
6958
8112
5121
8806
6170
7688
3486
2082
7436
2778
1096
786
2206
5170
1443
6030
3312
9151
8485
6404
8498
2883
8961
2280
8341
9137
4337
2809
2445
809
8298
8643
8316
4951
6853
1572
3215
3938
2249
6515
1337
8328
7712
1429
4117
5441
3230
4152
7225
3513
6953
1507
348
3639
5739
2673
1550
6301
1652
8453
204
6833
8056
2200
5217
1854
4711
7368
4572
4032
7531
1013
3634
2875
6058
8307
7609
1766
904
667
5410
6578
3601
1664
3233
7390
8178
4486
4952
4427
4876
9166
3107
2772
6295
5001
5296
3371
6518
6327
854
1615
8288
1912
5927
6202
5814
9032
1059
3214
6547
7038
5781
6926
4390
6114
1622
4318
5803
5984
736
3561
6554
5045
4277
7386
9081
8462
2034
4955
2701
932
1298
7758
7176
9205
2276
3077
3803
3562
8054
7946
295
1843
7728
1629
7768
3663
6363
2971
431
9285
2513
1116
3656
4529
6366
5758
6339
8398
816
4153
648
2536
1826
7870
8113
7730
7101
6555
9256
6774
1072
4578
2598
3604
5880
861
8273
3350
3117
4685
9219
4334
5165
2035
7224
4066
4253
4447
3815
5038
253
3658
2252
330
3967
6443
2143
7336
6135
593
2734
8390
4655
7800
1399
1173
5618
2822
7905
7503
4431
2443
1568
3909
1974
2496
4772
5164
4105
2138
2864
3799
3924
4882
8245
1585
5528
5692
5730
5832
137
3175
2894
2062
3899
2752
4028
2113
5411
293
2647
730
3758
1667
8879
9303
6653
3698
3968
3053
503
2150
4645
2257
4627
8303
7966
8742
4692
5901
8547
2277
5546
986
370
4697
8712
4804
4881
1182
6650
7290
3487
2814
5668
7567
5333
3724
4164
3084
8896
3888
6537
17
6882
3531
704
1037
8866
5263
6758
3762
1393
3824
5575
5112
214
1439
5700
8932
1306
5011
6928
5173
4098
1132
7352
4778
7723
1368
2390
670
2685
5855
1772
6380
3853
940
5424
6091
1748
6193
5297
6572
8877
6874
430
5041
5267
1145
7448
620
9112
4294
1432
72
130
2393
7920
4597
6614
8889
3697
1895
3462
2616
3978
4791
7846
7780
8372
428
6559
8326
9211
2363
1525
5980
7888
3331
8118
7899
615
7377
791
5930
6627
8322
1138
770
8460
5100
8274
8350
6316
2893
7594
9236
5082
8150
1986
1909
8902
2145
3617
3501
7
2426
5056
8016
2702
5360
8135
8385
8378
8018
8574
720
8893
3021
1978
4782
1816
2083
4051
1446
5870
971
9097
8006
4222
8287
686
1377
611
8153
4920
4808
1536
679
4096
3891
4884
432
4615
8988
5560
3451
5589
3514
6169
1414
3244
1490
7100
3588
690
7317
4171
2266
6800
108
2793
5151
6977
2587
8188
8752
6318
5815
5116
263
3311
5191
5689
289
3392
5755
1022
5548
9319
8937
6011
7632
5328
4993
4141
5407
1865
520
7305
7208
526
3645
1859
2520
3523
8629
7304
8881
3076
4005
8329
2205
2214
6925
8691
4136
8883
974
7873
7952
3965
5887
7964
7189
2406
2783
8086
405
6568
5147
2021
4727
4826
7674
1600
5078
2949
6624
6541
8986
5740
4679
8500
3591
4434
398
983
7544
1478
4570
6012
465
9330
7206
808
8737
2356
4959
8812
6955
3599
2168
1420
1721
1794
5897
8422
2
4023
2739
3619
8797
5496
8951
8181
6893
9254
1809
5682
4309
6929
2742
5988
3363
4493
8434
4210
1503
1876
5094
4600
4936
4798
3933
5216
646
7660
3098
8773
4076
1576
5335
3746
3327
47
4602
8636
4129
363
6417
7416
9025
4377
4766
2779
4151
9046
7860
3154
3476
7620
966
2052
8344
1752
7199
4412
8895
8882
2463
339
56
5390
4821
7555
6558
1905
5258
8880
4205
3580
6735
1023
4511
3850
161
7395
2532
3349
7055
7387
758
1907
872
3006
659
815
1961
6902
7668
4708
1904
4433
5159
6816
8664
6918
1016
6513
7314
5364
7480
9313
716
3395
6843
2292
918
4329
1035
6344
8593
3404
5212
837
480
8524
1342
3690
6797
7414
288
8863
3352
1628
24
135
3314
2181
8650
5915
8078
6812
1375
6040
906
5635
7126
1387
7458
6119
5591
3795
1531
95
1960
7522
3033
898
4607
4921
3913
2623
4430
6268
7063
1326
9075
2505
7400
1284
2951
747
6466
1357
6493
7320
5892
576
5107
5559
97
2583
6361
8843
3509
7892
6086
1476
4612
7427
4267
9094
7050
6048
8455
8382
2227
284
2898
3221
2353
2157
5990
5810
3581
7279
6188
7859
3549
5539
7918
2022
9066
630
2500
5111
6561
5127
8095
5569
6123
1338
8605
3491
4187
8220
7334
9213
3067
6997
2853
4735
4372
1489
5954
6662
2207
973
3361
960
6350
4170
7431
8076
1129
750
7559
7194
2261
2300
6590
5893
6889
3125
8788
334
7286
3472
8164
7693
1469
1181
669
7515
5563
4773
3210
6324
3113
9070
3638
7551
2541
3506
5138
4069
7198
7560
3306
6100
2932
4473
1741
14
4672
7564
8748
8874
3804
3678
2240
2610
2862
1358
5716
42
5176
9326
8464
1038
2993
3017
9072
32
4809
4364
2808
4125
448
152
7299
5431
6178
793
3444
9120
8410
4963
772
5457
6954
3014
6881
286
553
1948
6398
6255
3057
8646
6176
2700
7106
5663
6683
1281
6013
8799
7635
9289
1885
442
2225
6294
5054
2674
7884
8730
8216
4203
1488
7111
4013
3623
7950
1971
1966
3248
2900
1553
472
3865
7796
6937
4591
8098
5208
294
5627
5691
5687
7149
4879
3624
7005
2773
3112
9185
1633
7830
5101
8707
8469
4678
4860
700
5527
9194
2794
5068
2639
1177
4282
6492
8128
5859
5029
5123
2877
522
5048
7230
2104
6642
6731
2717
5149
2043
9059
5277
844
1394
3262
5515
6706
3651
9105
7671
2880
3607
6410
2508
8463
2394
1916
1125
5343
3322
5307
4547
1589
8478
8899
2955
8028
7293
4619
4058
2781
8715
1272
5734
4474
4863
4367
49
8844
5605
8671
6743
4281
7077
1874
2626
2516
258
5249
6186
7958
5432
3801
6288
4732
9121
7558
2527
4661
6819
3835
7508
584
215
5036
4261
8978
5228
647
4657
2591
5931
5088
9204
929
4381
5421
2965
5050
6495
5033
4799
959
6115
3520
1232
5811
317
8976
7705
3842
2178
7187
1373
7112
2694
8627
8493
3991
7441
6308
2589
6462
3406
7673
8660
2902
752
1025
849
7682
6982
6652
3612
298
5148
4873
3414
1693
1458
327
2016
5002
6768
7016
5583
3270
857
8232
7158
7981
4676
4675
2164
8360
6709
8143
365
4062
4527
7928
9009
6228
5818
2533
9305
8887
55
2507
8870
6649
5158
76
5595
6693
5306
8666
3020
7527
3082
6304
1591
6145
6868
7205
9107
1165
6773
172
1993
4176
8400
4611
7589
8702
5386
6095
6335
1561
8805
5963
7393
3681
2037
4968
7451
3360
7466
8361
4455
4064
5422
1689
3977
7269
362
4178
4145
6127
5162
2399
9225
7068
1650
794
3007
1348
7736
444
6081
5298
2026
2543
9087
3593
7425
3730
8468
2641
7529
1720
6377
8732
5851
7956
3150
3785
6485
3611
2869
8510
4775
4463
1251
9124
6873
3391
6505
4118
1617
8837
7051
3213
3668
5347
8452
6289
5840
478
3522
453
3376
6190
3342
2237
2870
5178
5567
5952
6919
3005
134
3397
7443
8539
6822
5264
3288
5962
8421
6744
8608
4656
1802
2073
4271
1043
2922
8211
2196
5260
3789
7211
7571
7834
5680
2047
5502
3369
3437
3286
5517
3912
8386
1442
6961
2191
2417
9088
5155
6813
4520
7375
1224
811
1891
3748
4123
2789
5305
8419
7248
9237
992
4038
4499
2060
5538
850
2669
7612
104
9290
2526
1287
4160
4633
7125
742
744
4534
2407
7714
4555
8764
7661
4722
7721
3205
6657
1214
3754
6080
4593
3018
8792
2294
4450
7701
9301
127
7069
4513
6243
8025
4010
8632
4715
5284
4574
726
4252
4561
7354
299
6088
1090
5012
5684
3489
5639
4888
1584
1969
4846
2915
6804
2775
7306
6506
9306
5231
7740
4283
953
6725
458
8290
1504
1539
8885
138
3764
1256
257
335
1011
7060
5986
9323
4740
8994
4140
6807
8254
3963
9297
2102
2964
9207
4910
8709
4411
1672
457
5852
8037
4932
3679
8794
2362
8592
495
8432
1608
2155
7411
2881
9244
37
6535
8219
4505
8635
1928
8384
2570
8996
7610
2128
8728
6656
8935
6681
2070
176
9062
972
514
1796
4039
6838
2462
230
569
5521
4637
4939
4420
2863
672
4995
3807
447
1656
2005
5113
3297
8858
2118
6309
1926
481
1156
1509
1228
1787
5978
8678
3951
2929
4980
5039
4713
7002
151
5536
8148
3823
4709
2299
142
7067
2372
3761
9
2265
5747
2764
724
2913
3151
4525
6370
4247
9329
5494
3721
629
3621
7371
59
1999
6704
3734
2698
4691
6938
9117
8415
6353
6750
9077
2679
7623
2478
7321
6611
4007
2076
5772
6416
2264
8348
2672
6546
754
6934
7908
8546
4404
592
4748
6625
2129
7944
2377
6
8929
8275
3515
4524
3660
8710
419
6878
170
8313
7460
8753
2917
6891
6663
4918
7129
396
7256
3500
631
5585
8343
2695
6168
6292
3176
5092
5160
3701
9021
7221
7825
1216
1438
3471
2318
8923
6223
2182
7621
8514
9010
8987
1252
1972
1872
1715
8205
6463
8138
8989
5661
2890
565
2427
8946
1303
3718
6000
3620
1560
5276
8089
9260
1467
6173
7641
7520
5061
4677
5757
4400
2620
2719
8995
2079
6644
1683
8141
7754
5744
2952
7568
654
7457
5368
3310
1510
4440
1513
3072
8034
1456
9164
3163
3035
6111
5042
7161
1401
1084
8000
6672
8531
5404
6550
8379
9141
8681
7752
6394
7011
3739
8253
978
4771
6024
4828
7959
1649
1727
7073
8349
6952
661
7283
3159
2590
3496
8741
3969
2956
4565
920
1830
8558
1930
6677
6825
8256
7454
7521
4710
1768
3753
6459
5606
5292
1397
240
2733
946
6711
3242
2627
4929
5006
3202
132
2295
2746
1293
2124
5405
4065
818
7464
1820
4398
1312
6994
6920
261
987
6120
3109
331
2986
4338
7774
5122
8396
1364
8969
6712
8161
7083
7595
5940
1566
6419
8634
4432
6047
4749
6076
1161
8217
674
8494
3688
2447
4704
969
7477
1160
3243
3173
4979
9288
6860
1662
6171
225
5143
313
8327
3275
3385
7626
3103
4401
6794
5600
5043
7664
933
6830
4452
3980
1604
5875
6633
4635
5756
3329
1751
8108
4817
1989
1237
1893
2848
9334
51
8875
4981
5417
4134
877
6688
3545
4943
5615
2476
1684
3652
7396
1769
1171
6563
3415
3644
340
6630
8284
3256
7240
5371
3405
2108
6360
1734
5612
8638
2343
1103
7803
6809
3055
188
8031
3124
3683
4537
988
2297
4893
6499
3396
839
4467
5195
4041
6457
4441
6378
6472
6195
4912
6884
5922
7014
1660
38
1595
6752
4554
1292
2709
3800
6057
1980
8775
6587
6392
6263
7214
5219
282
309
6685
2253
6311
4092
18
7570
5543
4081
2515
6278
8690
5294
6184
5215
9130
6720
250
7250
4983
639
3567
7841
2636
4067
8446
5703
8609
2586
7695
1253
6701
7930
6317
5921
7719
8501
7312
4110
6219
4552
5059
4088
7975
9132
6054
692
3412
4079
6754
6950
5281
3028
8321
3877
7614
8939
4188
2223
239
4745
6875
7096
5571
4403
2640
5556
1845
6690
1825
4157
314
4682
8825
1003
6206
8093
7215
6465
99
8077
6631
4206
2523
366
1208
6043
4640
1457
5475
4985
1351
3090
5625
7307
8466
2003
8854
218
1500
4476
2293
1847
5032
2147
866
3710
2552
1749
6692
3926
4112
6458
735
9171
60
9304
6726
2630
2882
1178
1151
4922
4662
173
7233
1776
6533
4113
2423
2425
4343
5800
970
6372
1009
6607
3068
8435
6423
3126
4813
1709
1201
7104
5620
3932
5701
5724
3366
8050
4984
5023
9203
5079
627
290
779
5572
5233
1392
4975
8534
8210
2269
1143
2475
2562
905
4546
267
3536
8538
449
101
7367
2722
4605
7356
6781
8537
8697
6820
8340
8926
3821
2349
2259
6545
8100
8395
2258
2911
5108
3946
1406
8683
8296
5579
2177
8264
1425
3940
957
3647
515
5342
8363
2449
3108
1001
2937
3452
5574
4319
9184
8381
945
6876
600
5714
4871
8532
1852
8856
392
2018
8878
369
5711
9230
5304
7266
1681
7829
2309
4683
8938
2255
6159
3207
4651
2029
4341
5106
5794
9024
4712
2434
7151
7359
6431
1290
5918
8705
3438
5554
8876
7415
6290
5373
3805
2950
2331
6772
8997
6576
2307
8515
4033
3428
6487
6595
45
5792
333
762
2383
3388
666
2166
460
943
364
6980
8223
8221
637
6218
4108
5381
4649
5096
1614
8768
5095
3809
5030
984
3538
5120
2498
5222
5613
5486
5119
241
5707
9227
544
4109
7771
728
3671
9327
1230
9270
1070
8565
4769
7056
5654
7965
1793
5956
7883
1362
5479
8769
8821
8320
1901
1994
2461
5552
389
2839
6467
2762
4763
3499
1487
7599
4488
3241
8272
1131
4496
7006
7265
4897
2747
6618
5291
4563
5146
1939
6369
8548
6163
5526
4068
9030
5349
8433
748
1477
4265
9200
3878
462
6846
9040
4806
3519
6798
5464
5179
546
6044
8114
7216
6276
1495
494
8146
5434
856
8403
8071
3972
5544
3337
6855
1546
2824
1718
6009
2042
251
9076
3330
5004
192
4717
3797
1146
394
7814
7699
4659
4689
4156
7903
9054
7332
7811
1119
5531
6782
5210
8412
2633
7924
4624
8314
5666
3240
2310
4262
8160
4553
8196
2661
7213
7455
7399
870
6126
1227
1226
781
937
6343
2578
2892
4124
2792
5696
6865
6455
8312
5193
6026
5251
3787
4460
4687
7923
1140
9106
796
2482
9170
8695
2749
6734
4825
114
8319
827
4175
390
7611
7484
1249
7727
955
579
3629
8915
2958
885
7227
1424
4810
4604
1535
774
7518
5428
1955
8233
2645
2167
6484
3855
1502
4861
2333
2973
4829
1906
3966
476
9023
6960
3483
2748
5891
8174
7702
8948
5324
4396
1605
2823
7348
7347
5933
310
9082
916
4255
203
4239
5976
6200
6435
4425
787
1121
6034
13
39
3104
5961
5507
5785
1463
7339
1575
7801
5445
8283
5951
6995
999
5163
6023
3786
6536
5850
3524
3528
4508
6674
2939
8227
4598
7550
8495
8622
1152
4538
4003
1318
739
3296
8202
1552
6204
5236
3576
4699
9238
1879
488
2274
433
5587
1678
9282
7914
8552
6445
7971
8331
6880
7476
7282
1570
7271
3827
6489
8091
9287
7351
1765
5286
6921
542
1762
8553
4987
894
3622
7855
92
3131
4811
3590
6517
4510
733
4954
1360
5669
2842
8107
5646
5968
1618
1827
7709
8521
5807
5321
9239
5501
3745
4437
1586
7273
5265
6605
7917
1607
6074
4668
7061
1580
8694
8461
4573
618
9173
5243
435
8770
2421
7450
3870
8308
2605
2934
9240
6887
4512
1198
7585
7691
7738
2843
8423
7929
6971
7854
86
9128
4298
622
790
9155
6579
2203
7716
1265
8645
3834
1174
7380
623
8936
4306
8082
4312
8661
5753
7243
2768
8155
85
4143
3047
8479
7809
2833
5555
7578
1637
1936
8130
5549
8062
7143
5522
8966
5614
8105
8719
7655
7502
8268
5760
6695
5565
7615
9226
4870
4507
3160
4835
1598
2465
4422
5248
7867
1078
5015
6660
1676
5354
6391
5351
7184
6280
5936
6124
1327
2906
269
8292
2466
8809
5167
8142
8204
2713
1910
2930
2494
5592
7384
7726
5727
625
1735
5710
5518
2491
1410
4989
5183
8777
6562
4947
3692
6129
384
1097
2084
5209
3723
7272
6895
2459
543
8621
5394
6211
2074
1511
2524
7776
5055
7191
6207
7922
281
8436
2918
3141
4800
6323
7631
8903
2716
3735
3012
5301
3975
2800
7963
105
1920
7391
4909
1754
4816
5488
5145
5098
5139
5268
9317
8631
4346
7318
136
3993
1220
2151
308
7483
7582
3071
1339
3777
8191
5378
7087
1056
7465
5608
6564
512
2754
2687
1596
5376
1512
566
6382
7360
1757
8035
2296
4264
3551
1053
4716
1537
8518
254
6253
7132
8557
3490
9267
5473
2412
7539
7136
6670
3974
891
1323
5958
1217
2879
9118
1259
2317
7033
2467
6665
6244
2180
2140
7098
5126
6395
4150
547
4120
4307
1725
2737
8549
8195
1245
6286
935
1756
1701
1626
7379
3492
3717
5802
2817
1234
1005
4101
21
2576
4650
3381
1030
2844
1641
936
2729
6469
8913
8369
5994
341
81
4083
1685
5152
3380
8739
6615
3829
164
7927
4779
829
4216
8528
3641
4606
2769
6970
1545
8850
4971
5489
2008
4564
8682
7784
5768
9252
901
438
3577
2765
5904
664
3348
6298
3602
2502
8617
7684
4293
5166
5805
4126
2451
6906
7234
9243
3778
2940
1087
9053
5026
2504
5283
2820
4242
797
3925
1383
8750
7861
1403
6973
7617
968
3065
5395
4347
8144
2688
6527
8597
8673
7327
6331
1422
7115
244
7013
2092
54
7970
5742
3464
4823
8588
2938
3060
6406
4149
2375
6616
8803
1555
4369
1380
3011
6144
3367
4990
7370
7131
1995
2602
985
8785
8480
9125
1927
3269
3771
1032
7378
6900
5726
2731
2020
4503
3313
6727
8793
2304
523
6036
58
7993
5512
5049
2721
8482
673
7937
1168
4472
8247
7287
9017
6421
9190
3584
1819
1792
2810
6033
638
6749
7677
981
7160
4726
1886
7845
7911
6975
568
7422
4613
4501
2569
4263
3206
4133
2420
3706
8894
2263
5774
4925
9180
8888
2945
2091
1873
6303
729
6728
2156
3267
1860
6597
1374
4930
5253
938
580
5825
4839
166
8198
6892
8701
74
7094
7284
8954
3156
6140
4279
5594
2229
7535
5466
8413
7105
8192
2632
7638
9308
8530
832
4643
2201
3268
4322
6510
2967
262
403
7973
1258
8828
4036
5838
9263
8529
2788
4202
237
3838
1291
2305
4056
5628
7281
1430
6476
7935
2850
6041
2013
4016
4576
5312
6827
6321
8669
8439
830
1942
1519
2750
6106
6993
6235
5899
7313
5331
4371
7086
4399
8600
2660
5409
3465
5499
6231
5745
1801
5337
4468
1451
4192
1275
8230
2302
1114
4960
8860
3900
6468
5058
1505
8868
5588
3858
1947
2565
1472
8499
243
8442
6583
7085
5374
2250
4291
4426
492
2311
8305
3662
5338
8780
7488
3890
5005
2442
4680
7358
9116
4397
5999
587
7902
83
3566
2134
8942
4767
6601
2456
1745
5736
5254
8017
4015
7690
3798
8947
1067
2116
7945
590
2547
2535
64
2053
5359
2493
6669
4351
6412
7473
6147
7175
6983
5196
745
2657
3497
697
3161
7528
2239
5991
3201
7681
2440
5189
2959
2044
8917
2046
6313
6333
5318
2763
4301
2555
2213
2933
4121
1340
3903
4392
7889
5323
1055
707
3857
518
6078
5134
6645
9138
1592
680
4446
7943
3461
3887
5601
2321
6621
558
4914
913
5637
6453
8511
4531
1218
5508
2603
6802
8426
8297
2947
5971
6552
5262
5935
782
7435
8357
6139
1136
1473
5008
3585
3627
2914
5356
2997
2347
881
5652
4849
8808
8351
4017
2010
6836
7616
4391
3630
3712
6099
2969
5238
4333
2301
4406
1236
1050
1864
1104
8408
8251
8795
5879
3365
7481
8206
2452
1767
8859
124
3948
4444
8962
4438
5003
1740
8428
3105
5117
1095
1480
8755
7881
3097
4877
155
1917
2455
6042
337
6724
6045
8483
7135
2242
4566
1679
834
1746
795
3548
2314
2036
4046
9129
6979
7084
5091
2413
8170
5775
1817
529
7220
813
2916
5130
8972
126
1243
2370
4831
9122
3010
5104
2613
6761
7482
909
2146
4595
5340
3512
6283
2346
653
6121
2615
7421
1869
1002
8834
2991
8992
632
1093
4543
645
2352
4115
373
1483
6966
8598
3896
3434
5987
8318
1815
1223
1548
6885
5073
6330
2573
1369
4095
1431
2185
5766
1301
7258
8048
7598
2847
1996
2378
8561
743
6381
271
1956
7439
7596
7134
6636
5804
1858
6214
4730
8536
1203
3118
9202
1875
5885
8975
168
5898
4014
4186
3346
3041
5558
9296
8157
4339
3234
1738
2604
6803
5387
5590
125
2173
8012
8005
4858
3069
651
372
378
8366
6299
1449
7793
8541
3235
8043
3086
3983
6949
4690
2176
6494
7637
8406
3856
7408
350
7021
8224
7044
7662
6697
7679
169
528
7029
2790
7138
7432
7602
8333
1582
1378
519
482
9279
8015
6592
4514
3542
2612
628
5053
6699
6227
2094
1621
847
3598
2728
8490
7276
6620
8345
9216
4278
4059
9058
5063
5816
4173
8134
1997
3182
3224
8129
5109
4494
189
7640
8243
180
2963
1123
5593
3263
4185
7140
8990
6320
9275
4601
4854
5907
1135
8083
5964
7788
1992
8069
9174
6160
35
8572
2865
46
3952
6418
2510
5783
20
3816
2715
3930
2548
5204
4122
4103
708
7756
3825
777
3550
8502
3929
5440
6751
7764
4070
7331
3743
9131
9206
3828
23
41
4197
234
5723
7622
8832
4626
2169
5599
2976
5266
1967
1150
5334
90
822
2538
3169
6771
7442
498
4967
5580
7581
7680
4728
1115
4040
1064
3106
6266
4415
9294
5597
7059
197
7218
6948
5690
4234
1653
4485
4019
3370
919
1330
6085
2078
3768
5427
4545
2435
8862
3633
8145
5221
1388
5913
8140
7471
7156
6989
1190
6832
2830
4387
3454
7469
2910
4526
5187
2410
9223
6247
6912
4681
1300
7407
8612
6523
3616
6894
7253
4515
5874
5448
7137
7957
1130
3092
7054
3516
5797
1000
2727
4336
9090
6403
7255
8919
6522
6760
8898
4803
1938
374
8686
9150
3985
7045
3475
6065
7991
1409
7851
6671
6090
5826
7857
1155
8964
1117
7072
6064
2497
4899
2397
3189
2369
15
5027
5754
8950
5617
8391
914
6264
279
6174
5184
3733
7392
5278
2924
567
7994
352
8084
2148
2723
3359
70
1870
7708
220
3994
9013
3191
9220
4155
5717
1110
2198
9179
785
5325
4770
4250
52
4634
5072
9037
601
8036
7996
2483
7232
8675
8836
1279
5346
7676
6104
1515
4603
5607
7894
5144
2628
68
440
3586
3083
4830
4378
7762
1134
4542
7850
6296
2866
4011
8751
4776
7954
7102
5697
2032
5729
5017
6962
2051
1092
764
9019
2759
8581
1484
8618
912
2382
4892
8447
8176
5491
5695
5504
1060
7064
709
578
4320
2379
7649
8416
1613
5344
7512
7865
3037
6689
6557
1569
5955
3707
9168
8566
1775
5950
6943
7804
434
6179
9300
1142
7947
6456
6291
5789
6538
9134
3049
5075
5399
5161
1623
948
6302
6063
7516
117
506
3302
7146
355
3854
1081
2827
1496
2574
6167
3183
4287
5482
1722
7319
7277
3860
3443
3298
8364
3826
7254
2360
5093
7039
6325
4230
2567
6241
4443
559
2625
4228
8967
6405
1674
3936
4475
8556
8585
896
3713
6259
4297
6718
2392
2279
4927
1283
2374
2860
7665
663
596
6293
6805
2811
7383
8306
8330
3153
2153
2618
2441
3615
8092
552
5285
5255
8124
9247
5530
8175
6242
5660
3433
1610
1832
3892
3862
640
2127
2474
4196
3495
7217
5206
4836
7759
4376
800
4227
3699
9055
5665
6826
7463
9065
4720
5069
3245
3453
3358
6532
5970
7921
4087
1547
3424
8040
7995
6787
9069
8716
2561
8199
1479
2767
7818
7145
604
7597
4896
9281
4666
185
8171
7978
3059
9196
9221
2135
1800
2974
1529
5948
446
4436
8672
3508
6208
5673
6998
5203
278
7041
9110
5853
8121
1764
3046
2400
6575
4738
2228
7761
9322
7019
6931
6383
6762
283
3935
2534
7717
6785
471
8214
231
4241
5310
3844
5746
2011
7209
336
6433
756
9167
6741
3345
7685
4018
6682
9147
4790
5836
5906
8747
676
3964
6362
3510
7510
2308
1806
5917
1189
4012
3387
1331
5319
5423
8900
147
3780
1696
9111
6783
6497
4104
1898
3987
260
4616
2121
9283
1400
2437
4670
2735
1163
2096
6521
1423
4523
2243
6667
6990
3944
6915
6763
5611
404
2691
1015
7092
7562
8624
2291
4193
5934
5503
2326
4408
2960
842
1963
3354
5568
9050
3806
439
9154
6055
6451
2190
7633
688
4354
8890
2813
2872
8102
8317
6609
1497
8389
6449
1682
3594
5103
5812
863
268
3054
8079
2260
2027
3091
7687
6703
3557
2019
8427
2799
8182
6641
3168
2284
1934
4865
1077
6507
1658
3811
1774
7897
2238
2943
191
3869
3246
4057
3188
414
8072
7838
1382
4962
6010
5363
4042
1983
4077
7429
1833
3583
4044
1109
1295
386
5481
3927
311
================================================
FILE: EgoTracks/tracking/dataset/data_specs/got10k_val_split.txt
================================================
1349
5651
5878
562
2202
8904
765
1501
8654
2975
2689
3680
5180
1900
7707
4723
8912
4029
3579
869
2888
8657
6599
741
4288
2244
7357
5704
8791
208
8587
7969
4805
8526
4887
8871
7468
3343
886
7794
5764
2646
6454
6101
7885
7744
1297
4119
4856
122
2286
2925
5131
3570
5843
3027
5320
5626
540
1862
5401
7335
699
7760
9198
3259
7345
8698
1280
6479
3100
3988
1322
5737
1268
3257
6791
3326
4815
7644
1082
2826
6821
8984
2553
5290
5909
4762
9242
8096
8066
4325
6666
7193
7114
8060
2376
7872
6788
3544
5460
3507
2509
6626
3429
5542
4220
2968
5271
4249
3863
1868
5581
2012
6270
8038
4050
121
2845
1565
1998
2275
5524
6068
7624
4913
9277
1506
803
8848
5925
2450
2072
8190
4753
9162
1923
825
7303
9028
2088
8516
1556
5937
7847
2367
7549
1049
1521
4739
3931
8958
4130
7877
7876
897
5985
7346
7537
111
3700
1126
7896
1288
3419
4673
1051
5720
1068
3458
146
291
6256
5514
2857
4580
6239
6525
8717
391
4841
6676
4360
1453
4211
73
1675
1987
4025
1321
662
8265
6424
2758
7765
7656
3209
7497
7600
9039
7697
5177
2983
5622
9295
1200
3284
964
2024
1269
4551
8088
5659
2212
5199
5551
8607
5573
2247
5200
6341
7951
8429
7720
5919
1273
3529
6707
9176
7552
3255
5649
6110
9235
1137
9272
775
788
5786
5186
6746
2667
9145
7630
3953
1828
8827
6471
4702
7815
467
6387
3195
6238
6508
2373
5983
4931
2948
921
2438
517
3949
2137
3216
5683
3695
1719
4837
9159
6981
860
7410
5497
1770
5557
8810
5194
4857
9100
6329
2609
1925
3686
9041
4924
349
9187
3393
3661
7120
6858
4587
3831
3130
5396
5060
6486
3937
8023
824
5398
1354
8861
5534
7292
4389
6029
6226
3505
4326
7445
581
6089
3450
7324
6516
6775
1207
4575
5135
9265
3918
9020
3473
3898
7812
6571
6757
6639
2557
1206
6148
7325
8790
4938
7026
4383
8041
1250
7267
1952
7561
8811
4941
8373
4848
6602
8355
8104
5214
6654
4330
995
3181
3422
456
1782
3408
6530
719
7587
5910
3058
740
2009
4207
5336
2798
9229
8668
2473
4221
1493
3281
171
9157
9139
7766
6220
9127
3324
5308
3708
2431
8080
2093
2585
406
7040
5064
5247
4758
6512
2953
4257
4935
2705
2572
3436
8513
5884
1385
4852
2637
7091
2761
6007
8332
6694
2422
4917
2186
6898
1390
6965
3132
7698
475
2002
2692
5024
7365
7373
4091
1731
947
3962
8692
1788
8734
8656
6862
6856
1950
1914
5658
3635
1620
4780
2580
1454
2786
687
7238
3648
6452
1197
3190
5900
9043
4958
1935
1821
1187
1153
7737
7223
3820
7169
7350
5674
6254
3025
6680
1690
2899
3893
1577
5728
9189
5077
34
3560
2179
5462
1402
3654
1376
7936
4246
5506
1179
5647
4686
8644
1352
2855
6079
2254
2668
2287
2457
3418
7264
677
3074
2655
1042
2210
4504
7089
8309
4209
4280
3258
2977
84
4705
1244
3511
6355
8813
3228
9266
1122
613
732
5202
8425
2638
6470
2886
3541
8132
2063
8201
5129
2818
7949
6936
8090
4465
7295
5239
7009
9271
8563
2832
952
8136
6776
3565
5188
7288
6999
285
5487
7763
7608
8584
2071
7868
2804
3655
7048
6847
3276
4082
4272
3910
3709
1574
4559
7580
7081
5014
7769
8183
6386
7574
356
4937
2487
9315
7572
3040
671
2682
8626
3868
8623
387
8679
4074
1481
3527
3595
4754
2453
1579
4638
9123
1829
316
3009
3691
763
4875
3572
4642
3128
4273
2777
6032
4793
233
7147
996
3199
8835
3517
7210
6125
6037
3684
8589
3915
3095
8310
3180
7043
4458
2889
57
4483
7667
8375
1434
7493
6986
4733
8471
5827
2111
1313
7986
3075
2614
7547
4977
8527
3212
7300
5842
5244
3291
597
1007
2030
227
3830
5540
247
5643
9333
1958
3096
1371
5220
7926
2927
1516
7130
193
1522
6165
6923
3794
4223
5535
2472
8630
3971
9101
2946
222
4609
7291
8542
6501
7548
4557
6274
1010
5226
7309
1317
9056
6275
1624
1099
4191
4030
7270
5392
2316
3819
1670
8154
8045
4807
8864
2391
5908
8338
8218
6400
9193
3165
843
6613
6941
4380
9332
5629
7557
4321
3702
681
734
1159
4665
5959
1697
5509
8774
7389
3832
3751
8637
3079
1680
6841
703
684
8293
3682
5733
4818
3231
3078
5562
9001
3889
7024
2519
1713
3287
219
6021
8776
2289
7212
4832
4684
4617
4237
2649
8185
6326
3568
551
1426
4181
8869
312
2905
4165
8248
2558
900
1044
8613
7743
5437
7604
3122
5708
8649
2878
4695
4491
1929
7533
5223
7711
915
1844
5751
3008
8055
961
6142
4636
61
198
2271
5698
4596
4500
5709
5819
7972
2992
1643
1048
6281
8886
360
4198
1841
6814
3960
2606
7001
5888
450
7133
7015
7034
5153
8920
5066
469
1302
8816
463
8651
5869
8193
6582
5578
1231
9274
7260
7751
8052
6799
2089
2342
8451
3260
5550
7795
2288
1205
40
496
8367
7836
5973
3908
5242
5062
2706
997
6514
5419
9201
1965
6062
3050
5302
8735
358
2398
7470
1644
8179
7047
1549
5414
2539
7381
589
8166
8505
6035
3956
4540
6721
8074
1062
2384
2531
7159
3502
3902
4584
2554
264
8720
2849
4916
5218
7202
883
4560
1677
4317
7863
4509
6577
2903
1452
1416
5369
473
6233
6359
5992
4934
8059
6834
4907
3320
8267
8280
2066
2402
1485
3772
3732
4764
9126
3575
5564
4768
5641
1884
2330
1804
344
698
3089
1532
4454
761
7289
8094
3432
1747
6811
8722
8826
4646
3222
8614
2901
7003
652
8663
4266
413
810
75
3334
4905
6438
4756
5137
6528
6534
6988
6177
8533
889
5384
7201
5132
7802
6864
3973
873
4840
1482
8376
3769
5858
6675
4286
2593
5863
4353
7817
7540
4999
4838
2303
6002
7913
1508
5317
7755
2784
4964
3431
6209
3755
6022
6399
6232
3954
455
5416
6448
1558
7591
245
140
9210
6585
4084
967
7798
6795
7095
6733
3861
9264
361
1045
755
8042
7074
7778
6415
4724
6450
2049
1563
1307
3485
1790
7869
3282
6907
3920
2868
5801
5632
1079
5009
3955
7517
5128
3417
3019
2725
1784
2312
2753
6976
342
8266
1849
2273
5037
7880
3793
7401
5412
8279
1257
3670
9049
3266
8955
6519
8916
2858
694
5650
1019
4669
1785
3533
5877
2704
8603
3726
6668
497
1085
6815
6157
6646
6964
186
8097
5645
8481
8215
3775
2542
7514
5699
4072
3518
5767
3239
3740
1404
8981
4086
6397
6984
4204
6899
682
6589
3317
2944
3456
4340
7424
9208
6504
4409
1
145
1882
4620
2634
4992
5453
4481
3377
266
7875
530
1235
7605
504
1771
8489
345
7353
7797
7174
5914
2871
5721
6067
3582
7653
5467
6234
691
8758
2122
1213
2908
1492
1437
2187
1266
2395
7278
8491
5256
1554
8163
5966
7128
7904
1691
6272
1264
3996
1706
1334
1316
6478
6935
1518
6700
8703
8744
8152
8778
5367
4218
9007
6312
606
7565
5293
2891
675
2125
2120
826
7008
5705
7748
8010
1498
5330
5472
2215
7627
3016
6588
1850
4128
8569
6987
7566
148
8151
8789
7907
8596
715
6018
9060
3872
1750
5889
4047
5960
3120
3449
1421
1102
3333
9197
8796
8123
8007
2028
8404
1945
1985
8109
5380
8438
3504
6739
4180
5835
4243
25
4002
1976
3482
8392
158
5181
4885
8985
11
6872
6425
5926
7062
5083
8394
4259
5844
1990
3942
5532
2220
28
5957
149
6748
1663
3559
7647
2566
1359
8787
5259
7010
554
8231
4229
6005
8172
8125
1350
3571
9051
1973
1386
1781
5788
159
7007
3220
1846
3093
4445
2056
8370
3211
1113
4384
2231
273
4276
642
7663
5311
265
226
9012
7879
118
7109
7251
1760
8667
2876
7162
3552
6901
6779
5021
6524
4957
3114
4544
441
1848
2136
2458
8662
1127
5541
3026
1080
6780
2224
8259
1073
9000
7244
7977
500
4435
7376
7979
1435
9291
7704
3791
3521
210
7388
1039
6269
4052
8570
3285
564
8039
3546
6203
1183
6107
4147
6216
2234
7185
3192
7155
2001
7777
876
944
908
7791
5465
6784
65
9172
5675
7075
3886
7891
2978
1008
5630
591
5067
1139
577
9015
574
8137
7786
5765
4900
4090
7842
5741
================================================
FILE: EgoTracks/tracking/dataset/data_specs/got10k_vot_exclude.txt
================================================
GOT-10k_Train_000004
GOT-10k_Train_000013
GOT-10k_Train_000015
GOT-10k_Train_000020
GOT-10k_Train_000024
GOT-10k_Train_000034
GOT-10k_Train_000038
GOT-10k_Train_000048
GOT-10k_Train_000051
GOT-10k_Train_000059
GOT-10k_Train_000077
GOT-10k_Train_000081
GOT-10k_Train_000089
GOT-10k_Train_000093
GOT-10k_Train_000094
GOT-10k_Train_000096
GOT-10k_Train_000104
GOT-10k_Train_000107
GOT-10k_Train_000108
GOT-10k_Train_000120
GOT-10k_Train_000132
GOT-10k_Train_000170
GOT-10k_Train_000186
GOT-10k_Train_000212
GOT-10k_Train_000213
GOT-10k_Train_000222
GOT-10k_Train_000223
GOT-10k_Train_000240
GOT-10k_Train_000246
GOT-10k_Train_000249
GOT-10k_Train_000266
GOT-10k_Train_000268
GOT-10k_Train_000287
GOT-10k_Train_000293
GOT-10k_Train_000305
GOT-10k_Train_000316
GOT-10k_Train_000319
GOT-10k_Train_000322
GOT-10k_Train_000331
GOT-10k_Train_000334
GOT-10k_Train_000354
GOT-10k_Train_000361
GOT-10k_Train_000368
GOT-10k_Train_000382
GOT-10k_Train_000401
GOT-10k_Train_000417
GOT-10k_Train_000448
GOT-10k_Train_000454
GOT-10k_Train_000458
GOT-10k_Train_000466
GOT-10k_Train_000475
GOT-10k_Train_000484
GOT-10k_Train_000488
GOT-10k_Train_000501
GOT-10k_Train_000510
GOT-10k_Train_000512
GOT-10k_Train_000519
GOT-10k_Train_000539
GOT-10k_Train_000544
GOT-10k_Train_000555
GOT-10k_Train_000564
GOT-10k_Train_000568
GOT-10k_Train_000583
GOT-10k_Train_000587
GOT-10k_Train_000593
GOT-10k_Train_000621
GOT-10k_Train_000624
GOT-10k_Train_000625
GOT-10k_Train_000638
GOT-10k_Train_000648
GOT-10k_Train_000654
GOT-10k_Train_000669
GOT-10k_Train_000701
GOT-10k_Train_000709
GOT-10k_Train_000712
GOT-10k_Train_000731
GOT-10k_Train_000734
GOT-10k_Train_000737
GOT-10k_Train_000744
GOT-10k_Train_000746
GOT-10k_Train_000748
GOT-10k_Train_000762
GOT-10k_Train_000764
GOT-10k_Train_000765
GOT-10k_Train_000766
GOT-10k_Train_000767
GOT-10k_Train_000775
GOT-10k_Train_000783
GOT-10k_Train_000790
GOT-10k_Train_000829
GOT-10k_Train_000857
GOT-10k_Train_000859
GOT-10k_Train_000867
GOT-10k_Train_000872
GOT-10k_Train_000880
GOT-10k_Train_000884
GOT-10k_Train_000909
GOT-10k_Train_000915
GOT-10k_Train_000922
GOT-10k_Train_000928
GOT-10k_Train_000933
GOT-10k_Train_000941
GOT-10k_Train_000961
GOT-10k_Train_000966
GOT-10k_Train_000968
GOT-10k_Train_000971
GOT-10k_Train_000972
GOT-10k_Train_000995
GOT-10k_Train_001003
GOT-10k_Train_001010
GOT-10k_Train_001011
GOT-10k_Train_001019
GOT-10k_Train_001021
GOT-10k_Train_001035
GOT-10k_Train_001039
GOT-10k_Train_001047
GOT-10k_Train_001057
GOT-10k_Train_001069
GOT-10k_Train_001077
GOT-10k_Train_001079
GOT-10k_Train_001085
GOT-10k_Train_001088
GOT-10k_Train_001091
GOT-10k_Train_001104
GOT-10k_Train_001112
GOT-10k_Train_001113
GOT-10k_Train_001124
GOT-10k_Train_001128
GOT-10k_Train_001143
GOT-10k_Train_001145
GOT-10k_Train_001146
GOT-10k_Train_001148
GOT-10k_Train_001150
GOT-10k_Train_001154
GOT-10k_Train_001156
GOT-10k_Train_001157
GOT-10k_Train_001163
GOT-10k_Train_001181
GOT-10k_Train_001184
GOT-10k_Train_001189
GOT-10k_Train_001200
GOT-10k_Train_001225
GOT-10k_Train_001264
GOT-10k_Train_001288
GOT-10k_Train_001296
GOT-10k_Train_001298
GOT-10k_Train_001299
GOT-10k_Train_001314
GOT-10k_Train_001319
GOT-10k_Train_001329
GOT-10k_Train_001331
GOT-10k_Train_001340
GOT-10k_Train_001374
GOT-10k_Train_001384
GOT-10k_Train_001394
GOT-10k_Train_001407
GOT-10k_Train_001415
GOT-10k_Train_001430
GOT-10k_Train_001433
GOT-10k_Train_001453
GOT-10k_Train_001457
GOT-10k_Train_001471
GOT-10k_Train_001473
GOT-10k_Train_001480
GOT-10k_Train_001484
GOT-10k_Train_001489
GOT-10k_Train_001514
GOT-10k_Train_001537
GOT-10k_Train_001544
GOT-10k_Train_001545
GOT-10k_Train_001551
GOT-10k_Train_001558
GOT-10k_Train_001560
GOT-10k_Train_001562
GOT-10k_Train_001563
GOT-10k_Train_001570
GOT-10k_Train_001576
GOT-10k_Train_001604
GOT-10k_Train_001615
GOT-10k_Train_001617
GOT-10k_Train_001618
GOT-10k_Train_001619
GOT-10k_Train_001624
GOT-10k_Train_001650
GOT-10k_Train_001651
GOT-10k_Train_001663
GOT-10k_Train_001673
GOT-10k_Train_001685
GOT-10k_Train_001692
GOT-10k_Train_001700
GOT-10k_Train_001722
GOT-10k_Train_001731
GOT-10k_Train_001732
GOT-10k_Train_001738
GOT-10k_Train_001740
GOT-10k_Train_001742
GOT-10k_Train_001747
GOT-10k_Train_001759
GOT-10k_Train_001769
GOT-10k_Train_001781
GOT-10k_Train_001791
GOT-10k_Train_001794
GOT-10k_Train_001795
GOT-10k_Train_001818
GOT-10k_Train_001833
GOT-10k_Train_001836
GOT-10k_Train_001841
GOT-10k_Train_001852
GOT-10k_Train_001863
GOT-10k_Train_001865
GOT-10k_Train_001878
GOT-10k_Train_001898
GOT-10k_Train_001919
GOT-10k_Train_001923
GOT-10k_Train_001929
GOT-10k_Train_001935
GOT-10k_Train_001938
GOT-10k_Train_001942
GOT-10k_Train_001955
GOT-10k_Train_001964
GOT-10k_Train_001966
GOT-10k_Train_001982
GOT-10k_Train_002005
GOT-10k_Train_002009
GOT-10k_Train_002035
GOT-10k_Train_002068
GOT-10k_Train_002073
GOT-10k_Train_002076
GOT-10k_Train_002084
GOT-10k_Train_002112
GOT-10k_Train_002115
GOT-10k_Train_002116
GOT-10k_Train_002123
GOT-10k_Train_002125
GOT-10k_Train_002129
GOT-10k_Train_002139
GOT-10k_Train_002146
GOT-10k_Train_002166
GOT-10k_Train_002168
GOT-10k_Train_002176
GOT-10k_Train_002184
GOT-10k_Train_002190
GOT-10k_Train_002192
GOT-10k_Train_002211
GOT-10k_Train_002216
GOT-10k_Train_002233
GOT-10k_Train_002240
GOT-10k_Train_002247
GOT-10k_Train_002250
GOT-10k_Train_002252
GOT-10k_Train_002253
GOT-10k_Train_002261
GOT-10k_Train_002274
GOT-10k_Train_002276
GOT-10k_Train_002292
GOT-10k_Train_002302
GOT-10k_Train_002304
GOT-10k_Train_002305
GOT-10k_Train_002320
GOT-10k_Train_002345
GOT-10k_Train_002355
GOT-10k_Train_002359
GOT-10k_Train_002363
GOT-10k_Train_002374
GOT-10k_Train_002376
GOT-10k_Train_002389
GOT-10k_Train_002393
GOT-10k_Train_002400
GOT-10k_Train_002408
GOT-10k_Train_002418
GOT-10k_Train_002437
GOT-10k_Train_002440
GOT-10k_Train_002442
GOT-10k_Train_002454
GOT-10k_Train_002456
GOT-10k_Train_002465
GOT-10k_Train_002466
GOT-10k_Train_002474
GOT-10k_Train_002479
GOT-10k_Train_002484
GOT-10k_Train_002511
GOT-10k_Train_002514
GOT-10k_Train_002517
GOT-10k_Train_002523
GOT-10k_Train_002527
GOT-10k_Train_002534
GOT-10k_Train_002555
GOT-10k_Train_002587
GOT-10k_Train_002589
GOT-10k_Train_002612
GOT-10k_Train_002627
GOT-10k_Train_002639
GOT-10k_Train_002652
GOT-10k_Train_002693
GOT-10k_Train_002699
GOT-10k_Train_002716
GOT-10k_Train_002725
GOT-10k_Train_002727
GOT-10k_Train_002730
GOT-10k_Train_002755
GOT-10k_Train_002756
GOT-10k_Train_002760
GOT-10k_Train_002763
GOT-10k_Train_002837
GOT-10k_Train_002841
GOT-10k_Train_002856
GOT-10k_Train_002862
GOT-10k_Train_002863
GOT-10k_Train_002866
GOT-10k_Train_002877
GOT-10k_Train_002884
GOT-10k_Train_002886
GOT-10k_Train_002887
GOT-10k_Train_002907
GOT-10k_Train_002908
GOT-10k_Train_002909
GOT-10k_Train_002914
GOT-10k_Train_002920
GOT-10k_Train_002922
GOT-10k_Train_002936
GOT-10k_Train_002940
GOT-10k_Train_002944
GOT-10k_Train_002953
GOT-10k_Train_002961
GOT-10k_Train_002964
GOT-10k_Train_002996
GOT-10k_Train_003003
GOT-10k_Train_003004
GOT-10k_Train_003007
GOT-10k_Train_003012
GOT-10k_Train_003027
GOT-10k_Train_003028
GOT-10k_Train_003033
GOT-10k_Train_003034
GOT-10k_Train_003036
GOT-10k_Train_003044
GOT-10k_Train_003056
GOT-10k_Train_003069
GOT-10k_Train_003078
GOT-10k_Train_003079
GOT-10k_Train_003095
GOT-10k_Train_003096
GOT-10k_Train_003107
GOT-10k_Train_003108
GOT-10k_Train_003127
GOT-10k_Train_003128
GOT-10k_Train_003129
GOT-10k_Train_003132
GOT-10k_Train_003146
GOT-10k_Train_003155
GOT-10k_Train_003173
GOT-10k_Train_003208
GOT-10k_Train_003239
GOT-10k_Train_003245
GOT-10k_Train_003246
GOT-10k_Train_003262
GOT-10k_Train_003275
GOT-10k_Train_003283
GOT-10k_Train_003296
GOT-10k_Train_003308
GOT-10k_Train_003310
GOT-10k_Train_003313
GOT-10k_Train_003317
GOT-10k_Train_003318
GOT-10k_Train_003354
GOT-10k_Train_003379
GOT-10k_Train_003384
GOT-10k_Train_003396
GOT-10k_Train_003401
GOT-10k_Train_003423
GOT-10k_Train_003435
GOT-10k_Train_003438
GOT-10k_Train_003442
GOT-10k_Train_003444
GOT-10k_Train_003455
GOT-10k_Train_003456
GOT-10k_Train_003464
GOT-10k_Train_003466
GOT-10k_Train_003474
GOT-10k_Train_003482
GOT-10k_Train_003488
GOT-10k_Train_003502
GOT-10k_Train_003515
GOT-10k_Train_003520
GOT-10k_Train_003530
GOT-10k_Train_003551
GOT-10k_Train_003570
GOT-10k_Train_003571
GOT-10k_Train_003578
GOT-10k_Train_003583
GOT-10k_Train_003590
GOT-10k_Train_003593
GOT-10k_Train_003618
GOT-10k_Train_003626
GOT-10k_Train_003650
GOT-10k_Train_003652
GOT-10k_Train_003663
GOT-10k_Train_003690
GOT-10k_Train_003704
GOT-10k_Train_003709
GOT-10k_Train_003716
GOT-10k_Train_003721
GOT-10k_Train_003722
GOT-10k_Train_003724
GOT-10k_Train_003729
GOT-10k_Train_003756
GOT-10k_Train_003768
GOT-10k_Train_003782
GOT-10k_Train_003786
GOT-10k_Train_003788
GOT-10k_Train_003791
GOT-10k_Train_003820
GOT-10k_Train_003821
GOT-10k_Train_003827
GOT-10k_Train_003834
GOT-10k_Train_003835
GOT-10k_Train_003839
GOT-10k_Train_003843
GOT-10k_Train_003854
GOT-10k_Train_003856
GOT-10k_Train_003881
GOT-10k_Train_003899
GOT-10k_Train_003904
GOT-10k_Train_003906
GOT-10k_Train_003913
GOT-10k_Train_003937
GOT-10k_Train_003940
GOT-10k_Train_003943
GOT-10k_Train_003950
GOT-10k_Train_003972
GOT-10k_Train_003974
GOT-10k_Train_003978
GOT-10k_Train_003981
GOT-10k_Train_003982
GOT-10k_Train_004003
GOT-10k_Train_004004
GOT-10k_Train_004008
GOT-10k_Train_004012
GOT-10k_Train_004013
GOT-10k_Train_004030
GOT-10k_Train_004036
GOT-10k_Train_004040
GOT-10k_Train_004052
GOT-10k_Train_004054
GOT-10k_Train_004055
GOT-10k_Train_004057
GOT-10k_Train_004063
GOT-10k_Train_004068
GOT-10k_Train_004072
GOT-10k_Train_004075
GOT-10k_Train_004078
GOT-10k_Train_004082
GOT-10k_Train_004102
GOT-10k_Train_004103
GOT-10k_Train_004105
GOT-10k_Train_004111
GOT-10k_Train_004120
GOT-10k_Train_004122
GOT-10k_Train_004124
GOT-10k_Train_004142
GOT-10k_Train_004158
GOT-10k_Train_004170
GOT-10k_Train_004175
GOT-10k_Train_004181
GOT-10k_Train_004190
GOT-10k_Train_004193
GOT-10k_Train_004194
GOT-10k_Train_004199
GOT-10k_Train_004202
GOT-10k_Train_004217
GOT-10k_Train_004225
GOT-10k_Train_004229
GOT-10k_Train_004230
GOT-10k_Train_004234
GOT-10k_Train_004241
GOT-10k_Train_004246
GOT-10k_Train_004249
GOT-10k_Train_004255
GOT-10k_Train_004268
GOT-10k_Train_004276
GOT-10k_Train_004292
GOT-10k_Train_004293
GOT-10k_Train_004295
GOT-10k_Train_004296
GOT-10k_Train_004302
GOT-10k_Train_004324
GOT-10k_Train_004337
GOT-10k_Train_004342
GOT-10k_Train_004351
GOT-10k_Train_004356
GOT-10k_Train_004376
GOT-10k_Train_004380
GOT-10k_Train_004395
GOT-10k_Train_004398
GOT-10k_Train_004399
GOT-10k_Train_004408
GOT-10k_Train_004430
GOT-10k_Train_004439
GOT-10k_Train_004440
GOT-10k_Train_004462
GOT-10k_Train_004473
GOT-10k_Train_004476
GOT-10k_Train_004478
GOT-10k_Train_004481
GOT-10k_Train_004483
GOT-10k_Train_004484
GOT-10k_Train_004503
GOT-10k_Train_004513
GOT-10k_Train_004517
GOT-10k_Train_004533
GOT-10k_Train_004536
GOT-10k_Train_004594
GOT-10k_Train_004595
GOT-10k_Train_004607
GOT-10k_Train_004619
GOT-10k_Train_004626
GOT-10k_Train_004642
GOT-10k_Train_004646
GOT-10k_Train_004652
GOT-10k_Train_004658
GOT-10k_Train_004660
GOT-10k_Train_004661
GOT-10k_Train_004668
GOT-10k_Train_004673
GOT-10k_Train_004679
GOT-10k_Train_004694
GOT-10k_Train_004702
GOT-10k_Train_004709
GOT-10k_Train_004717
GOT-10k_Train_004757
GOT-10k_Train_004768
GOT-10k_Train_004824
GOT-10k_Train_004826
GOT-10k_Train_004833
GOT-10k_Train_004839
GOT-10k_Train_004843
GOT-10k_Train_004852
GOT-10k_Train_004862
GOT-10k_Train_004865
GOT-10k_Train_004878
GOT-10k_Train_004880
GOT-10k_Train_004881
GOT-10k_Train_004902
GOT-10k_Train_004906
GOT-10k_Train_004920
GOT-10k_Train_004950
GOT-10k_Train_004951
GOT-10k_Train_004952
GOT-10k_Train_004973
GOT-10k_Train_004983
GOT-10k_Train_004984
GOT-10k_Train_004990
GOT-10k_Train_004993
GOT-10k_Train_004995
GOT-10k_Train_005004
GOT-10k_Train_005007
GOT-10k_Train_005022
GOT-10k_Train_005024
GOT-10k_Train_005040
GOT-10k_Train_005046
GOT-10k_Train_005047
GOT-10k_Train_005058
GOT-10k_Train_005063
GOT-10k_Train_005072
GOT-10k_Train_005097
GOT-10k_Train_005098
GOT-10k_Train_005099
GOT-10k_Train_005108
GOT-10k_Train_005113
GOT-10k_Train_005119
GOT-10k_Train_005126
GOT-10k_Train_005146
GOT-10k_Train_005166
GOT-10k_Train_005191
GOT-10k_Train_005207
GOT-10k_Train_005255
GOT-10k_Train_005269
GOT-10k_Train_005280
GOT-10k_Train_005310
GOT-10k_Train_005317
GOT-10k_Train_005319
GOT-10k_Train_005334
GOT-10k_Train_005338
GOT-10k_Train_005339
GOT-10k_Train_005354
GOT-10k_Train_005364
GOT-10k_Train_005382
GOT-10k_Train_005385
GOT-10k_Train_005389
GOT-10k_Train_005390
GOT-10k_Train_005396
GOT-10k_Train_005398
GOT-10k_Train_005399
GOT-10k_Train_005401
GOT-10k_Train_005413
GOT-10k_Train_005415
GOT-10k_Train_005420
GOT-10k_Train_005457
GOT-10k_Train_005465
GOT-10k_Train_005488
GOT-10k_Train_005493
GOT-10k_Train_005510
GOT-10k_Train_005523
GOT-10k_Train_005538
GOT-10k_Train_005553
GOT-10k_Train_005556
GOT-10k_Train_005575
GOT-10k_Train_005577
GOT-10k_Train_005582
GOT-10k_Train_005594
GOT-10k_Train_005606
GOT-10k_Train_005611
GOT-10k_Train_005636
GOT-10k_Train_005639
GOT-10k_Train_005642
GOT-10k_Train_005651
GOT-10k_Train_005652
GOT-10k_Train_005653
GOT-10k_Train_005681
GOT-10k_Train_005686
GOT-10k_Train_005689
GOT-10k_Train_005701
GOT-10k_Train_005712
GOT-10k_Train_005716
GOT-10k_Train_005724
GOT-10k_Train_005731
GOT-10k_Train_005732
GOT-10k_Train_005734
GOT-10k_Train_005741
GOT-10k_Train_005764
GOT-10k_Train_005767
GOT-10k_Train_005788
GOT-10k_Train_005791
GOT-10k_Train_005800
GOT-10k_Train_005813
GOT-10k_Train_005816
GOT-10k_Train_005830
GOT-10k_Train_005852
GOT-10k_Train_005876
GOT-10k_Train_005877
GOT-10k_Train_005884
GOT-10k_Train_005910
GOT-10k_Train_005929
GOT-10k_Train_005943
GOT-10k_Train_005958
GOT-10k_Train_005995
GOT-10k_Train_006002
GOT-10k_Train_006010
GOT-10k_Train_006018
GOT-10k_Train_006021
GOT-10k_Train_006022
GOT-10k_Train_006040
GOT-10k_Train_006046
GOT-10k_Train_006057
GOT-10k_Train_006075
GOT-10k_Train_006087
GOT-10k_Train_006099
GOT-10k_Train_006115
GOT-10k_Train_006126
GOT-10k_Train_006129
GOT-10k_Train_006142
GOT-10k_Train_006161
GOT-10k_Train_006163
GOT-10k_Train_006193
GOT-10k_Train_006195
GOT-10k_Train_006204
GOT-10k_Train_006206
GOT-10k_Train_006215
GOT-10k_Train_006216
GOT-10k_Train_006220
GOT-10k_Train_006224
GOT-10k_Train_006232
GOT-10k_Train_006241
GOT-10k_Train_006247
GOT-10k_Train_006287
GOT-10k_Train_006300
GOT-10k_Train_006315
GOT-10k_Train_006318
GOT-10k_Train_006322
GOT-10k_Train_006337
GOT-10k_Train_006341
GOT-10k_Train_006344
GOT-10k_Train_006348
GOT-10k_Train_006349
GOT-10k_Train_006363
GOT-10k_Train_006366
GOT-10k_Train_006376
GOT-10k_Train_006378
GOT-10k_Train_006395
GOT-10k_Train_006402
GOT-10k_Train_006406
GOT-10k_Train_006412
GOT-10k_Train_006413
GOT-10k_Train_006427
GOT-10k_Train_006448
GOT-10k_Train_006459
GOT-10k_Train_006464
GOT-10k_Train_006474
GOT-10k_Train_006477
GOT-10k_Train_006482
GOT-10k_Train_006483
GOT-10k_Train_006496
GOT-10k_Train_006498
GOT-10k_Train_006499
GOT-10k_Train_006505
GOT-10k_Train_006506
GOT-10k_Train_006514
GOT-10k_Train_006533
GOT-10k_Train_006563
GOT-10k_Train_006569
GOT-10k_Train_006573
GOT-10k_Train_006584
GOT-10k_Train_006585
GOT-10k_Train_006587
GOT-10k_Train_006591
GOT-10k_Train_006592
GOT-10k_Train_006598
GOT-10k_Train_006605
GOT-10k_Train_006631
GOT-10k_Train_006633
GOT-10k_Train_006644
GOT-10k_Train_006651
GOT-10k_Train_006654
GOT-10k_Train_006672
GOT-10k_Train_006717
GOT-10k_Train_006728
GOT-10k_Train_006736
GOT-10k_Train_006740
GOT-10k_Train_006746
GOT-10k_Train_006754
GOT-10k_Train_006759
GOT-10k_Train_006766
GOT-10k_Train_006789
GOT-10k_Train_006796
GOT-10k_Train_006797
GOT-10k_Train_006817
GOT-10k_Train_006818
GOT-10k_Train_006849
GOT-10k_Train_006851
GOT-10k_Train_006855
GOT-10k_Train_006872
GOT-10k_Train_006879
GOT-10k_Train_006900
GOT-10k_Train_006912
GOT-10k_Train_006926
GOT-10k_Train_006936
GOT-10k_Train_006955
GOT-10k_Train_006968
GOT-10k_Train_006969
GOT-10k_Train_006979
GOT-10k_Train_006980
GOT-10k_Train_006984
GOT-10k_Train_006986
GOT-10k_Train_006991
GOT-10k_Train_007017
GOT-10k_Train_007032
GOT-10k_Train_007035
GOT-10k_Train_007048
GOT-10k_Train_007064
GOT-10k_Train_007065
GOT-10k_Train_007075
GOT-10k_Train_007077
GOT-10k_Train_007081
GOT-10k_Train_007083
GOT-10k_Train_007089
GOT-10k_Train_007106
GOT-10k_Train_007107
GOT-10k_Train_007131
GOT-10k_Train_007138
GOT-10k_Train_007144
GOT-10k_Train_007150
GOT-10k_Train_007168
GOT-10k_Train_007170
GOT-10k_Train_007177
GOT-10k_Train_007181
GOT-10k_Train_007183
GOT-10k_Train_007190
GOT-10k_Train_007208
GOT-10k_Train_007220
GOT-10k_Train_007223
GOT-10k_Train_007247
GOT-10k_Train_007273
GOT-10k_Train_007284
GOT-10k_Train_007289
GOT-10k_Train_007293
GOT-10k_Train_007294
GOT-10k_Train_007296
GOT-10k_Train_007316
GOT-10k_Train_007322
GOT-10k_Train_007355
GOT-10k_Train_007360
GOT-10k_Train_007362
GOT-10k_Train_007364
GOT-10k_Train_007388
GOT-10k_Train_007392
GOT-10k_Train_007403
GOT-10k_Train_007404
GOT-10k_Train_007426
GOT-10k_Train_007427
GOT-10k_Train_007443
GOT-10k_Train_007446
GOT-10k_Train_007461
GOT-10k_Train_007482
GOT-10k_Train_007489
GOT-10k_Train_007499
GOT-10k_Train_007503
GOT-10k_Train_007507
GOT-10k_Train_007515
GOT-10k_Train_007521
GOT-10k_Train_007523
GOT-10k_Train_007525
GOT-10k_Train_007535
GOT-10k_Train_007559
GOT-10k_Train_007566
GOT-10k_Train_007582
GOT-10k_Train_007586
GOT-10k_Train_007596
GOT-10k_Train_007616
GOT-10k_Train_007623
GOT-10k_Train_007634
GOT-10k_Train_007637
GOT-10k_Train_007643
GOT-10k_Train_007645
GOT-10k_Train_007653
GOT-10k_Train_007660
GOT-10k_Train_007661
GOT-10k_Train_007663
GOT-10k_Train_007672
GOT-10k_Train_007700
GOT-10k_Train_007710
GOT-10k_Train_007714
GOT-10k_Train_007717
GOT-10k_Train_007718
GOT-10k_Train_007737
GOT-10k_Train_007741
GOT-10k_Train_007746
GOT-10k_Train_007763
GOT-10k_Train_007769
GOT-10k_Train_007780
GOT-10k_Train_007803
GOT-10k_Train_007821
GOT-10k_Train_007825
GOT-10k_Train_007839
GOT-10k_Train_007848
GOT-10k_Train_007873
GOT-10k_Train_007877
GOT-10k_Train_007882
GOT-10k_Train_007894
GOT-10k_Train_007905
GOT-10k_Train_007908
GOT-10k_Train_007911
GOT-10k_Train_007914
GOT-10k_Train_007918
GOT-10k_Train_007929
GOT-10k_Train_007936
GOT-10k_Train_007938
GOT-10k_Train_007965
GOT-10k_Train_007969
GOT-10k_Train_007973
GOT-10k_Train_007987
GOT-10k_Train_007999
GOT-10k_Train_008001
GOT-10k_Train_008034
GOT-10k_Train_008050
GOT-10k_Train_008056
GOT-10k_Train_008068
GOT-10k_Train_008073
GOT-10k_Train_008089
GOT-10k_Train_008095
GOT-10k_Train_008101
GOT-10k_Train_008128
GOT-10k_Train_008139
GOT-10k_Train_008147
GOT-10k_Train_008154
GOT-10k_Train_008171
GOT-10k_Train_008180
GOT-10k_Train_008193
GOT-10k_Train_008194
GOT-10k_Train_008201
GOT-10k_Train_008212
GOT-10k_Train_008226
GOT-10k_Train_008230
GOT-10k_Train_008231
GOT-10k_Train_008236
GOT-10k_Train_008239
GOT-10k_Train_008241
GOT-10k_Train_008243
GOT-10k_Train_008249
GOT-10k_Train_008250
GOT-10k_Train_008273
GOT-10k_Train_008278
GOT-10k_Train_008291
GOT-10k_Train_008310
GOT-10k_Train_008311
GOT-10k_Train_008317
GOT-10k_Train_008319
GOT-10k_Train_008331
GOT-10k_Train_008332
GOT-10k_Train_008344
GOT-10k_Train_008369
GOT-10k_Train_008377
GOT-10k_Train_008386
GOT-10k_Train_008392
GOT-10k_Train_008396
GOT-10k_Train_008432
GOT-10k_Train_008438
GOT-10k_Train_008439
GOT-10k_Train_008440
GOT-10k_Train_008442
GOT-10k_Train_008443
GOT-10k_Train_008455
GOT-10k_Train_008471
GOT-10k_Train_008484
GOT-10k_Train_008490
GOT-10k_Train_008492
GOT-10k_Train_008499
GOT-10k_Train_008502
GOT-10k_Train_008507
GOT-10k_Train_008520
GOT-10k_Train_008525
GOT-10k_Train_008568
GOT-10k_Train_008587
GOT-10k_Train_008589
GOT-10k_Train_008591
GOT-10k_Train_008606
GOT-10k_Train_008612
GOT-10k_Train_008623
GOT-10k_Train_008628
GOT-10k_Train_008633
GOT-10k_Train_008634
GOT-10k_Train_008645
GOT-10k_Train_008656
GOT-10k_Train_008668
GOT-10k_Train_008670
GOT-10k_Train_008702
GOT-10k_Train_008714
GOT-10k_Train_008723
GOT-10k_Train_008731
GOT-10k_Train_008732
GOT-10k_Train_008734
GOT-10k_Train_008747
GOT-10k_Train_008787
GOT-10k_Train_008794
GOT-10k_Train_008805
GOT-10k_Train_008829
GOT-10k_Train_008837
GOT-10k_Train_008838
GOT-10k_Train_008853
GOT-10k_Train_008878
GOT-10k_Train_008879
GOT-10k_Train_008880
GOT-10k_Train_008891
GOT-10k_Train_008895
GOT-10k_Train_008907
GOT-10k_Train_008909
GOT-10k_Train_008922
GOT-10k_Train_008935
GOT-10k_Train_008939
GOT-10k_Train_008972
GOT-10k_Train_008975
GOT-10k_Train_008976
GOT-10k_Train_009002
GOT-10k_Train_009031
GOT-10k_Train_009040
GOT-10k_Train_009052
GOT-10k_Train_009056
GOT-10k_Train_009057
GOT-10k_Train_009066
GOT-10k_Train_009076
GOT-10k_Train_009103
GOT-10k_Train_009115
GOT-10k_Train_009117
GOT-10k_Train_009127
GOT-10k_Train_009137
GOT-10k_Train_009145
GOT-10k_Train_009150
GOT-10k_Train_009155
GOT-10k_Train_009156
GOT-10k_Train_009160
GOT-10k_Train_009179
GOT-10k_Train_009181
GOT-10k_Train_009196
GOT-10k_Train_009203
GOT-10k_Train_009216
GOT-10k_Train_009219
GOT-10k_Train_009222
GOT-10k_Train_009224
GOT-10k_Train_009229
GOT-10k_Train_009231
GOT-10k_Train_009235
GOT-10k_Train_009242
GOT-10k_Train_009263
GOT-10k_Train_009265
GOT-10k_Train_009280
GOT-10k_Train_009282
GOT-10k_Train_009300
GOT-10k_Train_009301
GOT-10k_Train_009329
GOT-10k_Train_009332
GOT-10k_Train_009334
================================================
FILE: EgoTracks/tracking/dataset/data_specs/got10k_vot_train_split.txt
================================================
3784
8998
1631
8277
8358
2338
2988
8302
2662
2663
2825
7447
4781
2218
5860
2819
8075
5391
116
3606
7976
7941
1024
4519
1970
557
8579
6908
993
7204
1991
3674
8781
6840
5
3225
3763
8688
6778
5777
4794
2744
8126
3864
1733
2923
6829
683
2081
1831
2404
1459
2741
5972
7462
2654
103
2174
2989
2506
2766
5912
3295
3986
609
4895
6673
801
1098
1602
2490
8476
3186
4784
4270
1812
4226
2267
8873
6544
6112
2381
4752
753
3776
6511
6016
2559
7369
5866
563
7731
1105
5603
50
4238
2208
8725
4994
4719
1444
8807
7298
8760
8173
2332
4131
1065
8562
3992
4024
2188
9095
6765
1707
6105
6922
5362
1486
7898
4135
6574
998
6565
8127
8927
2544
4365
768
3535
3875
6808
2931
487
4451
2470
8111
3493
7338
8281
6390
1271
4373
3667
3494
3757
2966
7840
7827
3300
6261
4163
2217
6549
7236
9136
1857
6691
3470
6271
807
516
9311
6098
3144
8420
5425
5694
2643
6696
6072
7285
3781
903
8522
6092
5979
2622
2529
855
3420
3261
8953
7866
2492
3157
359
1520
2642
7452
759
36
8931
1744
4350
1089
9199
1889
1908
4868
4498
1968
3273
7413
4114
5584
4874
1427
5211
7618
1542
1353
8158
4168
3200
6345
8560
5619
5953
3158
8849
5831
1411
8103
6539
7397
1006
5450
3119
4274
5352
4571
2319
4976
902
1814
2651
3299
3398
982
2428
5793
1346
7057
3737
7329
4449
2110
7405
1773
958
3901
4127
8234
2994
7066
1289
2995
5871
3556
9085
846
2366
585
5516
5230
3481
2732
6658
7423
1855
6384
3554
5823
4948
7058
4667
5377
2503
7694
9191
9144
655
3409
62
8019
8970
2323
5750
3178
6548
7501
3280
343
2171
8397
1367
8611
6118
6603
7182
9048
7733
7141
3335
4845
5449
3467
6250
163
5168
2040
3609
8352
3426
8567
769
187
6151
6437
7028
3970
9146
5028
7492
1661
2815
2469
2563
3814
8430
4305
3479
5678
4132
1211
5459
4814
545
4556
238
2724
1260
2581
4632
4313
380
1209
5447
3032
7942
8943
806
2432
6130
4314
2131
9045
6531
5706
6747
7724
2017
3292
5469
2743
424
4233
8619
5192
4516
9324
3537
9152
8058
7526
8711
1949
5982
6702
7027
6388
7012
328
2130
452
306
7669
3134
5761
3703
44
4189
695
5224
9215
5644
3143
5443
2348
2328
4725
1418
7810
5759
7226
4535
4385
5397
7249
3204
385
2371
2738
3636
9033
2246
2680
6940
4310
2054
9250
9080
4568
5586
4469
2038
3410
7900
4332
6108
678
3319
9079
1054
4048
4751
1320
6890
7931
1398
4349
5299
5025
7932
5738
7787
4590
4020
1274
2488
8497
3372
8965
3219
799
3664
6500
7093
4362
6205
4244
5945
6434
2031
2684
6632
4588
8271
3232
5782
2904
7200
3632
5435
8203
3480
4786
7579
3351
1921
798
3646
3094
4359
1654
5975
376
5965
780
6738
3185
2133
6248
5996
2834
531
5688
2448
7925
7974
5924
6401
5778
6594
5442
8336
4522
3770
6340
6328
4946
4161
2954
2588
8465
2885
1606
5787
3407
3121
7310
1413
1932
4787
2579
3325
508
5610
6480
4290
479
3792
6628
2545
6972
2665
6730
3547
6845
3540
8993
1052
2235
8356
3403
8818
8260
572
4159
1180
5348
7948
2676
3539
4866
6422
8365
3217
1310
2059
9177
1419
2283
8892
8162
1212
6277
3725
7806
6149
7874
718
6888
7118
277
656
8763
8289
4759
5854
8659
3145
5981
1881
5799
6947
1609
6396
2631
318
2550
6132
1736
7816
4304
8133
6698
7779
7732
7642
7242
711
9262
8033
7440
1913
5480
5570
8594
8772
4654
8974
6128
6183
1071
8449
2142
2298
524
1695
820
4053
1856
8641
217
1063
9286
3152
221
5461
1270
2006
7164
1199
6951
5604
5400
5309
3498
6407
6661
7097
8165
5169
3852
7070
5702
4344
6648
6904
3272
7119
5795
2365
2659
353
5444
1924
2098
2972
6006
5865
8740
7856
5841
598
836
1147
931
8897
0
6049
1837
865
1871
6116
6831
5773
3587
303
1883
2163
3070
1308
7953
6909
853
7301
3279
123
7186
3194
5133
1931
4622
4891
5722
5693
8
2339
6596
71
379
4506
4370
1238
2707
3344
4254
8767
1726
325
4148
5438
5357
548
1332
6824
2290
2335
2594
2315
3389
3885
2621
4116
7412
7222
4894
8595
2000
4978
4721
6444
3796
9321
2236
6409
1523
1468
9249
8270
2341
2874
174
4502
4703
9034
9108
5451
2619
9158
490
6540
1466
2962
8771
2712
4539
1581
5638
9246
4308
4363
4647
4470
1636
1311
6560
7519
8027
9217
6364
3779
4822
3563
5896
6655
1524
2846
3137
141
1887
6567
8921
4671
6052
8445
8699
7349
3553
2117
7651
5034
5383
649
3818
9022
8414
1012
8159
5081
8571
4765
9135
4361
4073
9142
727
2835
8229
3989
4490
4923
5477
1638
3643
9044
2230
499
7166
3172
8431
8401
1470
6356
8817
927
4212
2152
3812
4949
1219
1538
3029
6481
9042
7775
7742
423
2085
7715
4541
9061
5916
7420
7406
7046
7808
4911
8804
6927
8820
3264
300
2979
252
4407
3383
4688
8504
6723
26
3837
2489
4137
8209
229
6490
2364
9016
1763
1728
338
8335
9063
2791
641
5454
4581
4548
2840
8508
3463
7231
7619
2560
1755
6201
165
6279
5806
6867
5890
2396
3416
1981
6073
5872
3045
4182
7607
4414
2998
6553
7139
5624
3666
723
5110
6932
8200
2222
8399
1041
4138
1594
3569
9253
393
7940
8004
1475
5393
1107
2597
878
9309
7576
5250
3142
2015
571
3921
1255
7080
893
2160
1355
82
9153
8583
4085
4644
7196
9165
3558
4550
6374
7826
8602
4146
9257
6083
874
8383
3731
3374
3653
8222
7344
470
1813
6871
7245
6866
3998
7433
276
1915
1988
8168
2518
2686
831
6143
5205
8718
1703
7729
2077
7983
8450
1195
9232
507
7989
6974
5828
8655
6679
5245
7783
5886
9098
6491
8782
3525
6542
131
8110
9186
9074
4933
9035
2607
2057
6273
2711
5829
3382
2696
3043
2048
619
2499
5295
1162
7807
3694
2194
3149
1940
7934
840
3592
8237
4731
1324
8486
8726
8573
2928
9078
2272
2564
1370
5911
7434
8026
407
7546
2004
5849
7887
3425
1118
926
3430
5902
2282
2334
129
1372
4842
6473
4382
1028
415
8269
6910
2796
3038
5735
5080
2852
6306
8842
9188
3637
1066
532
5485
2838
6753
9008
7984
2816
8819
7103
5977
5044
2064
2599
3249
6446
6638
852
1724
3368
892
3250
8258
7962
4300
1616
167
8855
2090
4424
879
5136
5350
2635
7828
8506
63
3847
3676
1705
6745
1263
5020
1888
7036
1033
3914
5433
3905
4641
228
4801
3766
8085
643
6914
3013
5657
3696
1590
8282
2403
416
911
3849
4215
1120
5490
296
2306
3140
3742
4819
6153
6414
760
3000
7498
7108
6429
3031
5314
751
3357
5808
7505
98
7652
4027
6257
1799
8577
4969
9163
2025
6061
4026
588
4961
4940
7152
538
706
2802
8983
3375
1246
6593
5837
1789
7939
4997
5939
2411
6133
199
7593
1702
5406
6082
2912
6109
100
8149
5470
2807
3362
5621
6019
9241
9268
7703
7967
5458
5492
6729
4577
106
3774
979
7082
4610
1853
9003
9292
2867
6262
2245
3460
1557
4796
2658
5769
6985
421
7990
3289
1540
9316
2251
6896
5947
4965
4480
963
9047
7824
3976
6210
7018
7179
5016
7789
6102
6828
7659
9109
9071
8115
7628
7110
16
7513
835
939
2351
2322
4945
560
6837
6094
6475
7901
3
771
8029
3135
8044
7127
3741
5156
7030
113
3747
7042
5232
5225
3002
4747
5379
4886
7192
4184
1896
1834
8689
3665
2957
6913
8009
4851
6420
828
8884
8815
3198
8008
194
6251
3303
3934
395
1285
4169
1648
1347
3600
4631
509
211
6230
7241
2219
2582
8353
7790
7583
9004
6942
1704
8051
2981
5511
6182
7088
1699
1222
6189
1528
5197
6221
7893
7773
8766
2942
8021
614
1786
400
133
556
5237
3727
1440
3873
8448
6285
8696
8800
4009
3386
4847
5685
9093
5895
6863
4260
8405
8417
7116
255
3223
4737
7852
814
710
1094
6103
5809
5882
6336
4974
1499
2806
3744
2664
2436
4482
8665
8918
1076
8676
5725
9248
4755
1447
9328
5500
78
2653
792
6854
6093
6172
3378
4492
5529
5476
3846
1391
383
4289
3883
2648
3265
2525
5402
4599
6870
6877
4413
2464
8519
2521
1839
5822
5664
7257
5375
6852
6764
5182
8914
3015
8509
3080
4562
8979
6643
8601
6096
4812
5246
7862
527
7849
6737
12
2468
7961
275
27
5932
3840
7341
4996
8564
2154
6138
7831
4442
757
4464
1170
2568
19
323
7675
3441
2067
9027
2486
4379
4744
1737
7563
301
3907
4742
6857
1221
9284
8458
2897
1526
5345
4423
6246
8578
3711
4986
4785
3997
7311
4788
8387
2041
2608
6031
3293
541
773
8473
2501
5667
804
483
1639
696
6060
5429
5762
1527
7342
6225
7895
381
8030
8362
4734
3526
9273
2039
5084
875
6905
8968
5275
3052
650
7509
232
2595
3631
1810
4355
8315
8908
1777
4834
3164
2336
1543
6212
8346
3024
3719
1242
6265
3133
6150
6358
3316
4089
1647
4629
7117
2596
5366
6371
2209
1428
1158
7648
8765
802
153
4639
3657
9320
3294
2617
5052
6305
3227
8784
5868
6716
1671
178
2703
954
3254
2262
5743
8647
6393
7706
6604
3728
6978
7474
8754
2740
6038
1491
8814
2080
2358
5944
1164
9259
4518
7343
5748
3897
923
5967
2677
3503
1202
4966
6634
1962
9096
9064
977
4049
1464
658
536
3402
8064
1309
259
8122
910
224
6152
7142
6070
8411
9214
9312
8325
6192
626
6025
6240
8708
4630
6777
1075
8906
408
9269
6236
9067
2324
156
3136
7878
7308
4335
2065
3845
4453
3356
1450
371
7219
5171
201
8642
2099
477
1603
8339
7430
3061
235
1133
8474
8653
989
4569
9092
8347
3102
1743
9086
5140
7438
1530
2460
7646
5071
5430
6944
610
2803
1448
4696
6156
4386
4248
4256
994
805
8011
8276
8999
4956
1712
2795
7553
6436
2158
9083
3184
5784
4428
612
5288
6222
1365
5074
6848
575
5213
2175
4240
351
2086
2656
5150
9255
8189
7735
1261
1344
4097
8674
2984
4235
5998
6488
537
1267
7486
7124
6245
7955
7337
5436
1194
209
1710
7906
4357
4139
5679
2584
2854
1004
8246
8586
5087
4926
6637
3197
7757
6502
1248
990
3928
2770
2751
1020
6426
6839
2671
3871
9212
4179
3394
10
5861
5316
6869
2985
8905
8559
4457
2480
2313
4100
6835
7799
7890
2785
5468
7302
5862
1803
3171
717
7053
1655
4489
2522
2921
8555
1984
895
8949
1305
738
7606
112
3042
1325
437
3167
3340
511
3689
8982
69
4421
550
8685
3147
8956
3166
7023
2014
3573
3880
4045
2069
6051
702
6664
8418
6181
4853
4166
7022
7418
3605
7172
5031
4589
7858
6586
6351
8334
7504
634
3759
1890
890
6959
5085
4919
2161
1191
256
3610
7079
3427
4071
7323
2982
7263
7444
4251
5846
4864
3649
4311
8120
4582
6373
2805
4872
4869
5867
2670
7099
30
8933
930
7919
7261
5289
7449
7772
3613
3196
474
205
841
2611
6185
3088
409
7239
5938
7871
1343
6705
1027
5596
2199
9113
5471
6134
838
8359
4061
1474
3229
270
4245
1979
1517
8652
4006
6137
4693
2528
6996
2926
5798
2477
2549
3341
6014
4479
2861
4208
5175
5174
5118
3736
5463
1588
2327
8380
7982
1058
4586
6608
7985
1822
3628
549
1811
2601
4608
2540
6659
3859
307
3767
8167
505
4366
5520
461
1933
2401
8106
2055
7844
8544
4797
7419
6686
7670
6039
5672
5141
6543
206
5252
4718
888
1601
3218
5114
713
4022
4419
6708
397
425
6612
5057
1729
4729
4080
1034
534
5598
9218
2424
329
4154
1597
109
8823
9038
8437
3307
128
8032
1412
7333
8762
8851
8865
468
3808
3064
8798
7052
7767
1086
2162
6566
2109
3439
6122
3642
7696
8610
5279
1808
8687
817
6066
3640
6015
7601
4855
6017
87
7071
7268
3614
6084
6117
6924
9102
2829
375
8724
2095
22
1541
2970
633
139
451
4521
179
1396
3876
5824
8020
426
4982
4172
190
4859
1455
3110
3323
9104
858
6719
6428
4495
8551
2141
3984
3066
67
4299
5821
8444
6581
6097
7090
7781
8944
3085
2114
5355
8901
1461
3301
422
7000
4820
5790
1379
7536
8736
8991
5241
1698
1294
1753
196
2987
8680
4144
8639
6441
8255
8156
3677
6385
6520
3760
6001
1144
5478
7394
8057
5018
4232
5235
6844
3111
8802
949
7843
573
2278
6801
7629
2714
5105
6946
2697
5315
1571
8677
2537
4374
3833
7820
3750
2033
6526
3884
8706
7195
3603
3001
6284
5873
5718
8576
8457
3589
5839
459
6342
8729
6933
607
6053
8228
3773
1805
6365
5142
6069
1389
9026
570
4614
5533
2821
1897
819
4060
5905
6842
5446
1277
4303
2836
934
1014
7822
7494
665
5881
3328
4664
315
1315
1462
8616
7725
5749
1730
8184
4567
5065
8867
1304
3669
9192
410
8177
6710
1210
2329
3911
1899
7686
3315
6180
3116
5341
4394
8337
9182
5715
2172
2782
3715
9195
7960
4890
8294
2337
8014
3353
7475
2193
8831
4200
4653
6196
6957
3063
8959
8973
6529
3457
5274
8002
6823
6154
5561
1780
9318
7657
1758
6503
7678
3274
1625
4327
3236
8575
4707
4331
1494
8756
3174
1074
8116
8295
3048
3752
6050
8003
9175
4674
1642
2556
6166
7165
8441
3990
1640
1778
7500
8304
1395
4315
5949
3364
242
5763
1036
2430
8131
411
6267
2045
6606
899
8065
5779
5616
2107
5408
2980
6310
5776
4328
821
3251
2354
7076
5313
79
3959
5677
7545
160
6790
6859
3659
6770
1106
8846
956
7472
2050
8099
4795
8053
9293
7037
1646
9307
5322
5332
2708
8977
917
2419
184
2105
1578
3923
5780
1903
2512
429
493
4972
445
8286
320
8300
617
3413
4459
525
5631
6314
5157
5300
8545
182
1031
4429
2495
1534
3099
3916
3738
535
2119
177
1838
2159
4099
8285
5172
8540
6020
7683
3073
3115
3087
2416
1894
5942
3597
5834
2007
43
1779
4174
2023
2546
2429
9006
436
4214
3693
5426
6767
5903
4368
2170
5051
7490
2859
5035
7835
5372
7122
925
3253
6338
8393
4093
5848
7588
2683
8049
5403
5894
8745
8550
2941
3484
9029
4461
8022
725
3030
1975
5623
2415
1957
6141
9278
3226
3062
5670
7326
8759
8496
6619
8187
8262
6199
951
668
2388
4698
8240
2851
871
4988
9084
9089
3162
1167
8244
5227
6461
2831
776
5010
5770
5282
3574
5102
1278
2281
5455
4628
4663
9119
7487
8746
4889
1175
102
2386
8940
5566
53
8833
1918
321
6786
6861
4358
2771
7467
975
4777
605
3543
2600
7584
9299
4530
7328
183
4761
7543
304
1196
4623
5519
1953
533
5989
7590
7428
6346
6162
1946
6260
4405
5676
8924
7171
8409
1866
6379
3411
2387
3051
7398
154
1185
6442
6004
1611
2165
9018
8323
616
3995
8952
1533
7853
789
4991
3675
7456
5752
175
7556
4195
907
2248
8467
1017
7968
3304
1666
4942
3867
4802
6357
4621
887
6213
5261
1336
521
8928
7864
4792
6742
157
1593
823
7235
5303
5633
1100
8047
5993
1460
6714
1630
6440
6307
3608
292
5974
8301
8342
2720
4583
2757
7315
833
4466
4236
1282
5273
2149
2380
8119
7167
5076
3596
2650
8980
3421
1356
1954
7823
1172
2226
1941
6136
7274
2256
4928
324
4410
4579
1061
7113
486
862
6956
2873
1465
6113
8225
8512
6806
272
6008
1241
88
5662
3555
689
8733
2812
7453
6282
420
2471
4477
7495
1445
594
6939
1564
8704
8590
7992
7374
5796
9298
4213
5713
5864
326
5513
402
464
608
1951
8640
gitextract_f8211mg8/
├── .gitignore
├── .gitmodules
├── .pre-commit-config.yaml
├── EgoTracks/
│ ├── README.md
│ ├── configs/
│ │ └── STARK/
│ │ ├── stark_st_R101.yaml
│ │ └── stark_st_base.yaml
│ ├── setup.py
│ ├── test.sh
│ ├── tools/
│ │ ├── __init__.py
│ │ ├── eval_datasets/
│ │ │ ├── __init__.py
│ │ │ ├── build.py
│ │ │ └── eval_ego4d_lt_tracking.py
│ │ ├── eval_net.py
│ │ ├── preprocess/
│ │ │ ├── __init__.py
│ │ │ └── extract_ego4d_clip_frames.py
│ │ ├── train_net.py
│ │ └── trainers/
│ │ ├── __init__.py
│ │ ├── base_trainer.py
│ │ └── starkst_trainer.py
│ ├── tracking/
│ │ ├── __init__.py
│ │ ├── config/
│ │ │ ├── __init__.py
│ │ │ ├── config.py
│ │ │ └── stark_defaults.py
│ │ ├── dataset/
│ │ │ ├── __init__.py
│ │ │ ├── base_image_dataset.py
│ │ │ ├── base_video_dataset.py
│ │ │ ├── build.py
│ │ │ ├── data_specs/
│ │ │ │ ├── README.md
│ │ │ │ ├── got10k_train_full_split.txt
│ │ │ │ ├── got10k_train_split.txt
│ │ │ │ ├── got10k_val_split.txt
│ │ │ │ ├── got10k_vot_exclude.txt
│ │ │ │ ├── got10k_vot_train_split.txt
│ │ │ │ ├── got10k_vot_val_split.txt
│ │ │ │ ├── lasot_train_split.txt
│ │ │ │ └── trackingnet_classmap.txt
│ │ │ ├── dataloader.py
│ │ │ ├── eval_datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_dataset.py
│ │ │ │ └── ego4d_lt_tracking_dataset.py
│ │ │ ├── processing/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_processing.py
│ │ │ │ ├── processing_utils.py
│ │ │ │ └── stark_processing.py
│ │ │ ├── trackingdataset.py
│ │ │ ├── train_datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── coco_seq.py
│ │ │ │ ├── ego4d_lt_tracking.py
│ │ │ │ ├── ego4d_vq.py
│ │ │ │ ├── got10k.py
│ │ │ │ ├── lasot.py
│ │ │ │ └── tracking_net.py
│ │ │ └── transforms.py
│ │ ├── metrics/
│ │ │ ├── __init__.py
│ │ │ └── miou.py
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── multiple_object_tracker.py
│ │ │ ├── single_object_tracker.py
│ │ │ ├── stark_tracker/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── backbone.py
│ │ │ │ ├── config/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── stark_st2/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── config.py
│ │ │ │ ├── head.py
│ │ │ │ ├── params.py
│ │ │ │ ├── position_encoding.py
│ │ │ │ ├── resnet.py
│ │ │ │ ├── stark_s.py
│ │ │ │ ├── stark_st.py
│ │ │ │ ├── stark_tracker.py
│ │ │ │ ├── transformer.py
│ │ │ │ └── utils/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── box_ops.py
│ │ │ │ ├── merge.py
│ │ │ │ ├── misc.py
│ │ │ │ └── preprocessing_utils.py
│ │ │ ├── template.py
│ │ │ └── tracker.py
│ │ ├── solver/
│ │ │ ├── __init__.py
│ │ │ └── build.py
│ │ └── utils/
│ │ ├── __init__.py
│ │ ├── bbox_helper.py
│ │ ├── defaults.py
│ │ ├── env.py
│ │ ├── load_helper.py
│ │ ├── load_text.py
│ │ ├── meters.py
│ │ ├── multiprocessing.py
│ │ ├── tensor.py
│ │ ├── types.py
│ │ └── utils.py
│ └── train.sh
├── LICENSE
├── MQ/
│ ├── Convert_annotation.py
│ ├── Eval.py
│ ├── Evaluation/
│ │ ├── ego4d/
│ │ │ ├── eval_action_detection.py
│ │ │ ├── eval_detection.py
│ │ │ ├── generate_detection.py
│ │ │ ├── generate_retrieval.py
│ │ │ ├── get_detect_performance.py
│ │ │ └── get_retrieval_performance.py
│ │ └── utils.py
│ ├── Infer.py
│ ├── Merge_detection_retrieval.py
│ ├── Models/
│ │ ├── ActionGenerator.py
│ │ ├── AnchorGenerator.py
│ │ ├── BoundaryAdjust.py
│ │ ├── BoxCoder.py
│ │ ├── GCNs.py
│ │ ├── Head.py
│ │ ├── Loss.py
│ │ ├── VSGN.py
│ │ ├── XGPN.py
│ │ └── matcher.py
│ ├── README.md
│ ├── Train.py
│ └── Utils/
│ ├── __init__.py
│ ├── dataset.py
│ └── opts.py
├── NLQ/
│ ├── 2D-TAN/
│ │ ├── CODE_OF_CONDUCT.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── README_2D-TAN.md
│ │ ├── SECURITY.md
│ │ ├── data/
│ │ │ ├── ActivityNet/
│ │ │ │ ├── download.sh
│ │ │ │ ├── test.json
│ │ │ │ ├── train.json
│ │ │ │ └── val.json
│ │ │ ├── Charades-STA/
│ │ │ │ ├── Charades_v1_test.csv
│ │ │ │ ├── Charades_v1_train.csv
│ │ │ │ ├── charades_sta_test.txt
│ │ │ │ ├── charades_sta_train.txt
│ │ │ │ ├── convert_vgg_features_to_hdf5.py
│ │ │ │ ├── download.sh
│ │ │ │ └── valid_videos.txt
│ │ │ ├── Ego4D_clip/
│ │ │ │ └── .gitkeep
│ │ │ └── TACoS/
│ │ │ ├── merge_npys_to_hdf5.py
│ │ │ ├── test.json
│ │ │ ├── train.json
│ │ │ └── val.json
│ │ ├── experiments/
│ │ │ ├── activitynet/
│ │ │ │ ├── 2D-TAN-64x64-K9L4-conv.yaml
│ │ │ │ └── 2D-TAN-64x64-K9L4-pool.yaml
│ │ │ ├── charades/
│ │ │ │ ├── 2D-TAN-16x16-K5L8-conv.yaml
│ │ │ │ └── 2D-TAN-16x16-K5L8-pool.yaml
│ │ │ ├── ego4d/
│ │ │ │ └── 2D-TAN-40x40-K9L4-pool-window-std-sf.yaml
│ │ │ └── tacos/
│ │ │ ├── 2D-TAN-128x128-K5L8-conv.yaml
│ │ │ └── 2D-TAN-128x128-K5L8-pool.yaml
│ │ ├── lib/
│ │ │ ├── core/
│ │ │ │ ├── config.py
│ │ │ │ ├── engine.py
│ │ │ │ ├── eval.py
│ │ │ │ └── utils.py
│ │ │ ├── datasets/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── activitynet.py
│ │ │ │ ├── charades.py
│ │ │ │ ├── ego4d_clip.py
│ │ │ │ └── tacos.py
│ │ │ └── models/
│ │ │ ├── __init__.py
│ │ │ ├── frame_modules/
│ │ │ │ ├── __init__.py
│ │ │ │ └── frame_pool.py
│ │ │ ├── fusion_modules/
│ │ │ │ ├── __init__.py
│ │ │ │ └── base_fusion.py
│ │ │ ├── loss.py
│ │ │ ├── map_modules/
│ │ │ │ ├── __init__.py
│ │ │ │ └── map_conv.py
│ │ │ ├── prop_modules/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── dense.py
│ │ │ │ └── sparse.py
│ │ │ └── tan.py
│ │ ├── moment_localization/
│ │ │ ├── _init_paths.py
│ │ │ ├── test.py
│ │ │ └── train.py
│ │ └── notice.md
│ └── VSLNet/
│ ├── .gitignore
│ ├── README.md
│ ├── main.py
│ ├── model/
│ │ ├── VSLNet.py
│ │ ├── __init__.py
│ │ └── layers.py
│ ├── options.py
│ ├── requirements.txt
│ ├── run_train.sh
│ └── utils/
│ ├── __init__.py
│ ├── data_gen.py
│ ├── data_loader.py
│ ├── data_util.py
│ ├── evaluate_ego4d_nlq.py
│ ├── prepare_ego4d_dataset.py
│ └── runner_utils.py
├── README.md
├── VQ2D/
│ ├── .gitignore
│ ├── README.md
│ ├── configs/
│ │ ├── Base-RCNN-FPN.yaml
│ │ ├── siam_rcnn_2_gpus.yaml
│ │ └── siam_rcnn_8_gpus.yaml
│ ├── convert_videos_to_clips.py
│ ├── convert_videos_to_images.py
│ ├── detectron2_extensions/
│ │ ├── __init__.py
│ │ ├── config/
│ │ │ ├── __init__.py
│ │ │ └── defaults.py
│ │ ├── layers/
│ │ │ ├── __init__.py
│ │ │ └── wrappers.py
│ │ └── modeling/
│ │ ├── meta_arch/
│ │ │ ├── __init__.py
│ │ │ └── siam_rcnn.py
│ │ └── roi_heads/
│ │ ├── __init__.py
│ │ ├── set_heads.py
│ │ └── siam_heads.py
│ ├── evaluate_vq.py
│ ├── extract_vq_detection_scores.py
│ ├── perform_vq_inference.py
│ ├── process_vq_dataset.py
│ ├── requirements.txt
│ ├── scripts/
│ │ ├── extract_vq_detections.sh
│ │ ├── faster_evaluation/
│ │ │ └── merge_results.py
│ │ ├── infer_vq.sh
│ │ ├── train_2_gpus.sh
│ │ └── train_8_gpus.sh
│ ├── tools/
│ │ ├── test_model_loading.py
│ │ └── validate_extracted_clips.py
│ ├── train_siam_rcnn.py
│ ├── validate_challenge_predictions.py
│ ├── visualizations/
│ │ ├── .gitignore
│ │ ├── visualize_annotation_stats.ipynb
│ │ └── visualize_annotations.py
│ └── vq2d/
│ ├── baselines/
│ │ ├── __init__.py
│ │ ├── dataloader.py
│ │ ├── dataset.py
│ │ ├── feature_retrieval.py
│ │ ├── predictor.py
│ │ └── utils.py
│ ├── config.yaml
│ ├── constants.py
│ ├── metrics/
│ │ ├── __init__.py
│ │ ├── metrics.py
│ │ ├── spatio_temporal_metrics.py
│ │ ├── success_metrics.py
│ │ ├── temporal_metrics.py
│ │ ├── tracking_metrics.py
│ │ └── utils.py
│ ├── stats.py
│ ├── structures.py
│ ├── tools/
│ │ └── get_average_detector_flops.py
│ └── tracking/
│ ├── __init__.py
│ ├── kys.py
│ ├── particle_filter.py
│ ├── pfilter.py
│ ├── tracker.py
│ └── utils.py
└── VQ3D/
├── README.md
├── VQ3D/
│ ├── API/
│ │ ├── get_query_3d_ground_truth.py
│ │ └── metrics.py
│ ├── README.md
│ └── scripts/
│ ├── eval.py
│ ├── prepare_ground_truth_for_queries.py
│ └── run.py
├── annotation_API/
│ └── API/
│ └── bounding_box.py
├── camera_pose_estimation/
│ ├── Camera_Intrinsics_API/
│ │ ├── extract_frames.py
│ │ └── get_camera_intrinsics.py
│ ├── README.md
│ ├── SuperGlueMatching/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── extract_descriptors_api.py
│ │ ├── extract_visual_database.py
│ │ ├── match_pairs_api.py
│ │ ├── models/
│ │ │ ├── __init__.py
│ │ │ ├── matching.py
│ │ │ ├── superglue.py
│ │ │ ├── superpoint.py
│ │ │ ├── utils.py
│ │ │ └── weights/
│ │ │ ├── superglue_indoor.pth
│ │ │ ├── superglue_outdoor.pth
│ │ │ └── superpoint_v1.pth
│ │ ├── preprocess_color.py
│ │ ├── requirements.txt
│ │ └── scripts.sh
│ ├── Visualization/
│ │ ├── camera_trajectory.json
│ │ └── visualize_render_images.py
│ ├── extract_frames_all_clips.py
│ ├── extract_frames_for_colmap.py
│ ├── get_intrinsics_for_all_clips.py
│ ├── get_intrinsics_for_all_clips_greedy.py
│ ├── get_median_intrinsics.py
│ ├── main.sh
│ ├── pnp_api.py
│ ├── reconstruction.py
│ ├── run_all_data.py
│ ├── sfm_api_wsuperglue.py
│ ├── superglue_tracker.py
│ ├── undistort_image_api.py
│ ├── utils.py
│ └── visual_database_api.py
├── data/
│ ├── README.md
│ ├── all_clips_camera_poses_val.json
│ ├── mapping_vq2d_to_vq3d_queries_annotations_test.json
│ ├── mapping_vq2d_to_vq3d_queries_annotations_train.json
│ ├── mapping_vq2d_to_vq3d_queries_annotations_val.json
│ ├── scan_to_intrinsics.json
│ ├── vq3d_results/
│ │ └── siam_rcnn_residual_kys_val.json
│ └── vq3d_test_unannotated_template.json
├── depth_estimation/
│ ├── README.md
│ ├── compute_depth_for_ego4d.py
│ ├── main.sh
│ └── prepare_inputs_for_depth_estimation.py
└── requirements.txt
SYMBOL INDEX (1308 symbols across 167 files)
FILE: EgoTracks/tools/eval_datasets/build.py
function build_eval_function (line 13) | def build_eval_function(dataset_name):
function build_calculate_metrics_function (line 17) | def build_calculate_metrics_function(dataset_name):
FILE: EgoTracks/tools/eval_datasets/eval_ego4d_lt_tracking.py
function trivial_batch_collator (line 28) | def trivial_batch_collator(batch):
function eval_ego4d_lt_tracking (line 35) | def eval_ego4d_lt_tracking(model, cfg):
function gather_ego4d_lt_tracking_result (line 168) | def gather_ego4d_lt_tracking_result(result):
FILE: EgoTracks/tools/eval_net.py
function modify_STARK_cfg_by_dataset (line 27) | def modify_STARK_cfg_by_dataset(cfg, dataset_name):
function eval_main (line 40) | def eval_main(args, cfg=None):
function calculate_metrics (line 69) | def calculate_metrics(args):
FILE: EgoTracks/tools/preprocess/extract_ego4d_clip_frames.py
class ExtractFramesWorkflowParams (line 20) | class ExtractFramesWorkflowParams(NamedTuple):
function run_single_process (line 29) | def run_single_process(clip_uid: str, params: ExtractFramesWorkflowParams):
function extract_clip_ids (line 62) | def extract_clip_ids(file_path: str):
function remove_finished_clip_uids (line 73) | def remove_finished_clip_uids(clip_uids: List, params: ExtractFramesWork...
function read_csv (line 86) | def read_csv(path: str):
function combine_clip_info (line 94) | def combine_clip_info(params):
function main (line 110) | def main():
FILE: EgoTracks/tools/train_net.py
function train_main (line 89) | def train_main(args):
function run_train (line 162) | def run_train(
function result2submission (line 192) | def result2submission(args):
function main (line 224) | def main():
FILE: EgoTracks/tools/trainers/base_trainer.py
function build_loss_function (line 25) | def build_loss_function(cfg):
class BaseTrainer (line 36) | class BaseTrainer:
method __init__ (line 40) | def __init__(self, cfg):
method train (line 89) | def train(
method train_epoch (line 139) | def train_epoch(self):
method save_checkpoint (line 142) | def save_checkpoint(self):
method load_checkpoint (line 169) | def load_checkpoint(
class StatValue (line 281) | class StatValue:
method __init__ (line 282) | def __init__(self):
method reset (line 285) | def reset(self):
method clear (line 288) | def clear(self):
method update (line 292) | def update(self, val):
class AverageMeter (line 297) | class AverageMeter(object):
method __init__ (line 300) | def __init__(self):
method reset (line 304) | def reset(self):
method clear (line 310) | def clear(self):
method update (line 314) | def update(self, val, n=1):
method new_epoch (line 320) | def new_epoch(self):
FILE: EgoTracks/tools/trainers/starkst_trainer.py
class STARKSTrainer (line 19) | class STARKSTrainer(BaseTrainer):
method __init__ (line 20) | def __init__(self, cfg):
method _set_default_settings (line 32) | def _set_default_settings(self):
method cycle_dataset (line 40) | def cycle_dataset(self, loader):
method forward_and_compute_loss (line 76) | def forward_and_compute_loss(self, data):
method forward_pass (line 90) | def forward_pass(self, data, run_box_head, run_cls_head):
method compute_losses (line 128) | def compute_losses(self, pred_dict, gt_bbox, return_status=True):
method train_epoch (line 178) | def train_epoch(self):
method _init_timing (line 191) | def _init_timing(self):
method _update_stats (line 196) | def _update_stats(self, new_stats: OrderedDict, batch_size, loader):
method _print_stats (line 208) | def _print_stats(self, i, loader, batch_size):
method _stats_new_epoch (line 233) | def _stats_new_epoch(self):
class STARKSTTrainer (line 255) | class STARKSTTrainer(STARKSTrainer):
method __init__ (line 256) | def __init__(self, cfg):
method compute_losses (line 263) | def compute_losses(self, pred_dict, labels, return_status=True):
method forward_and_compute_loss (line 279) | def forward_and_compute_loss(self, data):
FILE: EgoTracks/tracking/config/config.py
function get_cfg (line 7) | def get_cfg(model_type):
FILE: EgoTracks/tracking/dataset/base_image_dataset.py
class BaseImageDataset (line 5) | class BaseImageDataset(torch.utils.data.Dataset):
method __init__ (line 8) | def __init__(self, name, root, image_loader=opencv_loader):
method __len__ (line 22) | def __len__(self):
method __getitem__ (line 29) | def __getitem__(self, index):
method get_name (line 33) | def get_name(self):
method get_num_images (line 41) | def get_num_images(self):
method has_class_info (line 48) | def has_class_info(self):
method get_class_name (line 51) | def get_class_name(self, image_id):
method get_num_classes (line 54) | def get_num_classes(self):
method get_class_list (line 57) | def get_class_list(self):
method get_images_in_class (line 60) | def get_images_in_class(self, class_name):
method has_segmentation_info (line 63) | def has_segmentation_info(self):
method get_image_info (line 66) | def get_image_info(self, seq_id):
method get_image (line 77) | def get_image(self, image_id, anno=None):
FILE: EgoTracks/tracking/dataset/base_video_dataset.py
class BaseVideoDataset (line 5) | class BaseVideoDataset(torch.utils.data.Dataset):
method __init__ (line 8) | def __init__(self, name, root, image_loader=opencv_loader):
method __len__ (line 22) | def __len__(self):
method __getitem__ (line 29) | def __getitem__(self, index):
method is_video_sequence (line 33) | def is_video_sequence(self):
method is_synthetic_video_dataset (line 41) | def is_synthetic_video_dataset(self):
method get_name (line 49) | def get_name(self):
method get_num_sequences (line 57) | def get_num_sequences(self):
method has_class_info (line 64) | def has_class_info(self):
method has_occlusion_info (line 67) | def has_occlusion_info(self):
method get_num_classes (line 70) | def get_num_classes(self):
method get_class_list (line 73) | def get_class_list(self):
method get_sequences_in_class (line 76) | def get_sequences_in_class(self, class_name):
method has_segmentation_info (line 79) | def has_segmentation_info(self):
method get_sequence_info (line 82) | def get_sequence_info(self, seq_id):
method get_frames (line 93) | def get_frames(self, seq_id, frame_ids, anno=None):
FILE: EgoTracks/tracking/dataset/build.py
function names2datasets (line 21) | def names2datasets(name_list: List, cfg, image_loader=opencv_loader):
function build_dataloaders (line 124) | def build_dataloaders(cfg, local_rank=-1):
FILE: EgoTracks/tracking/dataset/dataloader.py
function _check_use_shared_memory (line 13) | def _check_use_shared_memory():
function ltr_collate (line 22) | def ltr_collate(batch):
function ltr_collate_stack1 (line 83) | def ltr_collate_stack1(batch):
class LTRLoader (line 144) | class LTRLoader(torch.utils.data.dataloader.DataLoader):
method __init__ (line 196) | def __init__(
FILE: EgoTracks/tracking/dataset/eval_datasets/base_dataset.py
class BaseDataset (line 10) | class BaseDataset:
method __init__ (line 13) | def __init__(self):
method __len__ (line 16) | def __len__(self):
method get_sequence_list (line 20) | def get_sequence_list(self):
class Sequence (line 25) | class Sequence:
method __init__ (line 28) | def __init__(
method _ensure_start_frame (line 53) | def _ensure_start_frame(self):
method _construct_init_data (line 74) | def _construct_init_data(self, init_data):
method init_info (line 124) | def init_info(self):
method frame_info (line 128) | def frame_info(self, frame_num):
method init_bbox (line 132) | def init_bbox(self, frame_num=0):
method init_mask (line 135) | def init_mask(self, frame_num=0):
method get_info (line 138) | def get_info(self, keys, frame_num=None):
method object_init_data (line 146) | def object_init_data(self, frame_num=None) -> Dict:
method target_class (line 171) | def target_class(self, frame_num=None):
method get (line 174) | def get(self, name, frame_num=None):
method __repr__ (line 177) | def __repr__(self):
class SequenceList (line 183) | class SequenceList(list):
method __getitem__ (line 186) | def __getitem__(self, item):
method __add__ (line 201) | def __add__(self, other):
method copy (line 204) | def copy(self):
function imread_indexed (line 208) | def imread_indexed(filename):
FILE: EgoTracks/tracking/dataset/eval_datasets/ego4d_lt_tracking_dataset.py
class _EGO4DLTTrackingDataset (line 14) | class _EGO4DLTTrackingDataset(BaseDataset):
method __init__ (line 17) | def __init__(self, data_dir, annotation_path, split=None):
method get_sequences (line 29) | def get_sequences(self):
method load_clip_info (line 52) | def load_clip_info(self, clip_info_path):
method get_lt_track (line 58) | def get_lt_track(
method __len__ (line 143) | def __len__(self):
class EGO4DLTTrackingDataset (line 147) | class EGO4DLTTrackingDataset(torch.utils.data.Dataset):
method __init__ (line 150) | def __init__(self, data_dir, annotation_path, ratio=1.0, split=None):
method __getitem__ (line 163) | def __getitem__(self, index):
method __len__ (line 168) | def __len__(self):
FILE: EgoTracks/tracking/dataset/processing/base_processing.py
class BaseProcessing (line 5) | class BaseProcessing:
method __init__ (line 10) | def __init__(
method __call__ (line 34) | def __call__(self, data: TensorDict):
FILE: EgoTracks/tracking/dataset/processing/processing_utils.py
function sample_target (line 13) | def sample_target(im, target_bb, search_area_factor, output_sz=None, mas...
function transform_image_to_crop (line 91) | def transform_image_to_crop(
function jittered_center_crop (line 124) | def jittered_center_crop(
function transform_box_to_crop (line 170) | def transform_box_to_crop(
FILE: EgoTracks/tracking/dataset/processing/stark_processing.py
function stack_tensors (line 8) | def stack_tensors(x):
class STARKProcessing (line 14) | class STARKProcessing(BaseProcessing):
method __init__ (line 24) | def __init__(
method _get_jittered_box (line 52) | def _get_jittered_box(self, box, mode):
method __call__ (line 73) | def __call__(self, data: TensorDict):
FILE: EgoTracks/tracking/dataset/trackingdataset.py
function no_processing (line 7) | def no_processing(data):
class TrackingDataset (line 11) | class TrackingDataset(torch.utils.data.Dataset):
method __init__ (line 23) | def __init__(
method __len__ (line 67) | def __len__(self):
method _sample_visible_ids (line 70) | def _sample_visible_ids(
method __getitem__ (line 111) | def __getitem__(self, index):
method getitem (line 117) | def getitem(self):
method getitem_cls (line 226) | def getitem_cls(self):
method get_center_box (line 351) | def get_center_box(self, H, W, ratio=1 / 8):
method sample_seq_from_dataset (line 355) | def sample_seq_from_dataset(self, dataset, is_video_dataset):
method get_one_search (line 376) | def get_one_search(self):
method get_frame_ids_trident (line 404) | def get_frame_ids_trident(self, visible):
method get_frame_ids_stark (line 442) | def get_frame_ids_stark(self, visible, valid):
FILE: EgoTracks/tracking/dataset/train_datasets/coco_seq.py
class MSCOCOSeq (line 13) | class MSCOCOSeq(BaseVideoDataset):
method __init__ (line 36) | def __init__(
method _get_sequence_list (line 84) | def _get_sequence_list(self):
method is_video_sequence (line 90) | def is_video_sequence(self):
method get_num_classes (line 93) | def get_num_classes(self):
method get_name (line 96) | def get_name(self):
method has_class_info (line 99) | def has_class_info(self):
method get_class_list (line 102) | def get_class_list(self):
method has_segmentation_info (line 108) | def has_segmentation_info(self):
method get_num_sequences (line 111) | def get_num_sequences(self):
method _build_seq_per_class (line 114) | def _build_seq_per_class(self):
method get_sequences_in_class (line 125) | def get_sequences_in_class(self, class_name):
method get_sequence_info (line 128) | def get_sequence_info(self, seq_id):
method _get_anno (line 142) | def _get_anno(self, seq_id):
method _get_frames (line 147) | def _get_frames(self, seq_id):
method get_meta_info (line 154) | def get_meta_info(self, seq_id):
method get_class_name (line 180) | def get_class_name(self, seq_id):
method get_frames (line 186) | def get_frames(self, seq_id=None, frame_ids=None, anno=None):
FILE: EgoTracks/tracking/dataset/train_datasets/ego4d_lt_tracking.py
class EGO4DLTT (line 14) | class EGO4DLTT(BaseVideoDataset):
method __init__ (line 17) | def __init__(
method get_sequence_info (line 38) | def get_sequence_info(self, seq_id):
method get_name (line 50) | def get_name(self):
method _get_bbox_from_lt_tracking (line 53) | def _get_bbox_from_lt_tracking(self, seq_id):
method _get_frame (line 63) | def _get_frame(self, frame_path):
method get_frames (line 66) | def get_frames(self, seq_id, frame_ids, anno=None):
FILE: EgoTracks/tracking/dataset/train_datasets/ego4d_vq.py
class Ego4DVQ (line 12) | class Ego4DVQ(BaseVideoDataset):
method __init__ (line 15) | def __init__(
method get_sequence_info (line 38) | def get_sequence_info(self, seq_id):
method get_name (line 50) | def get_name(self):
method _get_sequence_path (line 53) | def _get_sequence_path(self, seq_id):
method _get_bbox_from_response_track (line 64) | def _get_bbox_from_response_track(self, seq_id):
method _get_frame_path (line 83) | def _get_frame_path(self, seq_path, frame_id):
method _get_frame (line 88) | def _get_frame(self, seq_path, frame_id):
method get_frames (line 91) | def get_frames(self, seq_id, frame_ids, anno=None):
FILE: EgoTracks/tracking/dataset/train_datasets/got10k.py
class Got10k (line 16) | class Got10k(BaseVideoDataset):
method __init__ (line 28) | def __init__(
method get_name (line 111) | def get_name(self):
method has_class_info (line 114) | def has_class_info(self):
method has_occlusion_info (line 117) | def has_occlusion_info(self):
method _load_meta_info (line 120) | def _load_meta_info(self):
method _read_meta (line 126) | def _read_meta(self, seq_path):
method _build_seq_per_class (line 151) | def _build_seq_per_class(self):
method get_sequences_in_class (line 163) | def get_sequences_in_class(self, class_name):
method _get_sequence_list (line 166) | def _get_sequence_list(self):
method _read_bb_anno (line 172) | def _read_bb_anno(self, seq_path):
method _read_target_visible (line 185) | def _read_target_visible(self, seq_path):
method _get_sequence_path (line 200) | def _get_sequence_path(self, seq_id):
method get_sequence_info (line 203) | def get_sequence_info(self, seq_id):
method _get_frame_path (line 218) | def _get_frame_path(self, seq_path, frame_id):
method _get_frame (line 223) | def _get_frame(self, seq_path, frame_id):
method get_class_name (line 226) | def get_class_name(self, seq_id):
method get_frames (line 231) | def get_frames(self, seq_id, frame_ids, anno=None):
FILE: EgoTracks/tracking/dataset/train_datasets/lasot.py
class Lasot (line 15) | class Lasot(BaseVideoDataset):
method __init__ (line 27) | def __init__(
method _build_sequence_list (line 63) | def _build_sequence_list(self, vid_ids=None, split=None):
method _build_class_list (line 84) | def _build_class_list(self):
method get_name (line 95) | def get_name(self):
method has_class_info (line 98) | def has_class_info(self):
method has_occlusion_info (line 101) | def has_occlusion_info(self):
method get_num_sequences (line 104) | def get_num_sequences(self):
method get_num_classes (line 107) | def get_num_classes(self):
method get_sequences_in_class (line 110) | def get_sequences_in_class(self, class_name):
method _read_bb_anno (line 113) | def _read_bb_anno(self, seq_path):
method _read_target_visible (line 125) | def _read_target_visible(self, seq_path):
method _get_sequence_path (line 139) | def _get_sequence_path(self, seq_id):
method get_sequence_info (line 146) | def get_sequence_info(self, seq_id):
method _get_frame_path (line 155) | def _get_frame_path(self, seq_path, frame_id):
method _get_frame (line 160) | def _get_frame(self, seq_path, frame_id):
method _get_class (line 163) | def _get_class(self, seq_path):
method get_class_name (line 167) | def get_class_name(self, seq_id):
method get_frames (line 173) | def get_frames(self, seq_id, frame_ids, anno=None):
FILE: EgoTracks/tracking/dataset/train_datasets/tracking_net.py
function list_sequences (line 15) | def list_sequences(root, set_ids):
class TrackingNet (line 40) | class TrackingNet(BaseVideoDataset):
method __init__ (line 52) | def __init__(
method _load_class_info (line 103) | def _load_class_info(self):
method get_name (line 125) | def get_name(self):
method has_class_info (line 128) | def has_class_info(self):
method get_sequences_in_class (line 131) | def get_sequences_in_class(self, class_name):
method _read_bb_anno (line 134) | def _read_bb_anno(self, seq_id):
method get_sequence_info (line 151) | def get_sequence_info(self, seq_id):
method _get_frame (line 158) | def _get_frame(self, seq_id, frame_id):
method _get_class (line 170) | def _get_class(self, seq_id):
method get_class_name (line 174) | def get_class_name(self, seq_id):
method get_frames (line 179) | def get_frames(self, seq_id, frame_ids, anno=None):
FILE: EgoTracks/tracking/dataset/transforms.py
class Transform (line 9) | class Transform:
method __init__ (line 34) | def __init__(self, *transforms):
method __call__ (line 42) | def __call__(self, **inputs):
method _split_inputs (line 68) | def _split_inputs(self, inputs):
method __repr__ (line 85) | def __repr__(self):
class TransformBase (line 94) | class TransformBase:
method __init__ (line 97) | def __init__(self):
method __call__ (line 104) | def __call__(self, **inputs):
method _get_image_size (line 132) | def _get_image_size(self, inputs):
method roll (line 148) | def roll(self):
method transform_image (line 151) | def transform_image(self, image, *rand_params):
method transform_coords (line 155) | def transform_coords(self, coords, image_shape, *rand_params):
method transform_bbox (line 159) | def transform_bbox(self, bbox, image_shape, *rand_params):
method transform_mask (line 183) | def transform_mask(self, mask, *rand_params):
method transform_att (line 187) | def transform_att(self, att, *rand_params):
class ToTensor (line 192) | class ToTensor(TransformBase):
method transform_image (line 195) | def transform_image(self, image):
method transfrom_mask (line 207) | def transfrom_mask(self, mask):
method transform_att (line 211) | def transform_att(self, att):
class ToTensorAndJitter (line 220) | class ToTensorAndJitter(TransformBase):
method __init__ (line 223) | def __init__(self, brightness_jitter=0.0, normalize=True):
method roll (line 228) | def roll(self):
method transform_image (line 233) | def transform_image(self, image, brightness_factor):
method transform_mask (line 243) | def transform_mask(self, mask, brightness_factor):
method transform_att (line 249) | def transform_att(self, att, brightness_factor):
class Normalize (line 258) | class Normalize(TransformBase):
method __init__ (line 261) | def __init__(self, mean, std, inplace=False):
method transform_image (line 267) | def transform_image(self, image):
class ToGrayscale (line 271) | class ToGrayscale(TransformBase):
method __init__ (line 274) | def __init__(self, probability=0.5):
method roll (line 279) | def roll(self):
method transform_image (line 282) | def transform_image(self, image, do_grayscale):
class ToBGR (line 292) | class ToBGR(TransformBase):
method transform_image (line 295) | def transform_image(self, image):
class RandomHorizontalFlip (line 302) | class RandomHorizontalFlip(TransformBase):
method __init__ (line 305) | def __init__(self, probability=0.5):
method roll (line 309) | def roll(self):
method transform_image (line 312) | def transform_image(self, image, do_flip):
method transform_coords (line 319) | def transform_coords(self, coords, image_shape, do_flip):
method transform_mask (line 326) | def transform_mask(self, mask, do_flip):
method transform_att (line 333) | def transform_att(self, att, do_flip):
class RandomHorizontalFlip_Norm (line 341) | class RandomHorizontalFlip_Norm(RandomHorizontalFlip):
method __init__ (line 345) | def __init__(self, probability=0.5):
method transform_coords (line 349) | def transform_coords(self, coords, image_shape, do_flip):
FILE: EgoTracks/tracking/metrics/miou.py
function compute_overlaps (line 5) | def compute_overlaps(y_pred, y_gt):
function mIoU (line 19) | def mIoU(y_pred, y_gt):
FILE: EgoTracks/tracking/models/multiple_object_tracker.py
class MultipleObjectTracker (line 6) | class MultipleObjectTracker(Tracker):
method __init__ (line 13) | def __init__(self, model):
method inference (line 17) | def inference(self, video, meta_data):
method run_model (line 21) | def run_model(self, img):
method update_tracker (line 25) | def update_tracker(self, res):
method init_tracker (line 29) | def init_tracker(self, img, meta):
FILE: EgoTracks/tracking/models/single_object_tracker.py
class SingleObjectTracker (line 15) | class SingleObjectTracker(Tracker):
method __init__ (line 22) | def __init__(self, model, verbose: bool = False):
method inference_video_handler (line 31) | def inference_video_handler(
method inference_sequence (line 36) | def inference_sequence(self, video: Sequence, meta_data: Dict = None) ...
method inference_img_sequence (line 118) | def inference_img_sequence(
method run_model (line 202) | def run_model(self, image: torch.Tensor) -> Dict:
method update_tracker (line 217) | def update_tracker(self, result: Dict) -> None:
method init_tracker (line 231) | def init_tracker(self, image: torch.Tensor, meta: Dict) -> None:
method reset_tracker (line 243) | def reset_tracker(self) -> None:
FILE: EgoTracks/tracking/models/stark_tracker/backbone.py
class FrozenBatchNorm2d (line 16) | class FrozenBatchNorm2d(torch.nn.Module):
method __init__ (line 24) | def __init__(self, n):
method _load_from_state_dict (line 31) | def _load_from_state_dict(
method forward (line 55) | def forward(self, x):
class BackboneBase (line 68) | class BackboneBase(nn.Module):
method __init__ (line 69) | def __init__(
method forward (line 107) | def forward(self, tensor_list: NestedTensor):
class Backbone (line 118) | class Backbone(BackboneBase):
method __init__ (line 121) | def __init__(
class Joiner (line 152) | class Joiner(nn.Sequential):
method __init__ (line 153) | def __init__(self, backbone, position_embedding):
method forward (line 156) | def forward(self, tensor_list: NestedTensor, mode=None):
function build_backbone (line 168) | def build_backbone(cfg):
FILE: EgoTracks/tracking/models/stark_tracker/config/stark_st2/config.py
class _DATA_TEMPLATE (line 117) | class _DATA_TEMPLATE:
class _DATA_SEARCH (line 126) | class _DATA_SEARCH:
class _DATA_VAL (line 135) | class _DATA_VAL:
class _DATA_TRAIN (line 142) | class _DATA_TRAIN:
class _DATA (line 151) | class _DATA:
class _SCHEDULER (line 177) | class _SCHEDULER:
class _TRAIN (line 183) | class _TRAIN:
class _MODEL_BACKBONE (line 209) | class _MODEL_BACKBONE:
class _MODEL_TRANSFORMER (line 217) | class _MODEL_TRANSFORMER:
class _MODEL (line 228) | class _MODEL:
class _UPDATE_INTERVALS (line 240) | class _UPDATE_INTERVALS:
class _TEST (line 250) | class _TEST:
class STARKParams (line 261) | class STARKParams:
function _edict2dict (line 268) | def _edict2dict(dest_dict, src_edict):
function gen_config (line 280) | def gen_config(config_file):
function _update_config (line 287) | def _update_config(base_cfg, exp_cfg):
function update_config_from_file (line 301) | def update_config_from_file(filename):
FILE: EgoTracks/tracking/models/stark_tracker/head.py
function conv (line 7) | def conv(
class Corner_Predictor (line 46) | class Corner_Predictor(nn.Module):
method __init__ (line 49) | def __init__(
method forward (line 85) | def forward(self, x, return_dist=False, softmax=True):
method get_score_map (line 109) | def get_score_map(self, x):
method soft_argmax (line 125) | def soft_argmax(self, score_map, return_dist=False, softmax=True):
class Corner_Predictor_Lite (line 142) | class Corner_Predictor_Lite(nn.Module):
method __init__ (line 145) | def __init__(self, inplanes=64, channel=256, feat_sz=20, stride=16):
method forward (line 176) | def forward(self, x, return_dist=False, softmax=True):
method get_score_map (line 200) | def get_score_map(self, x):
method soft_argmax (line 204) | def soft_argmax(self, score_map, return_dist=False, softmax=True):
class MLP (line 221) | class MLP(nn.Module):
method __init__ (line 224) | def __init__(self, input_dim, hidden_dim, output_dim, num_layers, BN=F...
method forward (line 238) | def forward(self, x):
function build_box_head (line 244) | def build_box_head(cfg):
FILE: EgoTracks/tracking/models/stark_tracker/params.py
class TrackerParams (line 6) | class TrackerParams:
method set_default_values (line 9) | def set_default_values(self, default_vals: Dict):
method get (line 14) | def get(self, name: str, *default):
method has (line 25) | def has(self, name: str):
function parameters (line 30) | def parameters(yaml_name: str):
FILE: EgoTracks/tracking/models/stark_tracker/position_encoding.py
class PositionEmbeddingSine (line 11) | class PositionEmbeddingSine(nn.Module):
method __init__ (line 17) | def __init__(
method forward (line 30) | def forward(self, tensor_list: NestedTensor):
class PositionEmbeddingLearned (line 71) | class PositionEmbeddingLearned(nn.Module):
method __init__ (line 76) | def __init__(self, num_pos_feats=256):
method reset_parameters (line 82) | def reset_parameters(self):
method forward (line 86) | def forward(self, tensor_list: NestedTensor):
class PositionEmbeddingNone (line 108) | class PositionEmbeddingNone(nn.Module):
method __init__ (line 113) | def __init__(self, num_pos_feats=256):
method forward (line 117) | def forward(self, tensor_list: NestedTensor):
function build_position_encoding (line 123) | def build_position_encoding(cfg):
FILE: EgoTracks/tracking/models/stark_tracker/resnet.py
class ResNet (line 39) | class ResNet(nn.Module):
method __init__ (line 40) | def __init__(
method _make_layer (line 120) | def _make_layer(self, block, planes, blocks, stride=1, dilate=False):
method _forward_impl (line 161) | def _forward_impl(self, x):
method forward (line 182) | def forward(self, x):
function _resnet (line 186) | def _resnet(arch, block, layers, pretrained, progress, **kwargs):
function resnet18 (line 205) | def resnet18(pretrained=False, progress=True, **kwargs):
function resnet34 (line 215) | def resnet34(pretrained=False, progress=True, **kwargs):
function resnet50 (line 225) | def resnet50(pretrained=False, progress=True, **kwargs):
function resnet101 (line 235) | def resnet101(pretrained=False, progress=True, **kwargs):
function resnet152 (line 247) | def resnet152(pretrained=False, progress=True, **kwargs):
function resnext50_32x4d (line 259) | def resnext50_32x4d(pretrained=False, progress=True, **kwargs):
function resnext101_32x8d (line 273) | def resnext101_32x8d(pretrained=False, progress=True, **kwargs):
function wide_resnet50_2 (line 287) | def wide_resnet50_2(pretrained=False, progress=True, **kwargs):
function wide_resnet101_2 (line 304) | def wide_resnet101_2(pretrained=False, progress=True, **kwargs):
FILE: EgoTracks/tracking/models/stark_tracker/stark_s.py
class STARKS (line 15) | class STARKS(nn.Module):
method __init__ (line 18) | def __init__(
method forward (line 50) | def forward(
method forward_backbone (line 67) | def forward_backbone(self, input: NestedTensor):
method forward_transformer (line 80) | def forward_transformer(self, seq_dict, run_box_head=True, run_cls_hea...
method forward_box_head (line 95) | def forward_box_head(self, hs, memory):
method adjust (line 126) | def adjust(self, output_back: List, pos_embed: List):
method _set_aux_loss (line 139) | def _set_aux_loss(self, outputs_coord):
function build_starks (line 146) | def build_starks(cfg):
FILE: EgoTracks/tracking/models/stark_tracker/stark_st.py
class STARKST (line 10) | class STARKST(STARKS):
method __init__ (line 13) | def __init__(
method forward (line 40) | def forward(
method forward_transformer (line 57) | def forward_transformer(self, seq_dict, run_box_head=False, run_cls_he...
method forward_head (line 74) | def forward_head(self, hs, memory, run_box_head=False, run_cls_head=Fa...
function build_starkst (line 92) | def build_starkst(cfg):
FILE: EgoTracks/tracking/models/stark_tracker/stark_tracker.py
class STARKTracker (line 21) | class STARKTracker(SingleObjectTracker):
method __init__ (line 22) | def __init__(
method init_tracker (line 67) | def init_tracker(self, img: torch.Tensor, meta_data: Dict):
method run_model (line 138) | def run_model(
method track_globally (line 164) | def track_globally(
method track_locally (line 304) | def track_locally(
method update_tracker (line 393) | def update_tracker(self, results):
method map_box_back (line 438) | def map_box_back(self, pred_box: List, resize_factor: float, pos: List...
FILE: EgoTracks/tracking/models/stark_tracker/transformer.py
function check_inf (line 19) | def check_inf(tensor):
function check_nan (line 23) | def check_nan(tensor):
function check_valid (line 27) | def check_valid(tensor, type_name):
class Transformer (line 34) | class Transformer(nn.Module):
method __init__ (line 35) | def __init__(
method _reset_parameters (line 96) | def _reset_parameters(self):
method forward (line 101) | def forward(
class TransformerEncoder (line 151) | class TransformerEncoder(nn.Module):
method __init__ (line 152) | def __init__(self, encoder_layer, num_layers, norm=None):
method forward (line 158) | def forward(
class TransformerEncoderLite (line 200) | class TransformerEncoderLite(nn.Module):
method __init__ (line 201) | def __init__(self, encoder_layer, num_layers, norm=None):
method forward (line 208) | def forward(self, seq_dict, return_intermediate=False, part_att=False):
class TransformerDecoder (line 229) | class TransformerDecoder(nn.Module):
method __init__ (line 230) | def __init__(self, decoder_layer, num_layers, norm=None, return_interm...
method forward (line 237) | def forward(
class TransformerEncoderLayer (line 278) | class TransformerEncoderLayer(nn.Module):
method __init__ (line 279) | def __init__(
method with_pos_embed (line 307) | def with_pos_embed(self, tensor, pos: Optional[Tensor]):
method forward_post (line 310) | def forward_post(
method forward_pre (line 332) | def forward_pre(
method forward (line 350) | def forward(
class TransformerEncoderLayerLite (line 362) | class TransformerEncoderLayerLite(nn.Module):
method __init__ (line 365) | def __init__(
method with_pos_embed (line 393) | def with_pos_embed(self, tensor, pos: Optional[Tensor]):
method forward_post (line 396) | def forward_post(self, seq_dict, part_att=False):
method forward (line 433) | def forward(self, seq_dict, part_att=False):
class TransformerDecoderLayer (line 439) | class TransformerDecoderLayer(nn.Module):
method __init__ (line 440) | def __init__(
method with_pos_embed (line 471) | def with_pos_embed(self, tensor, pos: Optional[Tensor]):
method forward_post (line 474) | def forward_post(
method forward_pre (line 520) | def forward_pre(
method forward (line 551) | def forward(
function _get_clones (line 585) | def _get_clones(module, N):
function build_transformer (line 589) | def build_transformer(cfg):
function _get_activation_fn (line 603) | def _get_activation_fn(activation):
FILE: EgoTracks/tracking/models/stark_tracker/utils/box_ops.py
function box_cxcywh_to_xyxy (line 7) | def box_cxcywh_to_xyxy(x):
function box_xywh_to_xyxy (line 13) | def box_xywh_to_xyxy(x):
function box_xyxy_to_xywh (line 19) | def box_xyxy_to_xywh(x):
function box_xyxy_to_cxcywh (line 25) | def box_xyxy_to_cxcywh(x):
function box_iou (line 35) | def box_iou(boxes1, boxes2):
function generalized_box_iou (line 60) | def generalized_box_iou(boxes1, boxes2):
function giou_loss (line 85) | def giou_loss(boxes1, boxes2):
function clip_box (line 96) | def clip_box(box: List, H, W, margin=0):
FILE: EgoTracks/tracking/models/stark_tracker/utils/merge.py
function merge_template_search (line 4) | def merge_template_search(inp_list, return_search=False, return_template...
function get_qkv (line 20) | def get_qkv(inp_list):
FILE: EgoTracks/tracking/models/stark_tracker/utils/misc.py
function is_dist_avail_and_initialized (line 13) | def is_dist_avail_and_initialized():
function get_world_size (line 21) | def get_world_size():
function get_rank (line 27) | def get_rank():
function is_main_process (line 33) | def is_main_process():
class NestedTensor (line 39) | class NestedTensor(object):
method __init__ (line 40) | def __init__(self, tensors, mask: Optional[Tensor]):
method to (line 44) | def to(self, device):
method decompose (line 55) | def decompose(self):
method __repr__ (line 58) | def __repr__(self):
class Preprocessor (line 62) | class Preprocessor(object):
method __init__ (line 63) | def __init__(self):
method process (line 67) | def process(
FILE: EgoTracks/tracking/models/stark_tracker/utils/preprocessing_utils.py
function sample_target (line 14) | def sample_target(im, pos, crop_sz, output_sz=None, mask=None, verbose=F...
FILE: EgoTracks/tracking/models/template.py
class TemplateImage (line 15) | class TemplateImage:
method __init__ (line 23) | def __init__(
method update_template (line 45) | def update_template(self, attribute: str, value: Any) -> None:
class ObjectInstance (line 68) | class ObjectInstance:
method __init__ (line 75) | def __init__(self, description: str = "") -> None:
method add_template (line 82) | def add_template(
method get_templates_list (line 99) | def get_templates_list(self) -> List:
method __iter__ (line 111) | def __iter__(self):
method __len__ (line 120) | def __len__(self) -> int:
class InstanceRegistration (line 133) | class InstanceRegistration:
method __init__ (line 146) | def __init__(self) -> None:
method add (line 152) | def add(
method remove (line 183) | def remove(self, instance_id: str) -> None:
method get_instance (line 196) | def get_instance(self, instance_id: str) -> ObjectInstance:
method get_instance_ids (line 208) | def get_instance_ids(self) -> List:
method __iter__ (line 220) | def __iter__(self) -> Iterator:
method __len__ (line 236) | def __len__(self) -> int:
FILE: EgoTracks/tracking/models/tracker.py
class Tracker (line 11) | class Tracker(nn.Module):
method __init__ (line 19) | def __init__(self, model: nn.Module, verbose: bool = False):
method inference (line 32) | def inference(
method inference_sequence (line 89) | def inference_sequence(self, video: Sequence, meta_data: Dict = None) ...
method inference_img_sequence (line 125) | def inference_img_sequence(
method inference_video_handler (line 165) | def inference_video_handler(
method run_model (line 205) | def run_model(self, image: torch.Tensor) -> Dict:
method update_tracker (line 220) | def update_tracker(self, result: Dict) -> None:
method init_tracker (line 235) | def init_tracker(self, image: torch.Tensor, meta_data: Dict) -> None:
method reset_tracker (line 249) | def reset_tracker(self) -> None:
FILE: EgoTracks/tracking/solver/build.py
function build_optimizer_scheduler (line 7) | def build_optimizer_scheduler(cfg, model):
function build_optimizer (line 14) | def build_optimizer(cfg, model):
function build_scheduler (line 69) | def build_scheduler(cfg, optimizer):
function get_optimizer_scheduler (line 85) | def get_optimizer_scheduler(net, cfg):
FILE: EgoTracks/tracking/utils/bbox_helper.py
function corner2center (line 16) | def corner2center(corner):
function center2corner (line 33) | def center2corner(center):
function cxy_wh_2_rect (line 50) | def cxy_wh_2_rect(pos, sz):
function xywh_2_rect (line 54) | def xywh_2_rect(bbox):
function get_axis_aligned_bbox (line 72) | def get_axis_aligned_bbox(region):
function aug_apply (line 99) | def aug_apply(bbox, param, shape, inv=False, rd=False):
function IoU (line 175) | def IoU(rect1, rect2):
function cxywh_2_xywh (line 198) | def cxywh_2_xywh(bbox: List, context_ratio: float = 0.0) -> List:
function xywh_2_cxywh (line 217) | def xywh_2_cxywh(bbox: List, context_ratio: float = 0.0) -> List:
FILE: EgoTracks/tracking/utils/defaults.py
function setup (line 8) | def setup(args):
function default_argument_parser (line 19) | def default_argument_parser(epilog=None):
FILE: EgoTracks/tracking/utils/env.py
function setup_environment (line 8) | def setup_environment():
FILE: EgoTracks/tracking/utils/load_helper.py
function check_keys (line 8) | def check_keys(model, pretrained_state_dict):
function remove_prefix (line 27) | def remove_prefix(state_dict, prefix):
function load_pretrain (line 38) | def load_pretrain(model, pretrained_path):
function restore_from (line 63) | def restore_from(model, optimizer, ckpt_path):
FILE: EgoTracks/tracking/utils/load_text.py
function load_text_numpy (line 7) | def load_text_numpy(path, delimiter, dtype):
function load_text_pandas (line 22) | def load_text_pandas(path, delimiter, dtype):
function load_text (line 51) | def load_text(path, delimiter=" ", dtype=np.float32, backend="numpy"):
FILE: EgoTracks/tracking/utils/meters.py
class AverageMeter (line 4) | class AverageMeter(object):
method __init__ (line 7) | def __init__(self, name, fmt=":f"):
method reset (line 12) | def reset(self):
method update (line 18) | def update(self, val, n=1):
method __str__ (line 24) | def __str__(self):
class ProgressMeter (line 29) | class ProgressMeter(object):
method __init__ (line 30) | def __init__(self, num_batches, meters, prefix=""):
method display (line 35) | def display(self, batch):
method _get_batch_fmtstr (line 40) | def _get_batch_fmtstr(self, num_batches):
FILE: EgoTracks/tracking/utils/multiprocessing.py
function run (line 12) | def run(
function launch_job (line 68) | def launch_job(
FILE: EgoTracks/tracking/utils/tensor.py
class TensorDict (line 8) | class TensorDict(OrderedDict):
method concat (line 11) | def concat(self, other):
method copy (line 15) | def copy(self):
method __deepcopy__ (line 18) | def __deepcopy__(self, memodict={}):
method __getattr__ (line 21) | def __getattr__(self, name):
method attribute (line 37) | def attribute(self, attr: str, *args):
method apply (line 40) | def apply(self, fn, *args, **kwargs):
method _iterable (line 44) | def _iterable(a):
class TensorList (line 48) | class TensorList(list):
method __init__ (line 51) | def __init__(self, list_of_tensors=None):
method __deepcopy__ (line 56) | def __deepcopy__(self, memodict={}):
method __getitem__ (line 59) | def __getitem__(self, item):
method __add__ (line 67) | def __add__(self, other):
method __radd__ (line 72) | def __radd__(self, other):
method __iadd__ (line 77) | def __iadd__(self, other):
method __sub__ (line 86) | def __sub__(self, other):
method __rsub__ (line 91) | def __rsub__(self, other):
method __isub__ (line 96) | def __isub__(self, other):
method __mul__ (line 105) | def __mul__(self, other):
method __rmul__ (line 110) | def __rmul__(self, other):
method __imul__ (line 115) | def __imul__(self, other):
method __truediv__ (line 124) | def __truediv__(self, other):
method __rtruediv__ (line 129) | def __rtruediv__(self, other):
method __itruediv__ (line 134) | def __itruediv__(self, other):
method __matmul__ (line 143) | def __matmul__(self, other):
method __rmatmul__ (line 148) | def __rmatmul__(self, other):
method __imatmul__ (line 153) | def __imatmul__(self, other):
method __mod__ (line 162) | def __mod__(self, other):
method __rmod__ (line 167) | def __rmod__(self, other):
method __pos__ (line 172) | def __pos__(self):
method __neg__ (line 175) | def __neg__(self):
method __le__ (line 178) | def __le__(self, other):
method __ge__ (line 183) | def __ge__(self, other):
method concat (line 188) | def concat(self, other):
method copy (line 191) | def copy(self):
method unroll (line 194) | def unroll(self):
method list (line 206) | def list(self):
method attribute (line 209) | def attribute(self, attr: str, *args):
method apply (line 212) | def apply(self, fn):
method __getattr__ (line 215) | def __getattr__(self, name):
method _iterable (line 227) | def _iterable(a):
function tensor_operation (line 231) | def tensor_operation(op):
FILE: EgoTracks/tracking/utils/types.py
class SiamMaskTestParams (line 8) | class SiamMaskTestParams:
class SiamMaskParams (line 41) | class SiamMaskParams:
class Params (line 46) | class Params:
FILE: EgoTracks/tracking/utils/utils.py
function opencv_loader (line 9) | def opencv_loader(path):
function visualize_bbox (line 23) | def visualize_bbox(frames: List, bboxes: List, texts: List = None) -> List:
function extract_frames (line 48) | def extract_frames(frame_numbers: List, container: av.container.Containe...
function extract_frames_by_range (line 58) | def extract_frames_by_range(
function pad_bboxes (line 69) | def pad_bboxes(frame_bbox_dict, frame_numbers):
FILE: MQ/Evaluation/ego4d/eval_action_detection.py
class EvalActionDetection (line 10) | class EvalActionDetection(object):
method __init__ (line 12) | def __init__(self, ground_truth_filename=None,
method _import_ground_truth (line 30) | def _import_ground_truth(self, ground_truth_filename):
method wrapper_compute_average_precision (line 55) | def wrapper_compute_average_precision(self, prediction):
method evaluate (line 73) | def evaluate(self, prediction):
function compute_average_precision_detection (line 90) | def compute_average_precision_detection(ground_truth, prediction, tiou_t...
FILE: MQ/Evaluation/ego4d/eval_detection.py
class ANETdetection (line 20) | class ANETdetection(object):
method __init__ (line 25) | def __init__(self, ground_truth_filename=None, prediction_filename=None,
method _import_ground_truth (line 62) | def _import_ground_truth(self, ground_truth_filename):
method _import_prediction (line 114) | def _import_prediction(self, prediction_filename):
method _get_predictions_with_label (line 159) | def _get_predictions_with_label(self, prediction_by_label, label_name,...
method wrapper_compute_average_precision (line 170) | def wrapper_compute_average_precision(self):
method evaluate (line 200) | def evaluate(self):
function compute_average_precision_detection (line 218) | def compute_average_precision_detection(ground_truth, prediction, tiou_t...
FILE: MQ/Evaluation/ego4d/generate_detection.py
function IOU (line 9) | def IOU(s1, e1, s2, e2):
function Soft_NMS (line 16) | def Soft_NMS(df, nms_threshold=1e-5, num_prop=200):
function _gen_detection_video (line 62) | def _gen_detection_video(video_name, result, idx_classes, opt, num_prop=...
function gen_detection_multicore (line 90) | def gen_detection_multicore(opt):
FILE: MQ/Evaluation/ego4d/generate_retrieval.py
function IOU (line 8) | def IOU(s1, e1, s2, e2):
function Soft_NMS (line 15) | def Soft_NMS(df, nms_threshold=1e-5, num_prop=200):
function rm_other_category (line 63) | def rm_other_category(df, annots, classes):
function _gen_retrieval_video (line 76) | def _gen_retrieval_video(video_name, result, classes, idx_classes, opt, ...
function gen_retrieval_multicore (line 104) | def gen_retrieval_multicore(opt):
FILE: MQ/Evaluation/ego4d/get_detect_performance.py
function run_evaluation (line 5) | def run_evaluation(ground_truth_filename, prediction_filename,
function evaluation_detection (line 19) | def evaluation_detection(opt):
FILE: MQ/Evaluation/ego4d/get_retrieval_performance.py
class Moment_Retrieval (line 5) | class Moment_Retrieval(object):
method __init__ (line 9) | def __init__(self, ground_truth_filename=None, prediction_filename=None,
method _import_ground_truth (line 41) | def _import_ground_truth(self, ground_truth_filename):
method _import_prediction (line 64) | def _import_prediction(self, prediction_filename):
method evaluate (line 86) | def evaluate(self):
function iou (line 126) | def iou(pred, gt): # require pred and gt is numpy
function evaluation_retrieval (line 146) | def evaluation_retrieval(opt):
FILE: MQ/Evaluation/utils.py
function get_blocked_videos (line 8) | def get_blocked_videos(api=API):
function interpolated_prec_rec (line 14) | def interpolated_prec_rec(prec, rec):
function segment_iou (line 25) | def segment_iou(target_segment, candidate_segments):
function wrapper_segment_iou (line 53) | def wrapper_segment_iou(target_segments, candidate_segments):
FILE: MQ/Infer.py
function Infer_SegTAD (line 22) | def Infer_SegTAD(opt):
function infer_batch_selectprop (line 48) | def infer_batch_selectprop(model,
function infer_v_asis (line 82) | def infer_v_asis(*args, **kwargs):
function nms (line 130) | def nms(dets, thresh=0.4):
FILE: MQ/Models/ActionGenerator.py
class Pred_loc_cls (line 6) | class Pred_loc_cls(object):
method __init__ (line 7) | def __init__(self, opt):
method __call__ (line 16) | def __call__(self, cls_pred_dec, reg_pred_dec, anchors):
method _call_one_stage (line 30) | def _call_one_stage(self, cls_pred, reg_pred, all_anchors):
method cat_boxlist (line 59) | def cat_boxlist(self, bboxes):
FILE: MQ/Models/AnchorGenerator.py
class AnchorGenerator (line 6) | class AnchorGenerator(nn.Module):
method __init__ (line 7) | def __init__(self, opt):
method gen_anchors (line 24) | def gen_anchors(self):
method get_base_anchors (line 33) | def get_base_anchors(self, stride, scales):
method _scale_enum (line 38) | def _scale_enum(self, anchor, scales):
method _mkanchors (line 45) | def _mkanchors(self, ws, ctr):
method _whctrs (line 55) | def _whctrs(self, anchor):
FILE: MQ/Models/BoundaryAdjust.py
class BoundaryAdjust (line 6) | class BoundaryAdjust(nn.Module):
method __init__ (line 8) | def __init__(self, opt):
method forward (line 28) | def forward(self, loc_box, feat_frmlvl):
method cal_loss (line 66) | def cal_loss(self, start_offsets, end_offsets, anchors, gt_bbox, num_gt):
method update_bd (line 82) | def update_bd(self, anchors, start_offsets, end_offsets):
FILE: MQ/Models/BoxCoder.py
class BoxCoder (line 5) | class BoxCoder(object):
method __init__ (line 7) | def __init__(self, opt):
method encode (line 10) | def encode(self, gt_boxes, anchors):
method decode (line 39) | def decode(self, preds, anchors):
FILE: MQ/Models/GCNs.py
function knn (line 7) | def knn(x, num_frms, opt, y=None, k=10):
function get_neigh_idx_semantic (line 38) | def get_neigh_idx_semantic(x, n_neigh, num_frms, opt):
class NeighConv (line 47) | class NeighConv(nn.Module):
method __init__ (line 48) | def __init__(self, in_features, out_features, opt):
method forward (line 57) | def forward(self, feat_prop, neigh_idx):
class xGN (line 86) | class xGN(nn.Module):
method __init__ (line 87) | def __init__(self, opt, in_channels, out_channels, stride = 2, bias=T...
method forward (line 100) | def forward(self, x, num_frms):
FILE: MQ/Models/Head.py
class Head (line 5) | class Head(nn.Module):
method __init__ (line 6) | def __init__(self, opt):
method forward (line 56) | def forward(self, x):
FILE: MQ/Models/Loss.py
class Loss_loc_cls (line 9) | class Loss_loc_cls(object):
method __init__ (line 11) | def __init__(self, opt):
method _iou_anchors_gts (line 23) | def _iou_anchors_gts(self, anchor, gt):
method __call__ (line 37) | def __call__(self, cls_pred_dec, reg_pred_dec, anchors, gt_bbox, num_gt):
method _loss_one_stage (line 59) | def _loss_one_stage(self, cls_pred, reg_pred, gt_bbox, num_gt, anchors...
method cls_loss_func (line 79) | def cls_loss_func(self, cls_pred, cls_labels):
method reg_loss_func (line 97) | def reg_loss_func(self, pred, target, anchor, pred_boxes=None, weight=...
method prepare_targets (line 132) | def prepare_targets(self, gt_bbox, num_gt, anchors, stage=0):
function bi_loss (line 165) | def bi_loss(prediction, groundtruth, reduction='mean'):
function get_loss_supplement (line 186) | def get_loss_supplement(pred_action, gt_action, pred_start, gt_start, pr...
FILE: MQ/Models/VSGN.py
class VSGN (line 11) | class VSGN(nn.Module):
method __init__ (line 12) | def __init__(self, opt):
method _forward_test (line 58) | def _forward_test(self, cls_pred_enc, reg_pred_enc, cls_pred_dec, reg_...
method forward (line 66) | def forward(self, input, num_frms, gt_action= None, gt_start= None, gt...
FILE: MQ/Models/XGPN.py
class XGPN (line 8) | class XGPN(nn.Module):
method __init__ (line 9) | def __init__(self, opt):
method _make_levels_enc (line 45) | def _make_levels_enc(self, opt, in_channels, out_channels, stride = 2):
method _make_levels_dec (line 55) | def _make_levels_dec(self, in_channels, out_channels, output_padding =...
method _make_levels (line 62) | def _make_levels(self, in_channels, out_channels):
method _encoder (line 69) | def _encoder(self, input, num_frms):
method _decoder (line 82) | def _decoder(self, input):
method forward (line 99) | def forward(self, input, num_frms):
FILE: MQ/Models/matcher.py
class Matcher (line 4) | class Matcher(object):
method __init__ (line 22) | def __init__(self, allow_low_quality_matches=False):
method __call__ (line 41) | def __call__(self, match_quality_matrix, iou_thr = 0.5):
method set_low_quality_matches_ (line 78) | def set_low_quality_matches_(self, matches, all_matches, match_quality...
FILE: MQ/Train.py
function Train_VSGN (line 17) | def Train_VSGN(opt):
function train_VSGN_epoch (line 61) | def train_VSGN_epoch(data_loader, model, optimizer, epoch, writer, opt, ...
function test_VSGN_epoch (line 111) | def test_VSGN_epoch(data_loader, model, epoch, writer, opt):
FILE: MQ/Utils/dataset.py
function load_json (line 15) | def load_json(file):
class VideoDataSet (line 21) | class VideoDataSet(data.Dataset):
method __init__ (line 22) | def __init__(self, opt, subset="train", mode="train"):
method _getDatasetDict (line 39) | def _getDatasetDict(self):
method __getitem__ (line 71) | def __getitem__(self, index):
method _get_video_data (line 81) | def _get_video_data(self, index):
method _get_train_data_label_org (line 110) | def _get_train_data_label_org(self, num_frms, clip_name, fps):
method _ioa_with_anchors (line 180) | def _ioa_with_anchors(self, anchors_min, anchors_max, box_min, box_max):
method __len__ (line 188) | def __len__(self):
function iou_with_anchors (line 192) | def iou_with_anchors(anchors_min, anchors_max, box_min, box_max):
FILE: MQ/Utils/opts.py
function parse_opt (line 3) | def parse_opt():
FILE: NLQ/2D-TAN/data/TACoS/merge_npys_to_hdf5.py
function convert_tall_c3d_features (line 8) | def convert_tall_c3d_features(sampling_rate):
FILE: NLQ/2D-TAN/lib/core/config.py
function _update_dict (line 89) | def _update_dict(cfg, value):
function update_config (line 101) | def update_config(config_file):
FILE: NLQ/2D-TAN/lib/core/engine.py
class Engine (line 1) | class Engine(object):
method __init__ (line 2) | def __init__(self):
method hook (line 5) | def hook(self, name, state):
method train (line 10) | def train(self, network, iterator, maxepoch, optimizer, scheduler):
method test (line 49) | def test(self, network, iterator, split):
FILE: NLQ/2D-TAN/lib/core/eval.py
function iou (line 9) | def iou(pred, gt): # require pred and gt is numpy
function rank (line 29) | def rank(pred, gt):
function nms (line 32) | def nms(dets, thresh=0.4, top_k=-1):
function eval (line 55) | def eval(segments, data):
function eval_predictions (line 75) | def eval_predictions(segments, data, verbose=True, merge_window=False):
function display_results (line 108) | def display_results(eval_result, miou, title=None):
function parse_args (line 123) | def parse_args():
function reset_config (line 138) | def reset_config(config, args):
FILE: NLQ/2D-TAN/lib/core/utils.py
class AverageMeter (line 10) | class AverageMeter(object):
method __init__ (line 12) | def __init__(self):
method reset (line 15) | def reset(self):
method update (line 21) | def update(self, val, n=1):
function create_logger (line 27) | def create_logger(cfg, cfg_name, tag='train'):
FILE: NLQ/2D-TAN/lib/datasets/__init__.py
function collate_fn (line 5) | def collate_fn(batch):
function average_to_fixed_length (line 30) | def average_to_fixed_length(visual_input):
FILE: NLQ/2D-TAN/lib/datasets/activitynet.py
class ActivityNet (line 16) | class ActivityNet(data.Dataset):
method __init__ (line 24) | def __init__(self, split):
method __getitem__ (line 49) | def __getitem__(self, index):
method __len__ (line 115) | def __len__(self):
method get_video_features (line 118) | def get_video_features(self, vid):
FILE: NLQ/2D-TAN/lib/datasets/charades.py
class Charades (line 17) | class Charades(data.Dataset):
method __init__ (line 25) | def __init__(self, split):
method __getitem__ (line 51) | def __getitem__(self, index):
method __len__ (line 88) | def __len__(self):
method get_video_features (line 91) | def get_video_features(self, vid):
method get_target_weights (line 99) | def get_target_weights(self):
FILE: NLQ/2D-TAN/lib/datasets/ego4d_clip.py
class Ego4DClip (line 22) | class Ego4DClip(data.Dataset):
method __init__ (line 23) | def __init__(self, split, temp=None):
method __getitem__ (line 152) | def __getitem__(self, index):
method __len__ (line 215) | def __len__(self):
method cache_text_feature (line 218) | def cache_text_feature(self, sentence, rnd=False):
method get_video_features (line 231) | def get_video_features(self, vid, duration, window_se=None, clip_se=No...
FILE: NLQ/2D-TAN/lib/datasets/tacos.py
class TACoS (line 16) | class TACoS(data.Dataset):
method __init__ (line 24) | def __init__(self, split):
method __getitem__ (line 49) | def __getitem__(self, index):
method __len__ (line 81) | def __len__(self):
method get_video_features (line 84) | def get_video_features(self, vid):
FILE: NLQ/2D-TAN/lib/models/frame_modules/frame_pool.py
class FrameAvgPool (line 4) | class FrameAvgPool(nn.Module):
method __init__ (line 6) | def __init__(self, cfg):
method forward (line 15) | def forward(self, visual_input):
class FrameMaxPool (line 20) | class FrameMaxPool(nn.Module):
method __init__ (line 22) | def __init__(self, input_size, hidden_size, stride):
method forward (line 27) | def forward(self, visual_input):
FILE: NLQ/2D-TAN/lib/models/fusion_modules/base_fusion.py
class BaseFusion (line 5) | class BaseFusion(nn.Module):
method __init__ (line 7) | def __init__(self, cfg):
method forward (line 18) | def forward(self, textual_input, textual_mask, map_h, map_mask):
FILE: NLQ/2D-TAN/lib/models/loss.py
function bce_rescale_loss (line 4) | def bce_rescale_loss(scores, masks, targets, cfg):
FILE: NLQ/2D-TAN/lib/models/map_modules/__init__.py
function get_padded_mask_and_weight (line 3) | def get_padded_mask_and_weight(*args):
FILE: NLQ/2D-TAN/lib/models/map_modules/map_conv.py
class MapConv (line 5) | class MapConv(nn.Module):
method __init__ (line 7) | def __init__(self, cfg):
method forward (line 24) | def forward(self, x, mask):
FILE: NLQ/2D-TAN/lib/models/prop_modules/dense.py
class PropMaxPool (line 3) | class PropMaxPool(nn.Module):
method __init__ (line 4) | def __init__(self, cfg):
method forward (line 13) | def forward(self, x):
FILE: NLQ/2D-TAN/lib/models/prop_modules/sparse.py
class SparsePropMaxPool (line 3) | class SparsePropMaxPool(nn.Module):
method __init__ (line 4) | def __init__(self, cfg):
method forward (line 17) | def forward(self, x):
method recover_to_original_map (line 41) | def recover_to_original_map(self, h_list, mask_list):
class SparsePropConv (line 64) | class SparsePropConv(nn.Module):
method __init__ (line 65) | def __init__(self, cfg):
method forward (line 79) | def forward(self, x):
method recover_to_original_map (line 102) | def recover_to_original_map(self, h_list, mask_list):
FILE: NLQ/2D-TAN/lib/models/tan.py
class TAN (line 8) | class TAN(nn.Module):
method __init__ (line 9) | def __init__(self):
method forward (line 18) | def forward(self, textual_input, textual_mask, visual_input):
method extract_features (line 28) | def extract_features(self, textual_input, textual_mask, visual_input):
FILE: NLQ/2D-TAN/moment_localization/_init_paths.py
function add_path (line 16) | def add_path(path):
FILE: NLQ/2D-TAN/moment_localization/test.py
function parse_args (line 24) | def parse_args():
function reset_config (line 49) | def reset_config(config, args):
function save_scores (line 70) | def save_scores(scores, data, dataset_name, split):
function nms (line 77) | def nms(dets, thresh=0.4, top_k=-1):
function post_process (line 100) | def post_process(segments, data, verbose=True, merge_window=False, run_e...
function save_prediction_to_file (line 134) | def save_prediction_to_file(result_path, predictions, annotations):
function network (line 195) | def network(sample):
function get_proposal_results (line 227) | def get_proposal_results(scores, durations):
function on_test_start (line 245) | def on_test_start(state):
function on_test_forward (line 252) | def on_test_forward(state):
function on_test_end (line 262) | def on_test_end(state):
FILE: NLQ/2D-TAN/moment_localization/train.py
function parse_args (line 37) | def parse_args():
function reset_config (line 60) | def reset_config(config, args):
function iterator (line 119) | def iterator(split):
function network (line 153) | def network(sample):
function get_proposal_results (line 168) | def get_proposal_results(scores, durations):
function on_start (line 186) | def on_start(state):
function on_forward (line 194) | def on_forward(state):
function on_update (line 198) | def on_update(state):# Save All
function on_end (line 261) | def on_end(state):
function on_test_start (line 266) | def on_test_start(state):
function on_test_forward (line 279) | def on_test_forward(state):
function on_test_end (line 289) | def on_test_end(state):
FILE: NLQ/VSLNet/main.py
function main (line 26) | def main(configs, parser):
function create_executor (line 258) | def create_executor(configs):
FILE: NLQ/VSLNet/model/VSLNet.py
function build_optimizer_and_scheduler (line 19) | def build_optimizer_and_scheduler(model, configs):
class VSLNet (line 52) | class VSLNet(nn.Module):
method __init__ (line 53) | def __init__(self, configs, word_vectors):
method init_parameters (line 103) | def init_parameters(self):
method forward (line 118) | def forward(self, word_ids, char_ids, video_features, v_mask, q_mask):
method extract_index (line 135) | def extract_index(self, start_logits, end_logits):
method compute_highlight_loss (line 140) | def compute_highlight_loss(self, scores, labels, mask):
method compute_loss (line 145) | def compute_loss(self, start_logits, end_logits, start_labels, end_lab...
FILE: NLQ/VSLNet/model/layers.py
function mask_logits (line 11) | def mask_logits(inputs, mask, mask_value=-1e30):
class Conv1D (line 16) | class Conv1D(nn.Module):
method __init__ (line 17) | def __init__(self, in_dim, out_dim, kernel_size=1, stride=1, padding=0...
method forward (line 28) | def forward(self, x):
class WordEmbedding (line 35) | class WordEmbedding(nn.Module):
method __init__ (line 36) | def __init__(self, num_words, word_dim, drop_rate, word_vectors=None):
method forward (line 56) | def forward(self, word_ids):
class CharacterEmbedding (line 68) | class CharacterEmbedding(nn.Module):
method __init__ (line 69) | def __init__(self, num_chars, char_dim, drop_rate):
method forward (line 91) | def forward(self, char_ids):
class Embedding (line 112) | class Embedding(nn.Module):
method __init__ (line 113) | def __init__(
method forward (line 138) | def forward(self, word_ids, char_ids):
class BertEmbedding (line 148) | class BertEmbedding(nn.Module):
method __init__ (line 149) | def __init__(self, text_agnostic=False):
method forward (line 162) | def forward(self, word_ids):
class PositionalEmbedding (line 167) | class PositionalEmbedding(nn.Module):
method __init__ (line 170) | def __init__(self, num_embeddings, embedding_dim):
method forward (line 174) | def forward(self, inputs):
class VisualProjection (line 182) | class VisualProjection(nn.Module):
method __init__ (line 183) | def __init__(self, visual_dim, dim, drop_rate=0.0):
method forward (line 195) | def forward(self, visual_features):
class DepthwiseSeparableConvBlock (line 202) | class DepthwiseSeparableConvBlock(nn.Module):
method __init__ (line 203) | def __init__(self, dim, kernel_size, drop_rate, num_layers=4):
method forward (line 233) | def forward(self, x):
class MultiHeadAttentionBlock (line 245) | class MultiHeadAttentionBlock(nn.Module):
method __init__ (line 246) | def __init__(self, dim, num_heads, drop_rate):
method transpose_for_scores (line 271) | def transpose_for_scores(self, x):
method combine_last_two_dim (line 277) | def combine_last_two_dim(x):
method forward (line 282) | def forward(self, x, mask=None):
class FeatureEncoder (line 318) | class FeatureEncoder(nn.Module):
method __init__ (line 319) | def __init__(
method forward (line 333) | def forward(self, x, mask=None):
class CQAttention (line 342) | class CQAttention(nn.Module):
method __init__ (line 343) | def __init__(self, dim, drop_rate=0.0):
method forward (line 359) | def forward(self, context, query, c_mask, q_mask):
method trilinear_attention (line 380) | def trilinear_attention(self, context, query):
class WeightedPool (line 396) | class WeightedPool(nn.Module):
method __init__ (line 397) | def __init__(self, dim):
method forward (line 403) | def forward(self, x, mask):
class CQConcatenate (line 414) | class CQConcatenate(nn.Module):
method __init__ (line 415) | def __init__(self, dim):
method forward (line 422) | def forward(self, context, query, q_mask):
class HighLightLayer (line 435) | class HighLightLayer(nn.Module):
method __init__ (line 436) | def __init__(self, dim):
method forward (line 442) | def forward(self, x, mask):
method compute_loss (line 452) | def compute_loss(scores, labels, mask, epsilon=1e-12):
class DynamicRNN (line 462) | class DynamicRNN(nn.Module):
method __init__ (line 463) | def __init__(self, dim):
method forward (line 474) | def forward(self, x, mask):
class ConditionedPredictor (line 482) | class ConditionedPredictor(nn.Module):
method __init__ (line 483) | def __init__(self, dim, num_heads, max_pos_len, drop_rate=0.0, predict...
method forward (line 530) | def forward(self, x, mask):
method extract_index (line 548) | def extract_index(start_logits, end_logits):
method compute_cross_entropy_loss (line 567) | def compute_cross_entropy_loss(start_logits, end_logits, start_labels,...
FILE: NLQ/VSLNet/options.py
function read_command_line (line 11) | def read_command_line():
FILE: NLQ/VSLNet/utils/data_gen.py
class EpisodicNLQProcessor (line 22) | class EpisodicNLQProcessor:
method __init__ (line 23) | def __init__(self, remove_empty_queries_from: Optional[List[str]]):
method reset_idx_counter (line 32) | def reset_idx_counter(self):
method process_data_tan (line 35) | def process_data_tan(self, data, scope):
method convert (line 81) | def convert(self, data_dir, predictor=None):
function load_glove (line 98) | def load_glove(glove_path):
function filter_glove_embedding (line 110) | def filter_glove_embedding(word_dict, glove_path):
function vocab_emb_gen (line 125) | def vocab_emb_gen(datasets, emb_path):
function dataset_gen (line 151) | def dataset_gen(
function dataset_gen_bert (line 230) | def dataset_gen_bert(data, vfeat_lens, tokenizer, max_pos_len, scope, nu...
function gen_or_load_dataset (line 290) | def gen_or_load_dataset(configs):
FILE: NLQ/VSLNet/utils/data_loader.py
class Dataset (line 8) | class Dataset(torch.utils.data.Dataset):
method __init__ (line 9) | def __init__(self, dataset, video_features):
method __getitem__ (line 14) | def __getitem__(self, index):
method __len__ (line 22) | def __len__(self):
function train_collate_fn (line 26) | def train_collate_fn(data):
function test_collate_fn (line 80) | def test_collate_fn(data):
function get_train_loader (line 114) | def get_train_loader(dataset, video_features, configs):
function get_test_loader (line 127) | def get_test_loader(dataset, video_features, configs):
FILE: NLQ/VSLNet/utils/data_util.py
function load_json (line 11) | def load_json(filename):
function save_json (line 17) | def save_json(data, filename, save_pretty=False, sort_keys=False):
function load_lines (line 25) | def load_lines(filename):
function save_lines (line 30) | def save_lines(data, filename):
function load_pickle (line 35) | def load_pickle(filename):
function save_pickle (line 41) | def save_pickle(data, filename):
function load_video_features (line 46) | def load_video_features(root, max_position_length):
function visual_feature_sampling (line 66) | def visual_feature_sampling(visual_feature, max_num_clips):
function compute_overlap (line 84) | def compute_overlap(pred, gt):
function time_to_index (line 106) | def time_to_index(start_time, end_time, num_units, duration):
function index_to_time (line 126) | def index_to_time(start_index, end_index, num_units, duration):
function pad_seq (line 136) | def pad_seq(sequences, pad_tok=None, max_length=None):
function pad_char_seq (line 149) | def pad_char_seq(sequences, max_length=None, max_length_2=None):
function pad_video_seq (line 166) | def pad_video_seq(sequences, max_length=None):
FILE: NLQ/VSLNet/utils/evaluate_ego4d_nlq.py
function display_results (line 17) | def display_results(results, mIoU, thresholds, topK, title=None):
function compute_IoU (line 35) | def compute_IoU(pred, gt):
function evaluate_nlq_performance (line 59) | def evaluate_nlq_performance(
function main (line 109) | def main(args):
FILE: NLQ/VSLNet/utils/prepare_ego4d_dataset.py
function get_nearest_frame (line 24) | def get_nearest_frame(time, floor_or_ceil=None):
function process_question (line 29) | def process_question(question):
function reformat_data (line 34) | def reformat_data(split_data, test_split=False):
function convert_ego4d_dataset (line 87) | def convert_ego4d_dataset(args):
FILE: NLQ/VSLNet/utils/runner_utils.py
function set_th_config (line 17) | def set_th_config(seed):
function filter_checkpoints (line 27) | def filter_checkpoints(model_dir, suffix="t7", max_to_keep=5):
function get_last_checkpoint (line 41) | def get_last_checkpoint(model_dir, suffix="t7"):
function convert_length_to_mask (line 53) | def convert_length_to_mask(lengths):
function eval_test (line 62) | def eval_test(
FILE: VQ2D/convert_videos_to_clips.py
function read_video_md (line 17) | def read_video_md(path):
function get_mp4_writer (line 23) | def get_mp4_writer(path, fps, output_params=["-crf", "22"]):
function frames_to_select (line 37) | def frames_to_select(
function approx_equal_durations (line 55) | def approx_equal_durations(dur1, dur2, thresh=1.0):
function extract_clip (line 59) | def extract_clip(video_path, clip_data, save_root, downscale_height=700):
function batchify_video_uids (line 122) | def batchify_video_uids(video_uids, batch_size):
function video_to_clip_fn (line 134) | def video_to_clip_fn(inputs):
function main (line 153) | def main(args):
FILE: VQ2D/convert_videos_to_images.py
function read_video_md (line 16) | def read_video_md(path):
function save_video_frames (line 22) | def save_video_frames(path, frames_to_save):
function frames_to_select (line 42) | def frames_to_select(
function extract_clip_frame_nos (line 60) | def extract_clip_frame_nos(video_md, clip_annotation, save_root):
function batchify_video_uids (line 95) | def batchify_video_uids(video_uids, batch_size):
function video_to_image_fn (line 107) | def video_to_image_fn(inputs):
function main (line 135) | def main(args):
FILE: VQ2D/detectron2_extensions/config/defaults.py
function get_cfg (line 69) | def get_cfg() -> CfgNode:
FILE: VQ2D/detectron2_extensions/layers/wrappers.py
function binary_cross_entropy (line 7) | def binary_cross_entropy(
function binary_cross_entropy_with_logits (line 29) | def binary_cross_entropy_with_logits(
function kl_div (line 53) | def kl_div(
function triplet_margin (line 79) | def triplet_margin(
FILE: VQ2D/detectron2_extensions/modeling/meta_arch/siam_rcnn.py
class SiameseRCNN (line 17) | class SiameseRCNN(GeneralizedRCNN):
method __init__ (line 28) | def __init__(self, *args, **kwargs) -> None:
method from_config (line 32) | def from_config(cls, cfg: CfgNode) -> Dict[str, Any]:
method forward (line 46) | def forward(self, batched_inputs: Tuple[Dict[str, torch.Tensor]]) -> D...
method inference (line 101) | def inference(
method preprocess_image (line 146) | def preprocess_image(
FILE: VQ2D/detectron2_extensions/modeling/roi_heads/set_heads.py
class DotProduct (line 28) | class DotProduct(nn.Module):
method forward (line 29) | def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor:
function conv3x3 (line 47) | def conv3x3(in_channels: int, out_channels: int, stride: int = 1) -> nn....
class ResidualBlock (line 53) | class ResidualBlock(nn.Module):
method __init__ (line 54) | def __init__(
method forward (line 67) | def forward(self, x: torch.Tensor) -> torch.Tensor:
class InducedSetAttentionBlock (line 84) | class InducedSetAttentionBlock(nn.Module):
method __init__ (line 85) | def __init__(
method forward (line 126) | def forward(self, query: torch.Tensor, points: torch.Tensor) -> torch....
class MultiheadAttentionBlock (line 154) | class MultiheadAttentionBlock(nn.Module):
method __init__ (line 155) | def __init__(
method forward (line 179) | def forward(self, query: torch.Tensor, points: torch.Tensor) -> torch....
class RefSetTransHead (line 193) | class RefSetTransHead(nn.Module):
method __init__ (line 204) | def __init__(
method _create_projection_layers (line 331) | def _create_projection_layers(
method forward (line 367) | def forward(
method losses (line 457) | def losses(
method _losses (line 496) | def _losses(
method _losses_hnm (line 533) | def _losses_hnm(
method inference (line 566) | def inference(self, predictions: List[torch.Tensor], proposals: List[I...
class SetTransROIHeads (line 631) | class SetTransROIHeads(ROIHeads):
method __init__ (line 637) | def __init__(
method from_config (line 668) | def from_config(cls, cfg: CfgNode, input_shape: Dict[str, ShapeSpec]):
method _init_siamese_head (line 680) | def _init_siamese_head(
method forward (line 753) | def forward(
method _forward_siam (line 800) | def _forward_siam(
FILE: VQ2D/detectron2_extensions/modeling/roi_heads/siam_heads.py
class DotProduct (line 19) | class DotProduct(nn.Module):
method forward (line 20) | def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor:
function conv3x3 (line 38) | def conv3x3(in_channels: int, out_channels: int, stride: int = 1) -> nn....
class ResidualBlock (line 44) | class ResidualBlock(nn.Module):
method __init__ (line 45) | def __init__(
method forward (line 58) | def forward(self, x: torch.Tensor) -> torch.Tensor:
class SiameseHead (line 70) | class SiameseHead(nn.Module):
method __init__ (line 79) | def __init__(
method _create_projection_layers (line 129) | def _create_projection_layers(
method forward (line 165) | def forward(
method losses (line 205) | def losses(
method _losses (line 224) | def _losses(
method _losses_hnm (line 261) | def _losses_hnm(
method inference (line 294) | def inference(self, predictions: List[torch.Tensor], proposals: List[I...
class SiameseROIHeads (line 329) | class SiameseROIHeads(ROIHeads):
method __init__ (line 335) | def __init__(
method from_config (line 366) | def from_config(cls, cfg: CfgNode, input_shape: Dict[str, ShapeSpec]):
method _init_siamese_head (line 378) | def _init_siamese_head(
method forward (line 445) | def forward(
method _forward_siam (line 472) | def _forward_siam(
FILE: VQ2D/evaluate_vq.py
function validate_model_predictions (line 9) | def validate_model_predictions(model_predictions, test_annotations):
function evaluate (line 72) | def evaluate(gt_file, pred_file):
FILE: VQ2D/extract_vq_detection_scores.py
function extract_clip_bboxes_and_scores (line 29) | def extract_clip_bboxes_and_scores(
class Task (line 123) | class Task:
method __init__ (line 124) | def __init__(self, annots):
method run (line 132) | def run(self, predictor, cfg):
class WorkerWithDevice (line 168) | class WorkerWithDevice(mp.Process):
method __init__ (line 169) | def __init__(self, cfg, task_queue, results_queue, worker_id, device_id):
method work (line 175) | def work(self, task_queue, results_queue):
function extract_detection_scores (line 200) | def extract_detection_scores(annotations, cfg):
function convert_annotations_to_clipwise_list (line 241) | def convert_annotations_to_clipwise_list(annotations):
function main (line 274) | def main(cfg: DictConfig) -> None:
FILE: VQ2D/perform_vq_inference.py
function get_images_at_peak (line 33) | def get_images_at_peak(all_bboxes, all_scores, all_imgs, peak_idx, topk=5):
class Task (line 44) | class Task:
method __init__ (line 45) | def __init__(self, annots):
method run (line 57) | def run(self, similarity_net, tracker, cfg, device):
class WorkerWithDevice (line 251) | class WorkerWithDevice(mp.Process):
method __init__ (line 252) | def __init__(self, cfg, task_queue, results_queue, worker_id, device_id):
method work (line 258) | def work(self, task_queue, results_queue):
function perform_vq2d_inference (line 284) | def perform_vq2d_inference(annotations, cfg):
function convert_annotations_to_clipwise_list (line 329) | def convert_annotations_to_clipwise_list(annotations):
function format_predictions (line 361) | def format_predictions(annotations, predicted_rts):
function main (line 391) | def main(cfg: DictConfig) -> None:
FILE: VQ2D/process_vq_dataset.py
function get_dataset_uid (line 10) | def get_dataset_uid(split, idx):
function process_video_annot (line 14) | def process_video_annot(video_data, n_samples_so_far):
function process_data (line 43) | def process_data(args):
FILE: VQ2D/scripts/faster_evaluation/merge_results.py
function merge_results (line 18) | def merge_results(args):
FILE: VQ2D/tools/test_model_loading.py
function test_model_loading (line 5) | def test_model_loading(config_path, checkpoint_path):
FILE: VQ2D/tools/validate_extracted_clips.py
function approx_equal_durations (line 13) | def approx_equal_durations(dur1, dur2, thresh=1.0):
function check_clip (line 17) | def check_clip(clip_uid, clip_annotations, clip_metadata, args):
function main (line 55) | def main(args):
FILE: VQ2D/train_siam_rcnn.py
function get_evaluator (line 39) | def get_evaluator(cfg, dataset_name, output_folder=None):
function do_test (line 52) | def do_test(cfg, model):
function set_model_to_train (line 69) | def set_model_to_train(model):
function do_train (line 85) | def do_train(cfg, model, resume=False):
function setup (line 174) | def setup(args):
function build_siam_model (line 186) | def build_siam_model(cfg):
function register_all_datasets (line 197) | def register_all_datasets(cfg):
function main (line 227) | def main(args):
FILE: VQ2D/validate_challenge_predictions.py
function validate_model_predictions (line 6) | def validate_model_predictions(model_predictions, test_annotations):
FILE: VQ2D/visualizations/visualize_annotations.py
function _get_box (line 11) | def _get_box(annot_box):
function extract_crop_from_image (line 16) | def extract_crop_from_image(image, box):
function draw_box_on_image (line 37) | def draw_box_on_image(image, box, color=(255, 0, 0), thickness=5):
function draw_border (line 43) | def draw_border(image, color=(255, 0, 0), thickness=5):
function scale_im_height (line 49) | def scale_im_height(image, H):
function visualize_query_set (line 55) | def visualize_query_set(video_reader, qset, save_height=640):
function get_mp4_writer (line 95) | def get_mp4_writer(path, fps, output_params=["-crf", "31"]):
function save_video (line 108) | def save_video(frames, path, fps):
function get_text_box (line 115) | def get_text_box(text, shape, fg_color=(255, 255, 255), bg_color=(0, 0, ...
function visualize_annotation (line 134) | def visualize_annotation(clip_path, rt_save_path, crop_save_path, qset):
FILE: VQ2D/vq2d/baselines/dataloader.py
function build_augmentation (line 16) | def build_augmentation(
class VisualQueryDatasetMapper (line 70) | class VisualQueryDatasetMapper:
method __init__ (line 86) | def __init__(
method from_config (line 121) | def from_config(cls, cfg, is_train: bool = True):
method __call__ (line 137) | def __call__(self, dataset_dict):
FILE: VQ2D/vq2d/baselines/dataset.py
function _register_visual_query_dataset (line 23) | def _register_visual_query_dataset(
function register_visual_query_datasets (line 44) | def register_visual_query_datasets(
function visual_query_dataset (line 77) | def visual_query_dataset(
FILE: VQ2D/vq2d/baselines/feature_retrieval.py
function perform_retrieval (line 13) | def perform_retrieval(
FILE: VQ2D/vq2d/baselines/predictor.py
class SiamPredictor (line 8) | class SiamPredictor(DefaultPredictor):
method __call__ (line 9) | def __call__(
FILE: VQ2D/vq2d/baselines/utils.py
function convert_image_np2torch (line 19) | def convert_image_np2torch(image: np.ndarray) -> torch.Tensor:
function convert_annot_to_bbox (line 31) | def convert_annot_to_bbox(annot: Dict[str, Any]) -> BBox:
function get_clip_name_from_clip_uid (line 41) | def get_clip_name_from_clip_uid(clip_uid: str) -> str:
function get_image_name_from_clip_uid (line 45) | def get_image_name_from_clip_uid(clip_uid: str, fno: int) -> str:
function create_similarity_network (line 49) | def create_similarity_network(pretrained: bool = True) -> nn.Sequential:
function extract_window_with_context (line 67) | def extract_window_with_context(
function get_bbox_from_data (line 115) | def get_bbox_from_data(data: Dict[str, Any]) -> List[Numeric]:
function get_image_id_from_data (line 119) | def get_image_id_from_data(data: Dict[str, Any], data_ix: int, rno: int)...
function resize_if_needed (line 128) | def resize_if_needed(image: np.uint8, shape: Tuple[int, int]) -> np.ndar...
FILE: VQ2D/vq2d/metrics/metrics.py
function compute_visual_query_metrics (line 21) | def compute_visual_query_metrics(
FILE: VQ2D/vq2d/metrics/spatio_temporal_metrics.py
class SpatioTemporalDetection (line 16) | class SpatioTemporalDetection(object):
method __init__ (line 22) | def __init__(
method _import_ground_truth (line 33) | def _import_ground_truth(self, ground_truth: List[ResponseTrack]) -> p...
method _import_prediction (line 48) | def _import_prediction(self, prediction: List[List[ResponseTrack]]) ->...
method evaluate (line 67) | def evaluate(self) -> None:
method get_metrics (line 78) | def get_metrics(self) -> Dict[str, float]:
function compute_average_precision_detection (line 93) | def compute_average_precision_detection(
FILE: VQ2D/vq2d/metrics/success_metrics.py
class SuccessMetrics (line 15) | class SuccessMetrics(object):
method __init__ (line 21) | def __init__(
method _import_ground_truth (line 39) | def _import_ground_truth(self, ground_truth: List[ResponseTrack]) -> p...
method _import_prediction (line 54) | def _import_prediction(self, prediction: List[List[ResponseTrack]]) ->...
method evaluate (line 73) | def evaluate(self) -> None:
method get_metrics (line 83) | def get_metrics(self) -> Dict[str, float]:
function compute_success (line 99) | def compute_success(
FILE: VQ2D/vq2d/metrics/temporal_metrics.py
class TemporalDetection (line 16) | class TemporalDetection(object):
method __init__ (line 22) | def __init__(
method _import_ground_truth (line 33) | def _import_ground_truth(self, ground_truth: List[ResponseTrack]) -> p...
method _import_prediction (line 50) | def _import_prediction(self, prediction: List[List[ResponseTrack]]) ->...
method evaluate (line 71) | def evaluate(self) -> None:
method get_metrics (line 82) | def get_metrics(self) -> Dict[str, float]:
function compute_average_precision_detection (line 99) | def compute_average_precision_detection(
FILE: VQ2D/vq2d/metrics/tracking_metrics.py
class TrackingMetrics (line 15) | class TrackingMetrics(object):
method __init__ (line 21) | def __init__(
method _import_ground_truth (line 39) | def _import_ground_truth(self, ground_truth: List[ResponseTrack]) -> p...
method _import_prediction (line 54) | def _import_prediction(self, prediction: List[List[ResponseTrack]]) ->...
method evaluate (line 73) | def evaluate(self) -> None:
method get_metrics (line 85) | def get_metrics(self) -> Dict[str, float]:
function compute_tracking_metrics (line 103) | def compute_tracking_metrics(
FILE: VQ2D/vq2d/metrics/utils.py
function segment_iou (line 11) | def segment_iou(
function interpolated_prec_rec (line 43) | def interpolated_prec_rec(prec: np.ndarray, rec: np.ndarray) -> np.ndarray:
function spatial_iou (line 54) | def spatial_iou(box1: BBox, box2: BBox) -> float:
function spatial_intersection (line 72) | def spatial_intersection(box1: BBox, box2: BBox) -> float:
function spatio_temporal_iou_response_track (line 85) | def spatio_temporal_iou_response_track(rt1: ResponseTrack, rt2: Response...
function spatio_temporal_iou (line 111) | def spatio_temporal_iou(
function spatial_matches_response_track (line 128) | def spatial_matches_response_track(
function spatio_temporal_iou_matches (line 149) | def spatio_temporal_iou_matches(
FILE: VQ2D/vq2d/stats.py
function barplot (line 10) | def barplot(
function hist (line 49) | def hist(
function get_video_coverage (line 95) | def get_video_coverage(
function compute_coverage_statistics (line 118) | def compute_coverage_statistics(
function compute_clip_statistics (line 145) | def compute_clip_statistics(video_annotations: List[Any]) -> Dict[str, i...
function compute_query_statistics (line 164) | def compute_query_statistics(video_annotations: List[Any]) -> Dict[str, ...
function compute_scenario_coverage_statistics (line 185) | def compute_scenario_coverage_statistics(
function compute_university_coverage_statistics (line 213) | def compute_university_coverage_statistics(
function compute_query_to_response_separation_statistics (line 236) | def compute_query_to_response_separation_statistics(
function compute_response_track_length_statistics (line 259) | def compute_response_track_length_statistics(
function compute_response_track_location_statistics (line 282) | def compute_response_track_location_statistics(
FILE: VQ2D/vq2d/structures.py
class BBox (line 4) | class BBox:
method __init__ (line 5) | def __init__(self, fno, x1, y1, x2, y2):
method area (line 12) | def area(self):
method __repr__ (line 15) | def __repr__(self):
method to_json (line 20) | def to_json(self):
method from_json (line 30) | def from_json(data):
class ResponseTrack (line 34) | class ResponseTrack:
method __init__ (line 35) | def __init__(self, bboxes: List[BBox], score: float = None):
method temporal_extent (line 46) | def temporal_extent(self):
method bboxes (line 50) | def bboxes(self):
method length (line 54) | def length(self):
method score (line 58) | def score(self):
method has_score (line 61) | def has_score(self):
method _check_empty (line 64) | def _check_empty(self, bboxes):
method _empty_init (line 67) | def _empty_init(self):
method _non_empty_init (line 73) | def _non_empty_init(self, bboxes):
method _check_contiguous (line 78) | def _check_contiguous(self):
method __repr__ (line 82) | def __repr__(self):
method volume (line 89) | def volume(self):
method to_json (line 95) | def to_json(self):
method from_json (line 105) | def from_json(data):
FILE: VQ2D/vq2d/tools/get_average_detector_flops.py
function setup_model (line 24) | def setup_model(args):
function process_annotations (line 36) | def process_annotations(annotations):
function get_visual_crop_image (line 67) | def get_visual_crop_image(reference, visual_crop, cfg):
function process_image (line 92) | def process_image(image, visual_crop, downscale_height=700):
function compute_average_flops (line 102) | def compute_average_flops(args):
FILE: VQ2D/vq2d/tracking/kys.py
class KYSTracker (line 13) | class KYSTracker(object):
method __init__ (line 14) | def __init__(self, model_path, device, lost_thresh=0.05):
method initialize_tracker (line 35) | def initialize_tracker(self, frame, box):
method _build_init_info (line 41) | def _build_init_info(self, box):
method update_state (line 55) | def update_state(self, frame):
method lost_track (line 61) | def lost_track(self):
class KYSRunner (line 65) | class KYSRunner(object):
method __init__ (line 66) | def __init__(self, cfg, device):
method __call__ (line 73) | def __call__(
function run_kys_tracker (line 87) | def run_kys_tracker(
FILE: VQ2D/vq2d/tracking/particle_filter.py
function observe (line 19) | def observe(x, image, template_size):
function deep_metric (line 68) | def deep_metric(x, y):
function metric (line 80) | def metric(x, y, sigma=1):
class PFRunner (line 92) | class PFRunner(object):
method __init__ (line 93) | def __init__(self, cfg, device):
method __call__ (line 97) | def __call__(
function run_pfilter (line 120) | def run_pfilter(
FILE: VQ2D/vq2d/tracking/pfilter.py
function make_heat_adjusted (line 12) | def make_heat_adjusted(sigma):
function systematic_resample (line 21) | def systematic_resample(weights):
function stratified_resample (line 27) | def stratified_resample(weights):
function residual_resample (line 33) | def residual_resample(weights):
function create_indices (line 52) | def create_indices(positions, weights):
function multinomial_resample (line 70) | def multinomial_resample(weights):
function resample (line 75) | def resample(weights):
function squared_error (line 91) | def squared_error(x, y, sigma=1):
function gaussian_noise (line 114) | def gaussian_noise(x, sigmas):
function cauchy_noise (line 127) | def cauchy_noise(x, sigmas):
function independent_sample (line 140) | def independent_sample(fn_list):
function convert_image_np2torch (line 160) | def convert_image_np2torch(image, size=256):
class ParticleFilter (line 189) | class ParticleFilter(object):
method __init__ (line 226) | def __init__(
method init_filter (line 310) | def init_filter(self, mask=None):
method update (line 327) | def update(self, observed=None, **kwargs):
method viz_particles (line 481) | def viz_particles(self, observed):
FILE: VQ2D/vq2d/tracking/tracker.py
class Tracker (line 5) | class Tracker:
method __init__ (line 14) | def __init__(self, cfg, device):
method initialize_runner (line 23) | def initialize_runner(self):
method __call__ (line 29) | def __call__(self, *args, **kwargs):
FILE: VQ2D/vq2d/tracking/utils.py
function draw_bbox (line 7) | def draw_bbox(image: np.ndarray, bbox: BBox) -> np.ndarray:
FILE: VQ3D/VQ3D/API/get_query_3d_ground_truth.py
class VisualQuery3DGroundTruth (line 14) | class VisualQuery3DGroundTruth():
method __init__ (line 15) | def __init__(self):
method load_pose (line 18) | def load_pose(self, dirname: str):
method load_3d_annotation (line 45) | def load_3d_annotation(self, data: Dict):
method create_traj_azure (line 52) | def create_traj_azure(self, output_traj, K, Ci_T_G=None):
method read_pfm (line 80) | def read_pfm(self, path):
FILE: VQ3D/VQ3D/API/metrics.py
class distL2 (line 8) | class distL2():
method compute (line 9) | def compute(self, v1:np.ndarray, v2:np.ndarray) -> float:
class angularError (line 13) | class angularError():
method compute (line 14) | def compute(self, v1:np.ndarray, v2:np.ndarray) -> float:
class accuracy (line 25) | class accuracy():
method compute (line 26) | def compute(self, t:np.ndarray, box1:BoundingBox, box2:BoundingBox) ->...
FILE: VQ3D/VQ3D/scripts/prepare_ground_truth_for_queries.py
function parse_VQ2D_queries (line 14) | def parse_VQ2D_queries(filename: str) -> Dict:
FILE: VQ3D/VQ3D/scripts/run.py
function scale_im_height (line 15) | def scale_im_height(image, H):
function _get_box (line 20) | def _get_box(annot_box):
function parse_VQ2D_queries (line 24) | def parse_VQ2D_queries(filename: str) -> Dict:
function parse_VQ2D_predictions (line 49) | def parse_VQ2D_predictions(filename: str) -> Dict:
function parse_VQ2D_mapper (line 59) | def parse_VQ2D_mapper(filename: str) -> Dict:
FILE: VQ3D/annotation_API/API/bounding_box.py
class BoundingBox (line 6) | class BoundingBox():
method __init__ (line 7) | def __init__(self, data: Any = None, scale=1.0):
method load (line 12) | def load(self, data: Any ) -> None:
method volume (line 39) | def volume(self) -> float:
method get_transformation_matrix (line 42) | def get_transformation_matrix(self) -> np.ndarray:
method build_box (line 80) | def build_box(self) -> List[np.array]:
method save_off (line 106) | def save_off(self, filename: str) -> None:
FILE: VQ3D/camera_pose_estimation/Camera_Intrinsics_API/extract_frames.py
class FrameExtractor (line 4) | class FrameExtractor():
method extract (line 5) | def extract(self, filename: str, output_dir: str) -> None:
FILE: VQ3D/camera_pose_estimation/Camera_Intrinsics_API/get_camera_intrinsics.py
class CameraIntrinsicsHelper (line 11) | class CameraIntrinsicsHelper():
method __init__ (line 12) | def __init__(self):
method is_blurry (line 17) | def is_blurry(self, image: np.ndarray) -> bool:
method select_good_frames_indices (line 26) | def select_good_frames_indices(self, images_files: List, images_dir: s...
method select_good_frames (line 103) | def select_good_frames(self, images_dir:str) -> None:
method run_colmap (line 124) | def run_colmap(self) -> List:
method parse_colmap_intrinsics (line 155) | def parse_colmap_intrinsics(self, camera_txt_filename: str)-> Dict:
method get_camera_intrinsics (line 176) | def get_camera_intrinsics(self, images_dir: str) -> Tuple:
FILE: VQ3D/camera_pose_estimation/SuperGlueMatching/extract_visual_database.py
function convert_2d_to_3d (line 25) | def convert_2d_to_3d(u, v, z, K):
class MatterportDataset (line 35) | class MatterportDataset(Dataset):
method __init__ (line 36) | def __init__(self, dataset_name='walterlib', resize=[640, 480], root=''):
method __getitem__ (line 45) | def __getitem__(self, index):
method __len__ (line 55) | def __len__(self):
class AzureKinect (line 59) | class AzureKinect(Dataset):
method __init__ (line 60) | def __init__(self, dataset_name='walter_basement_03', resize=[640, 480...
method __getitem__ (line 71) | def __getitem__(self, index):
method __len__ (line 81) | def __len__(self):
function PnP (line 85) | def PnP(x1s, f3ds, x2s, m1_ids, K1, K2, DATABASE_IMAGE_FOLDER):
class AzureKinectPosePnP (line 194) | class AzureKinectPosePnP(Dataset):
method __init__ (line 195) | def __init__(self, match_database='', database_image_folder='', image_...
method __getitem__ (line 204) | def __getitem__(self, index):
method __len__ (line 262) | def __len__(self):
FILE: VQ3D/camera_pose_estimation/SuperGlueMatching/models/matching.py
class Matching (line 49) | class Matching(torch.nn.Module):
method __init__ (line 51) | def __init__(self, config={}):
method forward (line 56) | def forward(self, data):
FILE: VQ3D/camera_pose_estimation/SuperGlueMatching/models/superglue.py
function MLP (line 49) | def MLP(channels: list, do_bn=True):
function normalize_keypoints (line 63) | def normalize_keypoints(kpts, image_shape):
class KeypointEncoder (line 73) | class KeypointEncoder(nn.Module):
method __init__ (line 75) | def __init__(self, feature_dim, layers):
method forward (line 80) | def forward(self, kpts, scores):
function attention (line 85) | def attention(query, key, value):
class MultiHeadedAttention (line 92) | class MultiHeadedAttention(nn.Module):
method __init__ (line 94) | def __init__(self, num_heads: int, d_model: int):
method forward (line 102) | def forward(self, query, key, value):
class AttentionalPropagation (line 110) | class AttentionalPropagation(nn.Module):
method __init__ (line 111) | def __init__(self, feature_dim: int, num_heads: int):
method forward (line 117) | def forward(self, x, source):
class AttentionalGNN (line 122) | class AttentionalGNN(nn.Module):
method __init__ (line 123) | def __init__(self, feature_dim: int, layer_names: list):
method forward (line 130) | def forward(self, desc0, desc1):
function log_sinkhorn_iterations (line 141) | def log_sinkhorn_iterations(Z, log_mu, log_nu, iters: int):
function log_optimal_transport (line 150) | def log_optimal_transport(scores, alpha, iters: int):
function arange_like (line 173) | def arange_like(x, dim: int):
class SuperGlue (line 177) | class SuperGlue(nn.Module):
method __init__ (line 204) | def __init__(self, config):
method forward (line 228) | def forward(self, data):
FILE: VQ3D/camera_pose_estimation/SuperGlueMatching/models/superpoint.py
function simple_nms (line 47) | def simple_nms(scores, nms_radius: int):
function remove_borders (line 65) | def remove_borders(keypoints, scores, border: int, height: int, width: i...
function top_k_keypoints (line 73) | def top_k_keypoints(keypoints, scores, k: int):
function sample_descriptors (line 80) | def sample_descriptors(keypoints, descriptors, s: int = 8):
class SuperPoint (line 95) | class SuperPoint(nn.Module):
method __init__ (line 111) | def __init__(self, config):
method forward (line 145) | def forward(self, data):
FILE: VQ3D/camera_pose_estimation/SuperGlueMatching/models/utils.py
class AverageTimer (line 57) | class AverageTimer:
method __init__ (line 60) | def __init__(self, smoothing=0.3, newline=False):
method reset (line 67) | def reset(self):
method update (line 74) | def update(self, name='default'):
method print (line 83) | def print(self, text='Timer'):
class VideoStreamer (line 99) | class VideoStreamer:
method __init__ (line 106) | def __init__(self, basedir, resize, skip, image_glob, max_length=10000...
method load_image (line 159) | def load_image(self, impath):
method next_frame (line 175) | def next_frame(self):
method start_ip_camera_thread (line 213) | def start_ip_camera_thread(self):
method update_ip_camera (line 220) | def update_ip_camera(self):
method cleanup (line 235) | def cleanup(self):
function process_resize (line 240) | def process_resize(w, h, resize):
function frame2tensor (line 259) | def frame2tensor(frame, device):
function read_image (line 263) | def read_image(path, device, resize, rotation, resize_float):
function estimate_pose (line 288) | def estimate_pose(kpts0, kpts1, K0, K1, thresh, conf=0.99999):
function rotate_intrinsics (line 315) | def rotate_intrinsics(K, image_shape, rot):
function rotate_pose_inplane (line 335) | def rotate_pose_inplane(i_T_w, rot):
function scale_intrinsics (line 346) | def scale_intrinsics(K, scales):
function to_homogeneous (line 351) | def to_homogeneous(points):
function compute_epipolar_error (line 355) | def compute_epipolar_error(kpts0, kpts1, T_0to1, K0, K1):
function angle_error_mat (line 377) | def angle_error_mat(R1, R2):
function angle_error_vec (line 383) | def angle_error_vec(v1, v2):
function compute_pose_error (line 388) | def compute_pose_error(T_0to1, R, t):
function pose_auc (line 397) | def pose_auc(errors, thresholds):
function plot_image_pair (line 415) | def plot_image_pair(imgs, dpi=100, size=6, pad=.5):
function plot_keypoints (line 429) | def plot_keypoints(kpts0, kpts1, color='w', ps=2):
function plot_matches (line 435) | def plot_matches(kpts0, kpts1, color, lw=1.5, ps=4):
function make_matching_plot (line 452) | def make_matching_plot(image0, image1, kpts0, kpts1, mkpts0, mkpts1,
function make_matching_plot_fast (line 484) | def make_matching_plot_fast(image0, image1, kpts0, kpts1, mkpts0,
function error_colormap (line 553) | def error_colormap(x):
FILE: VQ3D/camera_pose_estimation/Visualization/visualize_render_images.py
function create_traj_azure (line 19) | def create_traj_azure(output_traj, K, Ci_T_G=None):
function custom_draw_geometry_with_camera_trajectory (line 46) | def custom_draw_geometry_with_camera_trajectory(pcd, output_path='',
FILE: VQ3D/camera_pose_estimation/extract_frames_all_clips.py
function frame_extractor (line 75) | def frame_extractor(inputs):
FILE: VQ3D/camera_pose_estimation/extract_frames_for_colmap.py
function extract_frames_for_sfm (line 12) | def extract_frames_for_sfm(inputs):
FILE: VQ3D/camera_pose_estimation/get_intrinsics_for_all_clips.py
function run_automatic_reconstruction (line 34) | def run_automatic_reconstruction(inputs):
FILE: VQ3D/camera_pose_estimation/get_intrinsics_for_all_clips_greedy.py
function run_automatic_reconstruction (line 47) | def run_automatic_reconstruction(inputs):
FILE: VQ3D/camera_pose_estimation/pnp_api.py
function PnP (line 12) | def PnP(x1s, f3ds, x2s, m1_ids, K1, K2, thres=1e-2):
class PosePnP_points_accumulation (line 87) | class PosePnP_points_accumulation(Dataset):
method __init__ (line 88) | def __init__(self, match_database='', img_desc_folder='', image_list=N...
method __getitem__ (line 97) | def __getitem__(self, index):
method __len__ (line 162) | def __len__(self):
FILE: VQ3D/camera_pose_estimation/reconstruction.py
function FindMissingReconstruction (line 10) | def FindMissingReconstruction(X, track_i):
function Triangulation_nl (line 31) | def Triangulation_nl(X, P1, P2, x1, x2):
function Triangulation_RANSAC (line 89) | def Triangulation_RANSAC(uv1, P, ransac_n_iter=30, threshold=1e-2):
function TriangulationD_RANSAC (line 127) | def TriangulationD_RANSAC(Ci_f, P, ransac_n_iter=10, threshold=1e-2):
function Triangulation_LS (line 161) | def Triangulation_LS(uv1_inlier, P_inlier):
function ComputePointJacobian (line 170) | def ComputePointJacobian(X, p):
function SetupBundleAdjustment (line 205) | def SetupBundleAdjustment(P, X, track, fixed_poses=None):
function MeasureReprojection (line 299) | def MeasureReprojection(z, b, n_cameras, n_points, camera_index, point_i...
function UpdatePosePoint (line 341) | def UpdatePosePoint(z0, z, n_cameras, n_points):
function RunBundleAdjustment (line 381) | def RunBundleAdjustment(P, X, track, fixed_poses=None):
FILE: VQ3D/camera_pose_estimation/run_all_data.py
function load_vq3d_annotation (line 12) | def load_vq3d_annotation(filename):
FILE: VQ3D/camera_pose_estimation/sfm_api_wsuperglue.py
function convert_2d_to_3d (line 16) | def convert_2d_to_3d(u, v, z, K):
function PnP (line 25) | def PnP(x1s, x2s, m1_ids, K1, K2, DATABASE_IMAGE_FOLDER):
function valid_2Dfeatures (line 111) | def valid_2Dfeatures(x):
function valid_3Dfeatures (line 115) | def valid_3Dfeatures(X):
function SetupPnPNL (line 119) | def SetupPnPNL(P, X, track):
function MeasureReprojectionSinglePose (line 164) | def MeasureReprojectionSinglePose(z, b, point_index):
function UpdatePose (line 187) | def UpdatePose(z):
function RunPnPNL (line 200) | def RunPnPNL(P, X, track):
function triangulate_with_track_feat (line 266) | def triangulate_with_track_feat(inputs):
function refine_poses (line 286) | def refine_poses(inputs):
FILE: VQ3D/camera_pose_estimation/superglue_tracker.py
function SuperGlueMatcher (line 23) | def SuperGlueMatcher(model,
function get_tracks_parallel (line 204) | def get_tracks_parallel(inputs):
function fetch_graph (line 268) | def fetch_graph(g, i, f_idx, start_i):
FILE: VQ3D/camera_pose_estimation/utils.py
function Vec2Skew (line 14) | def Vec2Skew(v):
function Rotation2Quaternion (line 23) | def Rotation2Quaternion(R):
function Quaternion2Rotation (line 62) | def Quaternion2Rotation(q):
function WritePosesToPly (line 96) | def WritePosesToPly(P, output_path):
function skewsymm (line 114) | def skewsymm(x):
function VisualizeTriangulationMultiPoses (line 126) | def VisualizeTriangulationMultiPoses(X, uv1, P, Im, K):
function VisualizeMatches (line 149) | def VisualizeMatches(im1_file, kp1, im2_file, kp2):
function VisualizeTrack (line 163) | def VisualizeTrack(track, Im_input, K):
function VisualizeReprojectionError (line 190) | def VisualizeReprojectionError(P, X, track, K, Im):
function VisualizeBadPoseImage (line 207) | def VisualizeBadPoseImage(Im):
function convert_2d_to_3d (line 225) | def convert_2d_to_3d(u, v, z, K):
class MatterportDataset (line 235) | class MatterportDataset(Dataset):
method __init__ (line 236) | def __init__(self, dataset_folder='walterlib', resize=[640, 480]):
method __getitem__ (line 245) | def __getitem__(self, index):
method __len__ (line 255) | def __len__(self):
class AzureKinect (line 259) | class AzureKinect(Dataset):
method __init__ (line 260) | def __init__(self, dataset_folder='walter_basement_03', resize=[640, 4...
method __getitem__ (line 271) | def __getitem__(self, index):
method __len__ (line 282) | def __len__(self):
FILE: VQ3D/depth_estimation/prepare_inputs_for_depth_estimation.py
function parse_VQ2D_queries (line 14) | def parse_VQ2D_queries(filename: str) -> Dict:
function parse_VQ3D_queries (line 38) | def parse_VQ3D_queries(filename: str) -> List:
function parse_VQ2D_predictions (line 47) | def parse_VQ2D_predictions(filename: str) -> Dict:
function parse_VQ2D_mapper (line 74) | def parse_VQ2D_mapper(filename: str) -> Dict:
Copy disabled (too large)
Download .json
Condensed preview — 305 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (25,557K chars).
[
{
"path": ".gitignore",
"chars": 26,
"preview": "/MQ/runs/\nEgoTracks/run.sh"
},
{
"path": ".gitmodules",
"chars": 112,
"preview": "[submodule \"VQ3D/depth_estimation/DPT\"]\n\tpath = VQ3D/depth_estimation/DPT\n\turl = git@github.com:isl-org/DPT.git\n"
},
{
"path": ".pre-commit-config.yaml",
"chars": 405,
"preview": "default_language_version:\n python: python3\n\nrepos:\n- repo: https://github.com/pre-commit/pre-commit-hooks\n rev: "
},
{
"path": "EgoTracks/README.md",
"chars": 2828,
"preview": "# EgoTracks \n\n## Install packages\n```sh\npip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101"
},
{
"path": "EgoTracks/configs/STARK/stark_st_R101.yaml",
"chars": 1795,
"preview": "_BASE_: \"./stark_st_base.yaml\"\nMODEL_TYPE: STARK\nDATA:\n SAMPLER_MODE: trident_pro\n MAX_SAMPLE_INTERVAL:\n - 200\n MEAN"
},
{
"path": "EgoTracks/configs/STARK/stark_st_base.yaml",
"chars": 2038,
"preview": "MODEL_TYPE: STARK\nDATA:\n SAMPLER_MODE: trident_pro\n MAX_SAMPLE_INTERVAL:\n - 200\n MEAN:\n - 0.485\n - 0.456\n - 0.406"
},
{
"path": "EgoTracks/setup.py",
"chars": 624,
"preview": "#!/usr/bin/env python3\n\nfrom setuptools import find_packages, setup\n\nPROJECTS = {\n \"tracking.tools\": \"tools\",\n}\n\nsetu"
},
{
"path": "EgoTracks/test.sh",
"chars": 240,
"preview": "python tools/train_net.py \\\n--num-gpus 8 --eval-only \\\nMODEL.WEIGHTS /checkpoint/haotang/experiments/EgoTracks/STARKST_e"
},
{
"path": "EgoTracks/tools/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tools/eval_datasets/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tools/eval_datasets/build.py",
"chars": 388,
"preview": "from .eval_ego4d_lt_tracking import (\n eval_ego4d_lt_tracking,\n)\n\nEVAL_FUNCTIONS = {\n \"EGO4DLTTracking\": eval_ego4"
},
{
"path": "EgoTracks/tools/eval_datasets/eval_ego4d_lt_tracking.py",
"chars": 5612,
"preview": "import logging\nimport os\nimport pickle as pkl\nimport time\n\nimport detectron2.utils.comm as comm\nimport numpy as np\nimpor"
},
{
"path": "EgoTracks/tools/eval_net.py",
"chars": 2305,
"preview": "# (c) Facebook, Inc. and its affiliates. Confidential and proprietary.\n\nimport argparse\nimport logging\n\nimport detectron"
},
{
"path": "EgoTracks/tools/preprocess/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tools/preprocess/extract_ego4d_clip_frames.py",
"chars": 4048,
"preview": "\"\"\"\nExtract frames from clip\n\"\"\"\n\nimport csv\nimport functools\nimport json\nimport multiprocessing\nimport os\nimport time\nf"
},
{
"path": "EgoTracks/tools/train_net.py",
"chars": 7955,
"preview": "\"\"\"\nTrain_net for Tracking\n\nRun this command to test locally:\n>>> buck run @mode/inplace @mode/dev-nosan //vision/fair_a"
},
{
"path": "EgoTracks/tools/trainers/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tools/trainers/base_trainer.py",
"chars": 11476,
"preview": "import logging\nimport os\nimport traceback\n\nimport detectron2.utils.comm as comm\nimport torch\nfrom torch.nn import BCEWit"
},
{
"path": "EgoTracks/tools/trainers/starkst_trainer.py",
"chars": 10684,
"preview": "import logging\nimport time\nimport traceback\nfrom collections import OrderedDict\n\nimport torch\nfrom detectron2.utils impo"
},
{
"path": "EgoTracks/tracking/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/config/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/config/config.py",
"chars": 166,
"preview": "from .stark_defaults import cfg as default_stark_config\n\n\nCONFIGS = {\"STARK\": default_stark_config}\n\n\ndef get_cfg(model_"
},
{
"path": "EgoTracks/tracking/config/stark_defaults.py",
"chars": 4923,
"preview": "from fvcore.common.config import CfgNode\n\n\n\"\"\"\nAdd default config for STARK-ST Stage2.\n\"\"\"\ncfg = CfgNode()\ncfg.OUTPUT_DI"
},
{
"path": "EgoTracks/tracking/dataset/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/dataset/base_image_dataset.py",
"chars": 2393,
"preview": "import torch.utils.data\nfrom tracking.utils.utils import opencv_loader\n\n\nclass BaseImageDataset(torch.utils.data.Dataset"
},
{
"path": "EgoTracks/tracking/dataset/base_video_dataset.py",
"chars": 2994,
"preview": "import torch.utils.data\nfrom tracking.utils.utils import opencv_loader\n\n\nclass BaseVideoDataset(torch.utils.data.Dataset"
},
{
"path": "EgoTracks/tracking/dataset/build.py",
"chars": 8239,
"preview": "import os\nfrom typing import List\n\nimport tracking.dataset.transforms as tfm\nfrom torch.utils.data.distributed import Di"
},
{
"path": "EgoTracks/tracking/dataset/data_specs/README.md",
"chars": 844,
"preview": "# README\n\n## Description for different text files\nGOT10K\n- got10k_train_full_split.txt: the complete GOT-10K training se"
},
{
"path": "EgoTracks/tracking/dataset/data_specs/got10k_train_full_split.txt",
"chars": 45565,
"preview": "3784\n8998\n3906\n1631\n8277\n8358\n2338\n7938\n2988\n8302\n2662\n2663\n2825\n7447\n4781\n2218\n6348\n5860\n4517\n2819\n8075\n5391\n116\n3606\n7"
},
{
"path": "EgoTracks/tracking/dataset/data_specs/got10k_train_split.txt",
"chars": 38711,
"preview": "3784\n8998\n3906\n1631\n8277\n8358\n2338\n7938\n2988\n8302\n2662\n2663\n2825\n7447\n4781\n2218\n6348\n5860\n4517\n2819\n8075\n5391\n116\n3606\n7"
},
{
"path": "EgoTracks/tracking/dataset/data_specs/got10k_val_split.txt",
"chars": 6854,
"preview": "1349\n5651\n5878\n562\n2202\n8904\n765\n1501\n8654\n2975\n2689\n3680\n5180\n1900\n7707\n4723\n8912\n4029\n3579\n869\n2888\n8657\n6599\n741\n4288"
},
{
"path": "EgoTracks/tracking/dataset/data_specs/got10k_vot_exclude.txt",
"chars": 21000,
"preview": "GOT-10k_Train_000004\nGOT-10k_Train_000013\nGOT-10k_Train_000015\nGOT-10k_Train_000020\nGOT-10k_Train_000024\nGOT-10k_Train_0"
},
{
"path": "EgoTracks/tracking/dataset/data_specs/got10k_vot_train_split.txt",
"chars": 34581,
"preview": "3784\n8998\n1631\n8277\n8358\n2338\n2988\n8302\n2662\n2663\n2825\n7447\n4781\n2218\n5860\n2819\n8075\n5391\n116\n3606\n7976\n7941\n1024\n4519\n1"
},
{
"path": "EgoTracks/tracking/dataset/data_specs/got10k_vot_val_split.txt",
"chars": 6109,
"preview": "1349\n5878\n562\n2202\n8904\n1501\n8654\n2975\n2689\n3680\n5180\n1900\n7707\n4723\n8912\n4029\n3579\n869\n2888\n8657\n6599\n741\n4288\n2244\n735"
},
{
"path": "EgoTracks/tracking/dataset/data_specs/lasot_train_split.txt",
"chars": 10637,
"preview": "airplane-10\nairplane-11\nairplane-12\nairplane-14\nairplane-16\nairplane-17\nairplane-18\nairplane-19\nairplane-2\nairplane-20\na"
},
{
"path": "EgoTracks/tracking/dataset/data_specs/trackingnet_classmap.txt",
"chars": 621892,
"preview": "Nf1aqv5Fg5o_0\tairplane\nAAB6lO-XiKE_0\tperson\nAACM71csS-Q_0\tperson\nAACM71csS-Q_1\tperson\nAARNQeeGCeM_1\tperson\nAARldOxX9Qc_0"
},
{
"path": "EgoTracks/tracking/dataset/dataloader.py",
"chars": 9865,
"preview": "import collections\nimport collections.abc\nimport importlib\n\nimport torch\nimport torch.utils.data.dataloader\nfrom trackin"
},
{
"path": "EgoTracks/tracking/dataset/eval_datasets/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/dataset/eval_datasets/base_dataset.py",
"chars": 7691,
"preview": "from collections import OrderedDict\nfrom typing import Dict\n\nimport numpy as np\nfrom PIL import Image\n\n# from tracking.u"
},
{
"path": "EgoTracks/tracking/dataset/eval_datasets/ego4d_lt_tracking_dataset.py",
"chars": 6432,
"preview": "import json\nimport logging\nimport os\nimport time\nfrom typing import Dict\n\nimport torch\nfrom tqdm import tqdm\nfrom tracki"
},
{
"path": "EgoTracks/tracking/dataset/processing/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/dataset/processing/base_processing.py",
"chars": 1684,
"preview": "import torchvision.transforms as transforms\nfrom tracking.utils.tensor import TensorDict\n\n\nclass BaseProcessing:\n \"\"\""
},
{
"path": "EgoTracks/tracking/dataset/processing/processing_utils.py",
"chars": 6862,
"preview": "import math\n\nimport cv2 as cv\nimport numpy as np\nimport torch\nimport torch.nn.functional as F\n\n\"\"\"modified from the orig"
},
{
"path": "EgoTracks/tracking/dataset/processing/stark_processing.py",
"chars": 7545,
"preview": "import torch\nimport torch.nn.functional as F\nimport tracking.dataset.processing.processing_utils as prutils\nfrom trackin"
},
{
"path": "EgoTracks/tracking/dataset/trackingdataset.py",
"chars": 19544,
"preview": "import random\n\nimport torch.utils.data\nfrom tracking.utils.tensor import TensorDict\n\n\ndef no_processing(data):\n retur"
},
{
"path": "EgoTracks/tracking/dataset/train_datasets/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/dataset/train_datasets/coco_seq.py",
"chars": 6834,
"preview": "import os\nimport os.path\nimport random\nfrom collections import OrderedDict\n\nimport torch\nfrom pycocotools.coco import CO"
},
{
"path": "EgoTracks/tracking/dataset/train_datasets/ego4d_lt_tracking.py",
"chars": 2618,
"preview": "import os\nimport os.path\nimport random\nfrom itertools import groupby\n\nimport torch\nfrom tracking.dataset.base_video_data"
},
{
"path": "EgoTracks/tracking/dataset/train_datasets/ego4d_vq.py",
"chars": 3656,
"preview": "import os\nimport os.path\nimport random\nfrom itertools import groupby\n\nimport torch\nfrom tracking.dataset.base_video_data"
},
{
"path": "EgoTracks/tracking/dataset/train_datasets/got10k.py",
"chars": 8954,
"preview": "import csv\nimport json\nimport os\nimport os.path\nimport random\nfrom collections import OrderedDict\n\nimport numpy as np\nim"
},
{
"path": "EgoTracks/tracking/dataset/train_datasets/lasot.py",
"chars": 6774,
"preview": "import csv\nimport os\nimport os.path\nimport random\nfrom collections import OrderedDict\n\nimport numpy as np\nimport pandas\n"
},
{
"path": "EgoTracks/tracking/dataset/train_datasets/tracking_net.py",
"chars": 6697,
"preview": "import json\nimport os\nimport os.path\nimport random\nfrom collections import OrderedDict\n\nimport numpy as np\nimport pandas"
},
{
"path": "EgoTracks/tracking/dataset/transforms.py",
"chars": 12535,
"preview": "import random\n\nimport cv2 as cv\nimport numpy as np\nimport torch\nimport torchvision.transforms.functional as tvisf\n\n\nclas"
},
{
"path": "EgoTracks/tracking/metrics/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/metrics/miou.py",
"chars": 489,
"preview": "import numpy as np\nfrom tracking.utils.bbox_helper import IoU, xywh_2_rect\n\n\ndef compute_overlaps(y_pred, y_gt):\n ove"
},
{
"path": "EgoTracks/tracking/models/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/models/multiple_object_tracker.py",
"chars": 627,
"preview": "from abc import abstractmethod\n\nfrom tracking.models.tracker import Tracker\n\n\nclass MultipleObjectTracker(Tracker):\n "
},
{
"path": "EgoTracks/tracking/models/single_object_tracker.py",
"chars": 9848,
"preview": "import logging\nimport time\nfrom abc import abstractmethod\nfrom typing import Dict\n\nimport av\nimport torch\nfrom tqdm impo"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/models/stark_tracker/backbone.py",
"chars": 6196,
"preview": "\"\"\"\nBackbone modules.\n\"\"\"\nimport os\nfrom typing import Dict, List\n\nimport torch\nimport torch.nn.functional as F\nfrom tor"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/config/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/models/stark_tracker/config/stark_st2/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/models/stark_tracker/config/stark_st2/config.py",
"chars": 8606,
"preview": "from dataclasses import dataclass, field\nfrom typing import List\n\nimport yaml\nfrom fvcore.common.config import CfgNode\n\n"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/head.py",
"chars": 9917,
"preview": "import torch\nimport torch.nn.functional as F\nfrom torch import nn\nfrom tracking.models.stark_tracker.backbone import Fro"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/params.py",
"chars": 1688,
"preview": "from typing import Dict\n\nfrom tracking.models.stark_tracker.config.stark_st2.config import cfg\n\n\nclass TrackerParams:\n "
},
{
"path": "EgoTracks/tracking/models/stark_tracker/position_encoding.py",
"chars": 4545,
"preview": "\"\"\"\nVarious positional encodings for the transformer.\n\"\"\"\nimport math\n\nimport torch\nfrom torch import nn\nfrom tracking.m"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/resnet.py",
"chars": 12325,
"preview": "import torch\nimport torch.nn as nn\n\nfrom torch.hub import load_state_dict_from_url\nfrom torchvision.models.resnet import"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/stark_s.py",
"chars": 6034,
"preview": "\"\"\"\nBasic STARK Model (Spatial-only).\n\"\"\"\nfrom typing import List\n\nimport torch\nfrom torch import nn\nfrom tracking.model"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/stark_st.py",
"chars": 3553,
"preview": "\"\"\"\nSTARK-ST Model (Spatio-Temporal).\n\"\"\"\nfrom tracking.models.stark_tracker.backbone import build_backbone\nfrom trackin"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/stark_tracker.py",
"chars": 17753,
"preview": "import logging\nimport math\nimport time\nfrom copy import deepcopy\nfrom typing import Dict, List\n\nimport cv2\nimport numpy "
},
{
"path": "EgoTracks/tracking/models/stark_tracker/transformer.py",
"chars": 19974,
"preview": "\"\"\"\nSTARK Transformer class.\n\nCopy-paste from torch.nn.Transformer with modifications:\n * positional encodings are pa"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/utils/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/models/stark_tracker/utils/box_ops.py",
"chars": 2547,
"preview": "from typing import List\n\nimport torch\nfrom torchvision.ops.boxes import box_area\n\n\ndef box_cxcywh_to_xyxy(x):\n x_c, y"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/utils/merge.py",
"chars": 1261,
"preview": "import torch\n\n\ndef merge_template_search(inp_list, return_search=False, return_template=False):\n \"\"\"NOTICE: search re"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/utils/misc.py",
"chars": 2933,
"preview": "# lib.utils.misc\n\nimport logging\nimport time\nfrom typing import Optional\n\nimport numpy as np\nimport torch\nimport torch.d"
},
{
"path": "EgoTracks/tracking/models/stark_tracker/utils/preprocessing_utils.py",
"chars": 3267,
"preview": "import logging\nimport time\n\nimport cv2\n\nimport numpy as np\nimport torch.nn.functional as F\n\n\"\"\"modified from the origina"
},
{
"path": "EgoTracks/tracking/models/template.py",
"chars": 7350,
"preview": "#!/usr/bin/env python3\n\n\"\"\"\nObject registration classes and helper functions. The following classes\nprovide functionalit"
},
{
"path": "EgoTracks/tracking/models/tracker.py",
"chars": 10129,
"preview": "from abc import abstractmethod\nfrom typing import Dict, Union\n\nimport av\nimport numpy as np\nimport torch\nfrom torch impo"
},
{
"path": "EgoTracks/tracking/solver/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/solver/build.py",
"chars": 4501,
"preview": "import logging\n\nimport detectron2.utils.comm as comm\nimport torch\n\n\ndef build_optimizer_scheduler(cfg, model):\n optim"
},
{
"path": "EgoTracks/tracking/utils/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "EgoTracks/tracking/utils/bbox_helper.py",
"chars": 6022,
"preview": "# --------------------------------------------------------\n# SiamMask\n# Licensed under The MIT License\n# Written by Qian"
},
{
"path": "EgoTracks/tracking/utils/defaults.py",
"chars": 2892,
"preview": "import argparse\nimport os\nimport sys\n\nfrom tracking.config.config import get_cfg\n\n\ndef setup(args):\n \"\"\"\n Create c"
},
{
"path": "EgoTracks/tracking/utils/env.py",
"chars": 248,
"preview": "from iopath.common.file_io import PathManagerFactory\n\n_ENV_SETUP_DONE = False\n\npathmgr = PathManagerFactory.get(key=\"tra"
},
{
"path": "EgoTracks/tracking/utils/load_helper.py",
"chars": 2822,
"preview": "import logging\n\nimport torch\n\nlogger = logging.getLogger(\"global\")\n\n\ndef check_keys(model, pretrained_state_dict):\n c"
},
{
"path": "EgoTracks/tracking/utils/load_text.py",
"chars": 1669,
"preview": "import numpy as np\nimport pandas as pd\n\nfrom .env import pathmgr\n\n\ndef load_text_numpy(path, delimiter, dtype):\n if i"
},
{
"path": "EgoTracks/tracking/utils/meters.py",
"chars": 1220,
"preview": "import logging\n\n\nclass AverageMeter(object):\n \"\"\"Computes and stores the average and current value\"\"\"\n\n def __init"
},
{
"path": "EgoTracks/tracking/utils/multiprocessing.py",
"chars": 3132,
"preview": "#!/usr/bin/env python3\n# (c) Facebook, Inc. and its affiliates. Confidential and proprietary.\n\n# adopted from PySlowFast"
},
{
"path": "EgoTracks/tracking/utils/tensor.py",
"chars": 8505,
"preview": "import copy\nimport functools\nfrom collections import OrderedDict\n\nimport torch\n\n\nclass TensorDict(OrderedDict):\n \"\"\"C"
},
{
"path": "EgoTracks/tracking/utils/types.py",
"chars": 3144,
"preview": "from dataclasses import dataclass, field\nfrom typing import Dict\n\nfrom tracking.models.stark_tracker.config.stark_st2.co"
},
{
"path": "EgoTracks/tracking/utils/utils.py",
"chars": 2061,
"preview": "import logging\nfrom typing import List\n\nimport av\nimport cv2\nfrom tracking.utils.env import pathmgr\n\n\ndef opencv_loader("
},
{
"path": "EgoTracks/train.sh",
"chars": 426,
"preview": "python tools/train_net.py \\\n--num-gpus 1 \\\nMODEL.WEIGHTS /checkpoint/haotang/experiments/EgoTracks/STARKST_ep0001.pth.ta"
},
{
"path": "LICENSE",
"chars": 1090,
"preview": "MIT License\n\nCopyright (c) 2021 EGO4D Dataset and Benchmark Suite\n\nPermission is hereby granted, free of charge, to any "
},
{
"path": "MQ/Convert_annotation.py",
"chars": 3625,
"preview": "import json\nimport torch\nimport os\n\n####################################################################################"
},
{
"path": "MQ/Eval.py",
"chars": 1844,
"preview": "from Evaluation.ego4d.generate_detection import gen_detection_multicore as gen_det_ego4d\nfrom Evaluation.ego4d.get_detec"
},
{
"path": "MQ/Evaluation/ego4d/eval_action_detection.py",
"chars": 6868,
"preview": "import logging\nimport numpy as np\nimport pandas as pd\n\nfrom utils import interpolated_prec_rec\nfrom utils import segment"
},
{
"path": "MQ/Evaluation/ego4d/eval_detection.py",
"chars": 11841,
"preview": "# This code is originally from the official ActivityNet repo\n# https://github.com/activitynet/ActivityNet\n# Small modifi"
},
{
"path": "MQ/Evaluation/ego4d/generate_detection.py",
"chars": 3994,
"preview": "\nimport numpy as np\nimport pandas as pd\nimport json\nimport os\nfrom joblib import Parallel, delayed\n\n\ndef IOU(s1, e1, s2,"
},
{
"path": "MQ/Evaluation/ego4d/generate_retrieval.py",
"chars": 4345,
"preview": "\nimport numpy as np\nimport pandas as pd\nimport json\nimport os\nfrom joblib import Parallel, delayed\n\ndef IOU(s1, e1, s2, "
},
{
"path": "MQ/Evaluation/ego4d/get_detect_performance.py",
"chars": 891,
"preview": "\nimport os\nfrom .eval_detection import ANETdetection\n\ndef run_evaluation(ground_truth_filename, prediction_filename,\n "
},
{
"path": "MQ/Evaluation/ego4d/get_retrieval_performance.py",
"chars": 5708,
"preview": "\nimport numpy as np\nimport os\nimport json\nclass Moment_Retrieval(object):\n GROUND_TRUTH_FIELDS = ['database']\n PRE"
},
{
"path": "MQ/Evaluation/utils.py",
"chars": 2675,
"preview": "import json\nimport urllib.request as request\n\nimport numpy as np\n\nAPI = 'http://ec2-52-11-11-89.us-west-2.compute.amazon"
},
{
"path": "MQ/Infer.py",
"chars": 5770,
"preview": "import sys\nsys.dont_write_bytecode = True\nimport torch\nimport torch.nn.parallel\nfrom Utils.dataset import VideoDataSet\nf"
},
{
"path": "MQ/Merge_detection_retrieval.py",
"chars": 696,
"preview": "import json\nimport Utils.opts as opts\nimport os\n\nopt = opts.parse_opt()\nopt = vars(opt)\nresult_det = os.path.join(opt['o"
},
{
"path": "MQ/Models/ActionGenerator.py",
"chars": 2690,
"preview": "\nimport torch\nfrom .BoxCoder import BoxCoder\nimport torch.nn.functional as F\n\nclass Pred_loc_cls(object):\n def __init"
},
{
"path": "MQ/Models/AnchorGenerator.py",
"chars": 2106,
"preview": "\nimport torch\nimport torch.nn as nn\nimport math\n\nclass AnchorGenerator(nn.Module):\n def __init__(self, opt):\n "
},
{
"path": "MQ/Models/BoundaryAdjust.py",
"chars": 4415,
"preview": "import torch\nimport torch.nn as nn\nfrom .Loss import Loss_loc_cls\n\n\nclass BoundaryAdjust(nn.Module):\n\n def __init__(s"
},
{
"path": "MQ/Models/BoxCoder.py",
"chars": 3116,
"preview": "\nimport torch\nimport math\n\nclass BoxCoder(object):\n\n def __init__(self, opt):\n self.cfg = opt\n\n def encode("
},
{
"path": "MQ/Models/GCNs.py",
"chars": 4862,
"preview": "\nimport torch\nimport torch.nn as nn\n\n\n# dynamic graph from knn\ndef knn(x, num_frms, opt, y=None, k=10):\n bs, _, lengt"
},
{
"path": "MQ/Models/Head.py",
"chars": 2160,
"preview": "import torch.nn as nn\nimport torch.nn.functional as F\n\n\nclass Head(nn.Module):\n def __init__(self, opt):\n supe"
},
{
"path": "MQ/Models/Loss.py",
"chars": 7188,
"preview": "\nimport torch\nimport torch.nn.functional as F\nfrom .matcher import Matcher\n\nfrom .BoxCoder import BoxCoder\n\n\nclass Loss"
},
{
"path": "MQ/Models/VSGN.py",
"chars": 4257,
"preview": "# -*- coding: utf-8 -*-\nimport torch.nn as nn\nfrom .XGPN import XGPN\nimport torch.nn.functional as F\nfrom .Head import H"
},
{
"path": "MQ/Models/XGPN.py",
"chars": 3628,
"preview": "\nimport torch.nn as nn\n# from Utils.Sync_batchnorm.batchnorm import SynchronizedBatchNorm1d\nfrom .GCNs import xGN\n\n\n\ncla"
},
{
"path": "MQ/Models/matcher.py",
"chars": 4168,
"preview": "import torch\n\n\nclass Matcher(object):\n \"\"\"\n This class assigns to each predicted \"element\" (e.g., a box) a ground-"
},
{
"path": "MQ/README.md",
"chars": 1991,
"preview": "\n## Environment Installation\nCreate a conda environment and install required packages from scratch following the steps b"
},
{
"path": "MQ/Train.py",
"chars": 4930,
"preview": "import sys\nsys.dont_write_bytecode = True\nimport os\nimport torch\nimport torch.nn.parallel\nimport torch.optim as optim\nim"
},
{
"path": "MQ/Utils/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "MQ/Utils/dataset.py",
"chars": 7892,
"preview": "# -*- coding: utf-8 -*-\nimport numpy as np\nimport pandas as pd\nimport pandas\nimport numpy\nimport json\nimport torch.utils"
},
{
"path": "MQ/Utils/opts.py",
"chars": 5371,
"preview": "import argparse\n\ndef parse_opt():\n\n parser = argparse.ArgumentParser()\n parser.add_argument(\n '--dataset',\n"
},
{
"path": "NLQ/2D-TAN/CODE_OF_CONDUCT.md",
"chars": 453,
"preview": "# Microsoft Open Source Code of Conduct\r\n\r\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://"
},
{
"path": "NLQ/2D-TAN/CONTRIBUTING.md",
"chars": 916,
"preview": "\n# Contributing\n\nThis project welcomes contributions and suggestions. Most contributions require you to agree to a\nCont"
},
{
"path": "NLQ/2D-TAN/LICENSE",
"chars": 1267,
"preview": " 2D-TAN: Learning 2D Temporal Localization Networks for Moment Localization with Natural Language\r\n \r\n MIT License"
},
{
"path": "NLQ/2D-TAN/README.md",
"chars": 970,
"preview": "\n## Environment Installation\nPlease refer to README\\_2D-TAN.MD for the main environment.\n\nAfter that, please install tra"
},
{
"path": "NLQ/2D-TAN/README_2D-TAN.md",
"chars": 5074,
"preview": "# 2D-TAN\n\nwe are hiring talented interns: houwen.peng@microsoft.com\n\nIn this paper, we study the problem of mome"
},
{
"path": "NLQ/2D-TAN/SECURITY.md",
"chars": 2865,
"preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.3 BLOCK -->\r\n\r\n## Security\r\n\r\nMicrosoft takes the security of our software product"
},
{
"path": "NLQ/2D-TAN/data/ActivityNet/download.sh",
"chars": 747,
"preview": "wget http://ec2-52-11-11-89.us-west-2.compute.amazonaws.com/data/challenge16/features/c3d/activitynet_v1-3.part-00\nwget "
},
{
"path": "NLQ/2D-TAN/data/ActivityNet/test.json",
"chars": 1727037,
"preview": "{\"v_uqiMw7tQ1Cc\": {\"duration\": 55.15, \"timestamps\": [[0, 4.14], [4.14, 33.36], [33.36, 55.15]], \"sentences\": [\"Two men b"
},
{
"path": "NLQ/2D-TAN/data/ActivityNet/train.json",
"chars": 4041288,
"preview": "{\"v_QOlSCBRmfWY\": {\"duration\": 82.73, \"timestamps\": [[0.83, 19.86], [17.37, 60.81], [56.26, 79.42]], \"sentences\": [\"A yo"
},
{
"path": "NLQ/2D-TAN/data/ActivityNet/val.json",
"chars": 1910790,
"preview": "{\"v_uqiMw7tQ1Cc\": {\"duration\": 55.15, \"timestamps\": [[0.28, 55.15], [13.79, 54.32]], \"sentences\": [\"A weight lifting tut"
},
{
"path": "NLQ/2D-TAN/data/Charades-STA/Charades_v1_test.csv",
"chars": 1173833,
"preview": "id,subject,scene,quality,relevance,verified,script,objects,descriptions,actions,length\r\nYSKX3,CP6Y,Bedroom,5,6,Yes,A per"
},
{
"path": "NLQ/2D-TAN/data/Charades-STA/Charades_v1_train.csv",
"chars": 3622045,
"preview": "id,subject,scene,quality,relevance,verified,script,objects,descriptions,actions,length\r\n46GP8,HR43,Kitchen,6,7,Yes,A per"
},
{
"path": "NLQ/2D-TAN/data/Charades-STA/charades_sta_test.txt",
"chars": 186686,
"preview": "3MSZA 24.3 30.4##person turn a light on.\n3MSZA 24.3 30.4##person flipped the light switch near the door.\n3MSZA 24.3 30.4"
},
{
"path": "NLQ/2D-TAN/data/Charades-STA/charades_sta_train.txt",
"chars": 622491,
"preview": "AO8RW 0.0 6.9##a person is putting a book on a shelf.\nY6R7T 20.8 30.0##person begins to play on a phone.\nY6R7T 20.8 30.0"
},
{
"path": "NLQ/2D-TAN/data/Charades-STA/convert_vgg_features_to_hdf5.py",
"chars": 1015,
"preview": "import h5py\nimport os\nfrom tqdm import tqdm\nimport glob\nimport numpy as np\n\nif __name__ == '__main__':\n data_root = \""
},
{
"path": "NLQ/2D-TAN/data/Charades-STA/download.sh",
"chars": 159,
"preview": "wget http://ai2-website.s3.amazonaws.com/data/Charades_v1_features_rgb.tar.gz\ntar -xvzf Charades_v1_features_rgb.tar.gz\n"
},
{
"path": "NLQ/2D-TAN/data/Charades-STA/valid_videos.txt",
"chars": 40032,
"preview": "AO8RW\nY6R7T\nIGDIE\n7UPGT\nKBPDM\nIBIWF\n372CC\nN14BK\nNQT1S\nF1VEE\nYDWN5\nQRWQ3\nSFHHR\nHWYTN\nGG4UR\nXDVAY\nMLBTH\nIR31O\nKX8VW\nNVBBD\n"
},
{
"path": "NLQ/2D-TAN/data/Ego4D_clip/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "NLQ/2D-TAN/data/TACoS/merge_npys_to_hdf5.py",
"chars": 1357,
"preview": "import glob\nimport h5py\nimport numpy as np\nimport os\nimport tqdm\nimport json\n\ndef convert_tall_c3d_features(sampling_rat"
},
{
"path": "NLQ/2D-TAN/data/TACoS/test.json",
"chars": 246672,
"preview": "{\"s30-d52.avi\": {\"timestamps\": [[141, 354], [361, 732], [780, 986], [1024, 1153], [1270, 1612], [1623, 2729], [2782, 325"
},
{
"path": "NLQ/2D-TAN/data/TACoS/train.json",
"chars": 601727,
"preview": "{\"s17-d69.avi\": {\"timestamps\": [[224, 358], [418, 732], [841, 1014], [1016, 1210], [1237, 1428], [1480, 1904], [1921, 29"
},
{
"path": "NLQ/2D-TAN/data/TACoS/val.json",
"chars": 277474,
"preview": "{\"s34-d28.avi\": {\"timestamps\": [[201, 487], [501, 954], [1007, 1473], [1537, 2980], [3122, 3506], [3570, 3995], [4099, 6"
},
{
"path": "NLQ/2D-TAN/experiments/activitynet/2D-TAN-64x64-K9L4-conv.yaml",
"chars": 1369,
"preview": "WORKERS: 16\n\nMODEL_DIR: ./checkpoints\nRESULT_DIR: ./results\nLOG_DIR: ./log\nDATA_DIR: ./data/ActivityNet\n\nDATASET:\n NAME"
},
{
"path": "NLQ/2D-TAN/experiments/activitynet/2D-TAN-64x64-K9L4-pool.yaml",
"chars": 1348,
"preview": "WORKERS: 16\n\nMODEL_DIR: ./checkpoints\nRESULT_DIR: ./results\nLOG_DIR: ./log\nDATA_DIR: ./data/ActivityNet\n\nDATASET:\n NAME"
},
{
"path": "NLQ/2D-TAN/experiments/charades/2D-TAN-16x16-K5L8-conv.yaml",
"chars": 1430,
"preview": "WORKERS: 16\n\nMODEL_DIR: ./checkpoints\nRESULT_DIR: ./results\nLOG_DIR: ./log\nDATA_DIR: ./data/Charades-STA\n\nDATASET:\n NAM"
},
{
"path": "NLQ/2D-TAN/experiments/charades/2D-TAN-16x16-K5L8-pool.yaml",
"chars": 1411,
"preview": "WORKERS: 16\n\nMODEL_DIR: ./checkpoints\nRESULT_DIR: ./results\nLOG_DIR: ./log\nDATA_DIR: ./data/Charades-STA\n\nDATASET:\n NAM"
},
{
"path": "NLQ/2D-TAN/experiments/ego4d/2D-TAN-40x40-K9L4-pool-window-std-sf.yaml",
"chars": 1419,
"preview": "WORKERS: 0\nDEBUG: False\n\nMODEL_DIR: ./checkpoints\nRESULT_DIR: ./results\nLOG_DIR: ./log\nDATA_DIR: ./data/Ego4D_clip\n\nDATA"
},
{
"path": "NLQ/2D-TAN/experiments/tacos/2D-TAN-128x128-K5L8-conv.yaml",
"chars": 1425,
"preview": "WORKERS: 16\nMODEL_DIR: ./checkpoints\nRESULT_DIR: ./results\nLOG_DIR: ./log\nDATA_DIR: ./data/TACoS\n\nDATASET:\n NAME: TACoS"
},
{
"path": "NLQ/2D-TAN/experiments/tacos/2D-TAN-128x128-K5L8-pool.yaml",
"chars": 1406,
"preview": "WORKERS: 16\n\nMODEL_DIR: ./checkpoints\nRESULT_DIR: ./results\nLOG_DIR: ./log\nDATA_DIR: ./data/TACoS\n\nDATASET:\n NAME: TACo"
},
{
"path": "NLQ/2D-TAN/lib/core/config.py",
"chars": 2968,
"preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport yam"
},
{
"path": "NLQ/2D-TAN/lib/core/engine.py",
"chars": 2388,
"preview": "class Engine(object):\n def __init__(self):\n self.hooks = {}\n\n def hook(self, name, state):\n\n if name"
},
{
"path": "NLQ/2D-TAN/lib/core/eval.py",
"chars": 5877,
"preview": "import json\nimport argparse\nimport numpy as np\nimport pickle as pkl\nfrom terminaltables import AsciiTable\n\nfrom core.con"
},
{
"path": "NLQ/2D-TAN/lib/core/utils.py",
"chars": 1488,
"preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport os\n"
},
{
"path": "NLQ/2D-TAN/lib/datasets/__init__.py",
"chars": 2016,
"preview": "import torch\nimport torch.nn as nn\nfrom core.config import config\n\ndef collate_fn(batch):\n batch_word_vectors = [b['w"
},
{
"path": "NLQ/2D-TAN/lib/datasets/activitynet.py",
"chars": 5335,
"preview": "\"\"\" Dataset loader for the ActivityNet Captions dataset \"\"\"\nimport os\nimport json\n\nimport h5py\nimport torch\nfrom torch i"
},
{
"path": "NLQ/2D-TAN/lib/datasets/charades.py",
"chars": 5500,
"preview": "\"\"\" Dataset loader for the Charades-STA dataset \"\"\"\nimport os\nimport csv\n\nimport h5py\nimport numpy as np\nimport torch\nfr"
},
{
"path": "NLQ/2D-TAN/lib/datasets/ego4d_clip.py",
"chars": 13919,
"preview": "\"\"\" Dataset loader for the Ego4D language dataset \"\"\"\nimport os\nimport json\n\nimport h5py\nimport torch\nfrom torch import "
},
{
"path": "NLQ/2D-TAN/lib/datasets/tacos.py",
"chars": 3715,
"preview": "\"\"\" Dataset loader for the TACoS dataset \"\"\"\nimport os\nimport json\n\nimport h5py\nimport torch\nfrom torch import nn\nimport"
},
{
"path": "NLQ/2D-TAN/lib/models/__init__.py",
"chars": 26,
"preview": "from models.tan import TAN"
},
{
"path": "NLQ/2D-TAN/lib/models/frame_modules/__init__.py",
"chars": 51,
"preview": "from .frame_pool import FrameAvgPool, FrameMaxPool\n"
},
{
"path": "NLQ/2D-TAN/lib/models/frame_modules/frame_pool.py",
"chars": 953,
"preview": "import torch\nfrom torch import nn\n\nclass FrameAvgPool(nn.Module):\n\n def __init__(self, cfg):\n super(FrameAvgPo"
},
{
"path": "NLQ/2D-TAN/lib/models/fusion_modules/__init__.py",
"chars": 35,
"preview": "from .base_fusion import BaseFusion"
},
{
"path": "NLQ/2D-TAN/lib/models/fusion_modules/base_fusion.py",
"chars": 1262,
"preview": "import torch\nfrom torch import nn\nimport torch.nn.functional as F\n\nclass BaseFusion(nn.Module):\n\n def __init__(self, "
},
{
"path": "NLQ/2D-TAN/lib/models/loss.py",
"chars": 556,
"preview": "import torch\nimport torch.nn.functional as F\n\ndef bce_rescale_loss(scores, masks, targets, cfg):\n min_iou, max_iou, b"
},
{
"path": "NLQ/2D-TAN/lib/models/map_modules/__init__.py",
"chars": 814,
"preview": "import torch\nimport torch.nn.functional as F\ndef get_padded_mask_and_weight(*args):\n if len(args) == 2:\n mask,"
},
{
"path": "NLQ/2D-TAN/lib/models/map_modules/map_conv.py",
"chars": 1186,
"preview": "from torch import nn\nimport torch.nn.functional as F\nfrom models.map_modules import get_padded_mask_and_weight\n\nclass Ma"
},
{
"path": "NLQ/2D-TAN/lib/models/prop_modules/__init__.py",
"chars": 84,
"preview": "from .sparse import SparsePropMaxPool, SparsePropConv\nfrom .dense import PropMaxPool"
},
{
"path": "NLQ/2D-TAN/lib/models/prop_modules/dense.py",
"chars": 937,
"preview": "from torch import nn\n\nclass PropMaxPool(nn.Module):\n def __init__(self, cfg):\n super(PropMaxPool, self).__init"
},
{
"path": "NLQ/2D-TAN/lib/models/prop_modules/sparse.py",
"chars": 5735,
"preview": "from torch import nn\n\nclass SparsePropMaxPool(nn.Module):\n def __init__(self, cfg):\n super(SparsePropMaxPool, "
},
{
"path": "NLQ/2D-TAN/lib/models/tan.py",
"chars": 1659,
"preview": "from torch import nn\nfrom core.config import config\nimport models.frame_modules as frame_modules\nimport models.prop_modu"
},
{
"path": "NLQ/2D-TAN/moment_localization/_init_paths.py",
"chars": 620,
"preview": "# ------------------------------------------------------------------------------\n# Copyright (c) Microsoft\n# Licensed un"
},
{
"path": "NLQ/2D-TAN/moment_localization/test.py",
"chars": 11486,
"preview": "import os\nimport math\nimport json\nimport argparse\nimport pickle as pkl\n\nfrom tqdm import tqdm\nimport numpy as np\nimport "
},
{
"path": "NLQ/2D-TAN/moment_localization/train.py",
"chars": 13035,
"preview": "from __future__ import absolute_import\nfrom __future__ import division\nfrom __future__ import print_function\n\nimport _in"
},
{
"path": "NLQ/2D-TAN/notice.md",
"chars": 614,
"preview": "NOTICES AND INFORMATION\nDo Not Translate or Localize\n\nThis software incorporates material from third parties. Microsoft "
},
{
"path": "NLQ/VSLNet/.gitignore",
"chars": 2763,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
},
{
"path": "NLQ/VSLNet/README.md",
"chars": 6469,
"preview": "# Span-based Localizing Network for Natural Language Video Localization\n\nThis repository adapts the *PyTorch* implementa"
},
{
"path": "NLQ/VSLNet/main.py",
"chars": 10702,
"preview": "\"\"\"Main script to train/test models for Ego4D NLQ dataset.\n\"\"\"\nimport argparse\nimport os\n\nimport numpy as np\nimport opti"
},
{
"path": "NLQ/VSLNet/model/VSLNet.py",
"chars": 5271,
"preview": "\"\"\"VSLNet Baseline for Ego4D Episodic Memory -- Natural Language Queries.\n\"\"\"\nimport torch\nimport torch.nn as nn\nfrom tr"
},
{
"path": "NLQ/VSLNet/model/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "NLQ/VSLNet/model/layers.py",
"chars": 21177,
"preview": "\"\"\"\nLayers to construct the VSLNet model.\n\"\"\"\nimport math\n\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional"
},
{
"path": "NLQ/VSLNet/options.py",
"chars": 6220,
"preview": "#! /usr/bin/env python\n\"\"\"\nReading command line options.\n\"\"\"\n\nfrom __future__ import absolute_import, division, print_fu"
},
{
"path": "NLQ/VSLNet/requirements.txt",
"chars": 183,
"preview": "nltk==3.7\nnumpy==1.22.4\nPillow==9.1.1\nsubmitit==1.4.2\ntensorboard==2.9.0\nterminaltables==3.1.10\ntorch==1.11.0\ntorchaudio"
},
{
"path": "NLQ/VSLNet/run_train.sh",
"chars": 922,
"preview": "# To train the model.\nCUDA_VISIBLE_DEVICES=1 python main.py \\\n --task nlq_official_v1 \\\n --predictor bert \\\n --"
},
{
"path": "NLQ/VSLNet/utils/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "NLQ/VSLNet/utils/data_gen.py",
"chars": 14861,
"preview": "import codecs\nimport multiprocessing\nimport os\nfrom collections import Counter\nfrom typing import List, Optional\n\nimport"
},
{
"path": "NLQ/VSLNet/utils/data_loader.py",
"chars": 5654,
"preview": "import numpy as np\nimport torch\nimport torch.utils.data\n\nfrom utils.data_util import pad_seq, pad_char_seq, pad_video_se"
},
{
"path": "NLQ/VSLNet/utils/data_util.py",
"chars": 6428,
"preview": "import glob\nimport json\nimport os\nimport pickle\n\nimport numpy as np\nimport torch\nfrom tqdm import tqdm\n\n\ndef load_json(f"
},
{
"path": "NLQ/VSLNet/utils/evaluate_ego4d_nlq.py",
"chars": 5191,
"preview": "#! /usr/bin/env python\n\"\"\"\nScript to evaluate performance of any model for Ego4d Episodic Memory.\n\nNatural Language Quer"
},
{
"path": "NLQ/VSLNet/utils/prepare_ego4d_dataset.py",
"chars": 5928,
"preview": "#! /usr/bin/env python\n\"\"\"\nPrepare Ego4d episodic memory NLQ for model training.\n\"\"\"\n\nfrom __future__ import absolute_im"
},
{
"path": "NLQ/VSLNet/utils/runner_utils.py",
"chars": 5290,
"preview": "import copy\nimport glob\nimport json\nimport os\nimport random\n\nimport numpy as np\nimport torch\nimport torch.backends.cudnn"
},
{
"path": "README.md",
"chars": 3838,
"preview": "**[NEW!] Detailed examples for VQ Challenge submission available here: [VQ2D README](./VQ2D/README.md)**\n\n**[NEW!] 2022 "
},
{
"path": "VQ2D/.gitignore",
"chars": 2108,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
},
{
"path": "VQ2D/README.md",
"chars": 10973,
"preview": "# Visual Queries 2D localization\n\n## Installation instructions\nAlso see the [VQ2D Quickstart Colab Notebook](https://col"
},
{
"path": "VQ2D/configs/Base-RCNN-FPN.yaml",
"chars": 1487,
"preview": "MODEL:\n META_ARCHITECTURE: \"SiameseRCNN\"\n BACKBONE:\n NAME: \"build_resnet_fpn_backbone\"\n RESNETS:\n OUT_FEATURES:"
},
{
"path": "VQ2D/configs/siam_rcnn_2_gpus.yaml",
"chars": 780,
"preview": "_BASE_: \"Base-RCNN-FPN.yaml\"\n\nMODEL:\n #WEIGHTS: \"detectron2://ImageNetPretrained/MSRA/R-50.pkl\"\n MASK_ON: True\n RESNE"
},
{
"path": "VQ2D/configs/siam_rcnn_8_gpus.yaml",
"chars": 780,
"preview": "_BASE_: \"Base-RCNN-FPN.yaml\"\n\nMODEL:\n #WEIGHTS: \"detectron2://ImageNetPretrained/MSRA/R-50.pkl\"\n MASK_ON: True\n RESNE"
},
{
"path": "VQ2D/convert_videos_to_clips.py",
"chars": 6437,
"preview": "\"\"\"\nScript to extract clips from a video\n\"\"\"\nimport argparse\nimport json\nimport multiprocessing as mp\nimport os\nimport s"
},
{
"path": "VQ2D/convert_videos_to_images.py",
"chars": 5745,
"preview": "\"\"\"\nScript to extract images from a video\n\"\"\"\nimport argparse\nimport collections\nimport json\nimport multiprocessing as m"
},
{
"path": "VQ2D/detectron2_extensions/__init__.py",
"chars": 240,
"preview": "from .config import get_cfg\nfrom .layers import (\n kl_div,\n triplet_margin,\n binary_cross_entropy,\n binary_c"
},
{
"path": "VQ2D/detectron2_extensions/config/__init__.py",
"chars": 54,
"preview": "from .defaults import get_cfg\n\n\n__all__ = [\"get_cfg\"]\n"
},
{
"path": "VQ2D/detectron2_extensions/config/defaults.py",
"chars": 3004,
"preview": "from detectron2.config import CfgNode\nfrom detectron2.config import get_cfg as get_default_cfg\n\n\n# Extend detectron2 def"
}
]
// ... and 105 more files (download for full content)
About this extraction
This page contains the full source code of the EGO4D/episodic-memory GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 305 files (115.8 MB), approximately 6.3M tokens, and a symbol index with 1308 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.