Unofficial implementation of "TTNet: Real-time temporal and spatial video analysis of table tennis" (CVPR 2020)

Overview

TTNet-Pytorch

python-image pytorch-image

The implementation for the paper "TTNet: Real-time temporal and spatial video analysis of table tennis"
An introduction of the project could be found here (from the authors)


Demo

demo

1. Features

  • Ball detection global stage

  • Ball detection local stage (refinement)

  • Events Spotting detection (Bounce and Net hit)

  • Semantic Segmentation (Human, table, and scoreboard)

  • Multi-Task learning

  • Distributed Data Parallel Training

  • Enable/Disable modules in the TTNet model

  • Smooth labeling for event spotting

  • TensorboardX

  • (Update 2020.06.23): Training much faster, achieve > 120 FPS in the inference phase on a single GPU (GTX1080Ti).

  • (Update 2020.07.03): The implementation could achieve comparative results with the reported results in the TTNet paper.

  • (Update 2020.07.06): There are several limitations of the TTNet Paper (hints: Loss function, input size, and 2 more). I have implemented the task with a new approach and a new model. Now the new model could achieve:

    • > 130FPS inference,
    • ~0.96 IoU score for the segmentation task
    • < 4 pixels (in the full HD resolution (1920x1080)) of Root Mean Square Error (RMSE) for the ball detection task
    • ~97% percentage of correction events (PCE) and smooth PCE (SPCE).

2. Getting Started

Requirement

pip install -U -r requirement.txt

You will also need PyTurboJPEG:

$ sudo apt-get install libturbojpeg
...
$ pip install PyTurboJPEG
...

Other instruction for setting up virtual environments is here

2.1. Preparing the dataset

The instruction for the dataset preparation is here

2.2. Model & Input tensors

TTNet model architecture:

architecture

Input tensor structure

input tensor

2.3. How to run

2.3.1. Training

2.3.1.1. Single machine, single gpu
python main.py --gpu_idx 0

By default (as the above command), there are 4 modules in the TTNet model: global stage, local stage, event spotting, segmentation. You can disable one of the modules, except the global stage module.
An important note is if you disable the local stage module, the event spotting module will be also disabled.

  • You can disable the segmentation stage:
python main.py --gpu_idx 0 --no_seg
  • You can disable the event spotting module:
python main.py --gpu_idx 0 --no_event
  • You can disable the local stage, event spotting, segmentation modules:
python main.py --gpu_idx 0 --no_local --no_seg --no_event
2.3.1.2. Multi-processing Distributed Data Parallel Training

We should always use the nccl backend for multi-processing distributed training since it currently provides the best distributed training performance.

  • Single machine (node), multiple GPUs
python main.py --dist-url 'tcp://127.0.0.1:29500' --dist-backend 'nccl' --multiprocessing-distributed --world-size 1 --rank 0
  • Two machines (two nodes), multiple GPUs

First machine

python main.py --dist-url 'tcp://IP_OF_NODE1:FREEPORT' --dist-backend 'nccl' --multiprocessing-distributed --world-size 2 --rank 0

Second machine

python main.py --dist-url 'tcp://IP_OF_NODE2:FREEPORT' --dist-backend 'nccl' --multiprocessing-distributed --world-size 2 --rank 1

2.3.2. Training stratergy

The performance of the TTNet strongly depends on the global stage for ball detection. Hence, It's necessary to train the global ball stage module of the TTNet model first.

  • 1st phase: Train the global and segmentation modules with 30 epochs
./train_1st_phase.sh
  • 2nd phase: Load the trained weights to the global and the segmentation part, initialize the weight of the local stage with the weights of the global stage. In this phase, we train and just update weights of the local and the event modules. (30 epochs)
./train_2nd_phase.sh
  • 3rd phase: Fine tune all modules. Train the network with only 30 epochs
./train_3rd_phase.sh

2.3.3. Visualizing training progress

The Tensorboard was used to save loss values on the training set and the validation set. Execute the below command on the working terminal:

    cd logs/<task directory>/tensorboard/
    tensorboard --logdir=./

Then open the web browser and go to: http://localhost:6006/

2.3.4. Evaluation

The thresholds of the segmentation and event spotting tasks could be set in test.sh bash shell scripts.

./test_3rd_phase.sh

2.3.5. Demo:

Run a demonstration with an input video:

./demo.sh

Contact

If you think this work is useful, please give me a star! If you find any errors or have any suggestions, please contact me. Thank you!

Email: [email protected]

Citation

@article{TTNet,
  author = {Roman Voeikov, Nikolay Falaleev, Ruslan Baikulov},
  title = {TTNet: Real-time temporal and spatial video analysis of table tennis},
  year = {2020},
  conference = {CVPR 2020},
}

Usage

usage: main.py [-h] [--seed SEED] [--saved_fn FN] [-a ARCH] [--dropout_p P]
               [--multitask_learning] [--no_local] [--no_event] [--no_seg]
               [--pretrained_path PATH] [--overwrite_global_2_local]
               [--no-val] [--no-test] [--val-size VAL_SIZE]
               [--smooth-labelling] [--num_samples NUM_SAMPLES]
               [--num_workers NUM_WORKERS] [--batch_size BATCH_SIZE]
               [--print_freq N] [--checkpoint_freq N] [--sigma SIGMA]
               [--thresh_ball_pos_mask THRESH] [--start_epoch N]
               [--num_epochs N] [--lr LR] [--minimum_lr MIN_LR] [--momentum M]
               [-wd WD] [--optimizer_type OPTIMIZER] [--lr_type SCHEDULER]
               [--lr_factor FACTOR] [--lr_step_size STEP_SIZE]
               [--lr_patience N] [--earlystop_patience N] [--freeze_global]
               [--freeze_local] [--freeze_event] [--freeze_seg]
               [--bce_weight BCE_WEIGHT] [--global_weight GLOBAL_WEIGHT]
               [--local_weight LOCAL_WEIGHT] [--event_weight EVENT_WEIGHT]
               [--seg_weight SEG_WEIGHT] [--world-size N] [--rank N]
               [--dist-url DIST_URL] [--dist-backend DIST_BACKEND]
               [--gpu_idx GPU_IDX] [--no_cuda] [--multiprocessing-distributed]
               [--evaluate] [--resume_path PATH] [--use_best_checkpoint]
               [--seg_thresh SEG_THRESH] [--event_thresh EVENT_THRESH]
               [--save_test_output] [--video_path PATH] [--output_format PATH]
               [--show_image] [--save_demo_output]

TTNet Implementation

optional arguments:
  -h, --help            show this help message and exit
  --seed SEED           re-produce the results with seed random
  --saved_fn FN         The name using for saving logs, models,...
  -a ARCH, --arch ARCH  The name of the model architecture
  --dropout_p P         The dropout probability of the model
  --multitask_learning  If true, the weights of different losses will be
                        learnt (train).If false, a regular sum of different
                        losses will be applied
  --no_local            If true, no local stage for ball detection.
  --no_event            If true, no event spotting detection.
  --no_seg              If true, no segmentation module.
  --pretrained_path PATH
                        the path of the pretrained checkpoint
  --overwrite_global_2_local
                        If true, the weights of the local stage will be
                        overwritten by the global stage.
  --no-val              If true, use all data for training, no validation set
  --no-test             If true, dont evaluate the model on the test set
  --val-size VAL_SIZE   The size of validation set
  --smooth-labelling    If true, smoothly make the labels of event spotting
  --num_samples NUM_SAMPLES
                        Take a subset of the dataset to run and debug
  --num_workers NUM_WORKERS
                        Number of threads for loading data
  --batch_size BATCH_SIZE
                        mini-batch size (default: 16), this is the totalbatch
                        size of all GPUs on the current node when usingData
                        Parallel or Distributed Data Parallel
  --print_freq N        print frequency (default: 10)
  --checkpoint_freq N   frequency of saving checkpoints (default: 3)
  --sigma SIGMA         standard deviation of the 1D Gaussian for the ball
                        position target
  --thresh_ball_pos_mask THRESH
                        the lower thresh for the 1D Gaussian of the ball
                        position target
  --start_epoch N       the starting epoch
  --num_epochs N        number of total epochs to run
  --lr LR               initial learning rate
  --minimum_lr MIN_LR   minimum learning rate during training
  --momentum M          momentum
  -wd WD, --weight_decay WD
                        weight decay (default: 1e-6)
  --optimizer_type OPTIMIZER
                        the type of optimizer, it can be sgd or adam
  --lr_type SCHEDULER   the type of the learning rate scheduler (steplr or
                        ReduceonPlateau)
  --lr_factor FACTOR    reduce the learning rate with this factor
  --lr_step_size STEP_SIZE
                        step_size of the learning rate when using steplr
                        scheduler
  --lr_patience N       patience of the learning rate when using
                        ReduceoPlateau scheduler
  --earlystop_patience N
                        Early stopping the training process if performance is
                        not improved within this value
  --freeze_global       If true, no update/train weights for the global stage
                        of ball detection.
  --freeze_local        If true, no update/train weights for the local stage
                        of ball detection.
  --freeze_event        If true, no update/train weights for the event module.
  --freeze_seg          If true, no update/train weights for the segmentation
                        module.
  --bce_weight BCE_WEIGHT
                        The weight of BCE loss in segmentation module, the
                        dice_loss weight = 1- bce_weight
  --global_weight GLOBAL_WEIGHT
                        The weight of loss of the global stage for ball
                        detection
  --local_weight LOCAL_WEIGHT
                        The weight of loss of the local stage for ball
                        detection
  --event_weight EVENT_WEIGHT
                        The weight of loss of the event spotting module
  --seg_weight SEG_WEIGHT
                        The weight of BCE loss in segmentation module
  --world-size N        number of nodes for distributed training
  --rank N              node rank for distributed training
  --dist-url DIST_URL   url used to set up distributed training
  --dist-backend DIST_BACKEND
                        distributed backend
  --gpu_idx GPU_IDX     GPU index to use.
  --no_cuda             If true, cuda is not used.
  --multiprocessing-distributed
                        Use multi-processing distributed training to launch N
                        processes per node, which has N GPUs. This is the
                        fastest way to use PyTorch for either single node or
                        multi node data parallel training
  --evaluate            only evaluate the model, not training
  --resume_path PATH    the path of the resumed checkpoint
  --use_best_checkpoint
                        If true, choose the best model on val set, otherwise
                        choose the last model
  --seg_thresh SEG_THRESH
                        threshold of the segmentation output
  --event_thresh EVENT_THRESH
                        threshold of the event spotting output
  --save_test_output    If true, the image of testing phase will be saved
  --video_path PATH     the path of the video that needs to demo
  --output_format PATH  the type of the demo output
  --show_image          If true, show the image during demostration
  --save_demo_output    If true, the image of demonstration phase will be
                        saved
Comments
  • Infer the result of the video

    Infer the result of the video

    After three rounds of training, infer that the result of the video is like this, Screenshot_20210209_105132

    how to get the scoring result, how to realize the effect of your demo video,like this Screenshot_20210209_104458_com huawei hidisk

    and how to realize it with AE

    opened by Deep-learning999 25
  • training on single GPU is very slow because GPU is rarely used

    training on single GPU is very slow because GPU is rarely used

    not sure why training is so slow, I'm using a single GPU but nvidia-smi shows me that the GPU is rarely used. could it be that "cv2.resize" is the bottleneck? I'm new to pytorch but i assume the dataloader is resizing the data for each batch before training, is that correct?

    opened by gitunit 6
  • Regarding image extraction

    Regarding image extraction

    Hey, great repo! I have question regarding the image dataset extraction since I am not really focused on the event detection part. I have seen that have recommended to execute the extract_smooth_labellings.py to select the required images. I understand that if I need event detection. However, if I dont want to train on event detection, should I still go with extract_smooth_labellings.py or use extract_all_images.py instead, so that I have more training data for the segmentation and ball detection tasks?

    opened by Ashwin-Ramesh2607 5
  • When training using ``

    When training using ``

    When I try to run the training using train_1st_phase, it shows that

    fileNotFoundError: [Errno 2] No such file or directory: '../../dataset/training/images/game_2/img_111667.jpg'
    

    Could you please help?

    opened by chenzhutian 5
  • ball detection - output always is (0,615)

    ball detection - output always is (0,615)

    Hi @maudzung

    thanks for the code.

    I followed 2.1 to prepare the dataset, 2.3.2 to train the model and 2.3.4 to evaluate the model.

    The predicted ball address are the same w.r.t. various input. I am confused about it, can you please help?

    The following is the result I got (copied parts of results):

    ===================== batch_idx: 128 ================================

    Ball Detection - Global stage: (x, y) - gt = (109, 66), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (657, 557), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.7071067811865476, is net: 0.0), prediction: (is bounce: 0.3838, is net: 0.2197) Segmentation - IoU = 0.9526

    ===================== batch_idx: 129 ================================

    Ball Detection - Global stage: (x, y) - gt = (107, 65), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (644, 549), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.9238795325112867, is net: 0.0), prediction: (is bounce: 0.3780, is net: 0.2405) Segmentation - IoU = 0.9546 3%|███ | 130/3754 [00:05<02:15, 26.74it/s] ===================== batch_idx: 130 ================================

    Ball Detection - Global stage: (x, y) - gt = (105, 64), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (631, 540), prediction = (0, 615) Event Spotting - gt = (is bounce: 1.0, is net: 0.0), prediction: (is bounce: 0.3824, is net: 0.2243) Segmentation - IoU = 0.9520

    ===================== batch_idx: 131 ================================

    Ball Detection - Global stage: (x, y) - gt = (103, 63), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (620, 535), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.9238795325112867, is net: 0.0), prediction: (is bounce: 0.3847, is net: 0.2165) Segmentation - IoU = 0.9512

    ===================== batch_idx: 132 ================================

    Ball Detection - Global stage: (x, y) - gt = (101, 62), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (606, 527), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.7071067811865476, is net: 0.0), prediction: (is bounce: 0.3761, is net: 0.2479) Segmentation - IoU = 0.9515

    ===================== batch_idx: 133 ================================

    Ball Detection - Global stage: (x, y) - gt = (99, 61), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (595, 522), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.38268343236508984, is net: 0.0), prediction: (is bounce: 0.3805, is net: 0.2310) Segmentation - IoU = 0.9516 4%|███▏ | 134/3754 [00:05<02:14, 26.96it/s] ===================== batch_idx: 134 ================================

    Ball Detection - Global stage: (x, y) - gt = (97, 61), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (583, 516), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.0, is net: 0.0), prediction: (is bounce: 0.3822, is net: 0.2254) Segmentation - IoU = 0.9504

    ===================== batch_idx: 135 ================================

    Ball Detection - Global stage: (x, y) - gt = (209, 79), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (1255, 669), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.0, is net: 0.0), prediction: (is bounce: 0.1441, is net: 0.3184) Segmentation - IoU = 0.9645

    ===================== batch_idx: 136 ================================

    Ball Detection - Global stage: (x, y) - gt = (215, 79), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (1290, 667), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.38268343236508984, is net: 0.0), prediction: (is bounce: 0.3759, is net: 0.2237) Segmentation - IoU = 0.9632

    ===================== batch_idx: 137 ================================

    Ball Detection - Global stage: (x, y) - gt = (220, 78), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (1325, 664), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.7071067811865476, is net: 0.0), prediction: (is bounce: 0.3824, is net: 0.2238) Segmentation - IoU = 0.9662 4%|███▏ | 138/3754 [00:05<02:13, 27.01it/s] ===================== batch_idx: 138 ================================

    Ball Detection - Global stage: (x, y) - gt = (227, 77), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (1366, 658), prediction = (0, 615) Event Spotting - gt = (is bounce: 0.9238795325112867, is net: 0.0), prediction: (is bounce: 0.3814, is net: 0.2278) Segmentation - IoU = 0.9627

    ===================== batch_idx: 139 ================================

    Ball Detection - Global stage: (x, y) - gt = (233, 77), prediction = (0, 73) Ball Detection - Local stage: (x, y) - gt = (-1, -1), prediction = (0, 0) Ball Detection - Overall: (x, y) - org: (1399, 655), prediction = (0, 615) Event Spotting - gt = (is bounce: 1.0, is net: 0.0), prediction: (is bounce: 0.3815, is net: 0.2275) Segmentation - IoU = 0.9652

    opened by ShallowWill 3
  • problem running the main.py

    problem running the main.py

    Hi,

    I tried running the code following the instruction. i got this error when trying to run the main.py. i have checked and i am sure the folders and files exist. what could be the problem? i am using windows 10.

    File "C:\Users\user\Desktop\TTNet\src\data_process\ttnet_data_utils.py", line 95, in get_events_infor json_ball = open(ball_annos_path) FileNotFoundError: [Errno 2] No such file or directory: '../../dataset\training\annotations\game_1\ball_markup.json'

    opened by gohguodong 2
  • CUDA runtime error

    CUDA runtime error

    Trying to run the training, but before a single epoch is finished, getting a RuntimeError:

    `TTNet-Real-time-Analysis-System-for-Table-Tennis-Pytorch/src$ python main.py --gpu_idx 0 ...

    Epoch: [1/40] learning rate: 1.00e-03 ... RuntimeError: CUDA out of memory. Tried to allocate 6.68 GiB (GPU 0; 5.79 GiB total capacity; 3.25 GiB already allocated; 535.38 MiB free; 3.26 GiB reserved in total by PyTorch)`

    Is there any way to limit the memory usage, or have a smaller test set?

    opened by panchul 2
  • Training Issue

    Training Issue

    Hey, I used the training command in ./train_1st_phase.sh with only one main change (removed the distributed training arguments since I have just 1 GPU). The training runs fine for 1 epoch but gets stuck during the test stage forever. (Testing stage since the total batches per epoch is 118)

    Screenshot from 2020-07-26 14-41-19

    opened by Ashwin-Ramesh2607 1
  • How to run the demo?

    How to run the demo?

    Hi, thanks for your nice work. I have finished training the network (1st, 2ed, and 3rd phrase respectively). Then, when I run ./inference/demo.sh, it shows this error:

    image

    Could you please help?

    opened by chenzhutian 1
  • Added multithreaded frame extraction executable

    Added multithreaded frame extraction executable

    A rewritten version of the python extract_all_images.py in rust using opencv and multithreading. functionality is 100% the same and results in exactly the same console outputs, but just multi-threaded.

    opened by Ploruto 0
  • Allowing wget to download with invalid SSL certificate.

    Allowing wget to download with invalid SSL certificate.

    The SSL certificate of 'https://lab.osai.ai/' is not valid anymore. This change allows us to download the files anyway. So this will make the download work again.

    opened by Ploruto 0
  • Please help me

    Please help me

    when I run this command:python download_dataset.py an error occurred: raise URLError(err) urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1091)> I found the URL='https://lab.osai.ai/datasets/openttgames/data/' can not be accessed. Can you help me solve this problem?

    opened by Deerzh 2
  • a question about the multi-task loss function

    a question about the multi-task loss function

    In the code of the multi-task loss function, I would like to know why the classification loss is calculated in that way.

           ` total_loss += local_ball_loss / (torch.exp(2 * self.log_vars[log_vars_idx])) + self.log_vars[log_vars_idx]`
    

    In that multi_task_loss paper (2018CVPR), author calculated classification loss through cross_entropy(CE) scaled by sigma^2 then plus log(sigma). But in your code, it seems to be calculated through CE scaled by sigma^4. I wanna know whether It's a mistake or a trick. Thanks.

    opened by machine981 0
  • Test vs Demo file ?

    Test vs Demo file ?

    When I run the test.py using the describe parameter in " test_3rd_phase.sh " model testing time is much faster but only show the text result no any visualization stuff (not display output video) ,I use to run demo.py using the parameter in " demo.sh " it showing me the output video but it was very slow like on 2 minutes video it takes 10 minutes to test .

    Which parameter should I use to test my model on real time & show me real time output video.

    Note

    there are three files for training " train_1st_phase.sh " " train_2nd_phase.sh " " train_3rd_phase.sh " but only 1 file for testing " test_3rd_phase.sh " I Guess " test_1st_phase.sh " & " test_2nd_phase.sh " are missing .

    ( English is not my mother tongue sorry for my poor language )

    opened by Razamalik4497 0
Owner
Nguyen Mau Dung
M.Sc. in HCI & Robotics | Self-driving Car Engineer | AI Engineer | Interested in 3D Computer Vision
Nguyen Mau Dung
Unofficial implementation of the Involution operation from CVPR 2021

involution_pytorch Unofficial PyTorch implementation of "Involution: Inverting the Inherence of Convolution for Visual Recognition" by Li et al. prese

Rishabh Anand 46 Dec 7, 2022
Unofficial PyTorch Implementation of AHDRNet (CVPR 2019)

AHDRNet-PyTorch This is the PyTorch implementation of Attention-guided Network for Ghost-free High Dynamic Range Imaging (CVPR 2019). The official cod

Yutong Zhang 4 Sep 8, 2022
An official implementation of "SFNet: Learning Object-aware Semantic Correspondence" (CVPR 2019, TPAMI 2020) in PyTorch.

PyTorch implementation of SFNet This is the implementation of the paper "SFNet: Learning Object-aware Semantic Correspondence". For more information,

CV Lab @ Yonsei University 87 Dec 30, 2022
The official implementation of Equalization Loss v1 & v2 (CVPR 2020, 2021) based on MMDetection.

The Equalization Losses for Long-tailed Object Detection and Instance Segmentation This repo is official implementation CVPR 2021 paper: Equalization

Jingru Tan 129 Dec 16, 2022
Implementation of CVPR 2020 Dual Super-Resolution Learning for Semantic Segmentation

Dual super-resolution learning for semantic segmentation 2021-01-02 Subpixel Update Happy new year! The 2020-12-29 update of SISR with subpixel conv p

Sam 79 Nov 24, 2022
Poplar implementation of "Bundle Adjustment on a Graph Processor" (CVPR 2020)

Poplar Implementation of Bundle Adjustment using Gaussian Belief Propagation on Graphcore's IPU Implementation of CVPR 2020 paper: Bundle Adjustment o

Joe Ortiz 34 Dec 5, 2022
PyTorch implementation of CVPR 2020 paper (Reference-Based Sketch Image Colorization using Augmented-Self Reference and Dense Semantic Correspondence) and pre-trained model on ImageNet dataset

Reference-Based-Sketch-Image-Colorization-ImageNet This is a PyTorch implementation of CVPR 2020 paper (Reference-Based Sketch Image Colorization usin

Yuzhi ZHAO 11 Jul 28, 2022
UDP++ (ECCVW 2020 Oral), (Winner of COCO 2020 Keypoint Challenge).

UDP-Pose This is the pytorch implementation for UDP++, which won the Fisrt place in COCO Keypoint Challenge at ECCV 2020 Workshop. Top-Down Results on

null 20 Jul 29, 2022
Learning to Simulate Dynamic Environments with GameGAN (CVPR 2020)

Learning to Simulate Dynamic Environments with GameGAN PyTorch code for GameGAN Learning to Simulate Dynamic Environments with GameGAN Seung Wook Kim,

null 199 Dec 26, 2022
Code accompanying "Dynamic Neural Relational Inference" from CVPR 2020

Code accompanying "Dynamic Neural Relational Inference" This codebase accompanies the paper "Dynamic Neural Relational Inference" from CVPR 2020. This

Colin Graber 48 Dec 23, 2022
git《Investigating Loss Functions for Extreme Super-Resolution》(CVPR 2020) GitHub:

Investigating Loss Functions for Extreme Super-Resolution NTIRE 2020 Perceptual Extreme Super-Resolution Submission. Our method ranked first and secon

Sejong Yang 0 Oct 17, 2022
Block-wisely Supervised Neural Architecture Search with Knowledge Distillation (CVPR 2020)

DNA This repository provides the code of our paper: Blockwisely Supervised Neural Architecture Search with Knowledge Distillation. Illustration of DNA

Changlin Li 215 Dec 19, 2022
《Train in Germany, Test in The USA: Making 3D Object Detectors Generalize》(CVPR 2020)

Train in Germany, Test in The USA: Making 3D Object Detectors Generalize This paper has been accpeted by Conference on Computer Vision and Pattern Rec

Xiangyu Chen 101 Jan 2, 2023
《Where am I looking at? Joint Location and Orientation Estimation by Cross-View Matching》(CVPR 2020)

This contains the codes for cross-view geo-localization method described in: Where am I looking at? Joint Location and Orientation Estimation by Cross-View Matching, CVPR2020.

null 41 Oct 27, 2022
Provided is code that demonstrates the training and evaluation of the work presented in the paper: "On the Detection of Digital Face Manipulation" published in CVPR 2020.

FFD Source Code Provided is code that demonstrates the training and evaluation of the work presented in the paper: "On the Detection of Digital Face M

null 88 Nov 22, 2022
From Fidelity to Perceptual Quality: A Semi-Supervised Approach for Low-Light Image Enhancement (CVPR'2020)

Under-exposure introduces a series of visual degradation, i.e. decreased visibility, intensive noise, and biased color, etc. To address these problems, we propose a novel semi-supervised learning approach for low-light image enhancement.

Yang Wenhan 117 Jan 3, 2023
Pixel Consensus Voting for Panoptic Segmentation (CVPR 2020)

Implementation for Pixel Consensus Voting (CVPR 2020). This codebase contains the essential ingredients of PCV, including various spatial discretizati

Haochen 23 Oct 25, 2022
Official code for "End-to-End Optimization of Scene Layout" -- including VAE, Diff Render, SPADE for colorization (CVPR 2020 Oral)

End-to-End Optimization of Scene Layout Code release for: End-to-End Optimization of Scene Layout CVPR 2020 (Oral) Project site, Bibtex For help conta

Andrew Luo 41 Dec 9, 2022
Official PyTorch code for CVPR 2020 paper "Deep Active Learning for Biased Datasets via Fisher Kernel Self-Supervision"

Deep Active Learning for Biased Datasets via Fisher Kernel Self-Supervision https://arxiv.org/abs/2003.00393 Abstract Active learning (AL) aims to min

Denis 29 Nov 21, 2022