Code for our method RePRI for Few-Shot Segmentation. Paper at http://arxiv.org/abs/2012.06166

Overview

Region Proportion Regularized Inference (RePRI) for Few-Shot Segmentation

In this repo, we provide the code for our paper : "Few-Shot Segmentation Without Meta-Learning: A Good Transductive Inference Is All You Need?", available at https://arxiv.org/abs/2012.06166:

Getting Started

Minimum requirements

  1. Software :
  • torch==1.7.0
  • numpy==1.18.4
  • cv2==4.2.0
  • pyyaml==5.3.1

For both training and testing, metrics monitoring is done through visdom_logger (https://github.com/luizgh/visdom_logger). To install this package with pip, use the following command:

pip install git+https://github.com/luizgh/visdom_logger.git
  1. Hardware : A 11 GB+ CUDA-enabled GPU

Download data

All pre-processed from Google Drive

We provide the versions of Pascal-VOC 2012 and MS-COCO 2017 used in this work at https://drive.google.com/file/d/1Lj-oBzBNUsAqA9y65BDrSQxirV8S15Rk/view?usp=sharing. You can download the full .zip and directly extract it at the root of this repo.

If the previous download failed

Here is the structure of the data folder for you to reproduce:

data
├── coco
│   ├── annotations
│   ├── train
│   ├── train2014
│   ├── val
│   └── val2014
└── pascal
|    ├── JPEGImages
|    └── SegmentationClassAug

Pascal : The JPEG images can be found in the PascalVOC 2012 toolkit to be downloaded at PascalVOC2012 and SegmentationClassAug (pre-processed ground-truth masks).

Coco : Coco 2014 train, validation images and annotations can be downloaded at Coco. Once this is done, you will have to generate the subfolders coco/train and coco/val (ground truth masks). Both folders can be generated by executing the python script data/coco/create_masks.py (note that the script uses the package pycocotools that can be found at https://github.com/cocodataset/cocoapi/tree/master/PythonAPI/pycocotools):

python

cd data/coco
python create_masks.py

About the train/val splits

The train/val splits are directly provided in lists/. How they were obtained is explained at https://github.com/Jia-Research-Lab/PFENet

Download pre-trained models

Pre-trained backbones

First, you will need to download the ImageNet pre-trained backbones at https://drive.google.com/drive/folders/1Hrz1wOxOZm4nIIS7UMJeL79AQrdvpj6v and put them under initmodel/. These will be used if you decide to train your models from scratch.

Pre-trained models

We directly provide the full pre-trained models at https://drive.google.com/file/d/1iuMAo5cJ27oBdyDkUI0JyGIEH60Ln2zm/view?usp=sharing. You can download them and directly extract them at the root of this repo. This includes Resnet50 and Resnet101 backbones on Pascal-5i, and Resnet50 on Coco-20i.

Overview of the repo

Data are located in data/. All the code is provided in src/. Default configuration files can be found in config_files/. Training and testing scripts are located in scripts/. Lists/ contains the train/validation splits for each dataset.

Training (optional)

If you want to use the pre-trained models, this step is optional. Otherwise, you can train your own models from scratch with the scripts/train.sh script, as follows.

bash scripts/train.sh {data} {fold} {[gpu_ids]} {layers}

For instance, if you want to train a Resnet50-based model on the fold-0 of Pascal-5i on GPU 1, use:

bash scripts/train.sh pascal 0 [1] 50

Note that this code supports distributed training. If you want to train on multiple GPUs, you may simply replace [1] in the previous examples with the list of gpus_id you want to use.

Testing

To test your models, use the scripts/test.sh script, the general synthax is:

bash scripts/test.sh {data} {shot} {[gpu_ids]} {layers}

This script will test successively on all folds of the current dataset. Below are presented specific commands for several experiments.

Pascal-5i

Results :

(1 shot/5 shot) Arch Fold-0 Fold-1 Fold-2 Fold-3 Mean
RePRI Resnet-50 59.8 / 64.6 68.3 / 71.4 62.1 / 71.1 48.5 / 59.3 59.7 / 66.6
Oracle-RePRI Resnet-50 72.4 / 75.1 78.0 / 80.8 77.1 / 81.4 65.8 / 74.4 73.3 / 77.9
RePRI Resnet-101 59.6 / 66.2 68.3 / 71.4 62.2 / 67.0 47.2 / 57.7 59.4 / 65.6
Oracle-RePRI Resnet-101 73.9 / 76.8 79.7 / 81.7 76.1 / 79.5 65.1 / 74.5 73.7 / 78.1

Command:

bash scripts/test.sh pascal 1 [0] 50  # 1-shot
bash scripts/test.sh pascal 5 [0] 50  # 5-shot

Coco-20i

Results :

(1 shot/5 shot) Arch Fold-0 Fold-1 Fold-2 Fold-3 Mean
RePRI Resnet-50 32.0 / 39.3 38.7 / 45.4 32.7 / 39.7 33.1 / 41.8 34.1/41.6
Oracle-RePRI Resnet-50 49.3 / 51.5 51.4 / 60.8 38.2 / 54.7 41.6 / 55.2 45.1 / 55.5

Command :

bash scripts/test.sh coco 1 [0] 50  # 1-shot
bash scripts/test.sh coco 5 [0] 50  # 5-shot

Coco-20i -> Pascal-VOC

The folds used for cross-domain experiments are presented in the image below:

Results :

(1 shot/5 shot) Arch Fold-0 Fold-1 Fold-2 Fold-3 Mean
RePRI Resnet-50 52.8 / 57.7 64.0 / 66.1 64.1 / 67.6 71.5 / 73.1 63.1 / 66.2
Oracle-RePRI Resnet-50 69.6 / 73.5 71.7 / 74.9 77.6 / 82.2 86.2 / 88.1 76.2 / 79.7

Command :

bash scripts/test.sh coco2pascal 1 [0] 50  # 1-shot
bash scripts/test.sh coco2pascal 5 [0] 50  # 5-shot

Monitoring metrics

For both training and testing, you can monitor metrics using visdom_logger (https://github.com/luizgh/visdom_logger). To install this package, simply clone the repo and install it with pip:

git clone https://github.com/luizgh/visdom_logger.git
pip install -e visdom_logger

Then, you need to start a visdom server with:

python -m visdom.server -port 8098

Finally, add the line visdom_port 8098 in the options in scripts/train.sh or scripts/test.sh, and metrics will be displayed at this port. You can monitor them through your navigator.

Contact

For further questions or details, please post an issue or directly reach out to Malik Boudiaf ([email protected])

Acknowledgments

We gratefully thank the authors of https://github.com/Jia-Research-Lab/PFENet, as well as https://github.com/hszhao/semseg from which some parts of our code are inspired.

Comments
  • ImageNet Pretraining

    ImageNet Pretraining

    Hello

    Thanks for providing the code and pretrained weights. I had a question regarding Imgenet pretraining, is there a reason why you provide your own pretrained imagenet weights? Are they trained on a separate set of classes in ImageNet not overlapping with Pascal/COCO classes, so not the full Imagenet classes? Or you are using like other FSS methods the imagenet pretraining on all classes.

    Thanks

    opened by MSiam 4
  • How are base classes selected?

    How are base classes selected?

    Hi, thanks for the excellent work. It seems that all objects classes in PASCAL VOC have been used in few-shot segmentation task, so i am confused about the base classes used in the standard training?, are they still selected from the 20 categories in the PASCAL VOC dataset?

    opened by tymatfd 3
  • The oracle setting

    The oracle setting

    Hi, I tried to reproduce the oracle results. I changed FB_param_type: oracle and then ran it. The results have a huge gap to the reported one. I am not sure if I missed something. I will show the configs and the results below. This is the evaluation for split 0 on Pascal dataset.

    Configs:

    FB_param_noise: 0 FB_param_type: oracle FB_param_update: [10] adapt_iter: 50 arch: resnet augmentations: ['hor_flip', 'vert_flip', 'resize'] batch_size: 12 batch_size_val: 50 bins: [1, 2, 3, 6] bottleneck_dim: 512 ckpt_path: checkpoints/ ckpt_used: best cls_lr: 0.025 cls_visdom_freq: 5 data_root: data/pascal/ debug: False distance: cos distributed: False dropout: 0.1 episodic: True epochs: 50 gamma: 0.1 gpus: [0] image_size: 417 layers: 50 log_freq: 50 lr: 0.0025 lr_stepsize: 30 m_scale: False main_optim: SGD manual_seed: 2020 mean: [0.485, 0.456, 0.406] milestones: [40, 70] mixup: False momentum: 0.9 n_runs: 1 nesterov: True norm_feat: True num_classes_tr: 16 num_classes_val: 5 padding_label: 255 port: 41565 pretrained: True random_shot: False rot_max: 10 rot_min: -10 save_models: True save_oracle: False scale_lr: 1.0 scale_max: 2.0 scale_min: 0.5 scheduler: cosine shot: 1 smoothing: True std: [0.229, 0.224, 0.225] temperature: 20.0 test_name: default test_num: 1000 test_split: default train_list: lists/pascal/train.txt train_name: pascal train_split: 0 use_split_coco: False val_list: lists/pascal/val.txt visdom_port: -1 weight_decay: 0.0001 weights: [1.0, 'auto', 'auto'] workers: 2

    Results:

    loading weight 'model_ckpt/pascal/split=0/model/pspnet_resnet50/smoothing=True/mixup=False/best.pth' => loaded weight 'model_ckpt/pascal/split=0/model/pspnet_resnet50/smoothing=True/mixup=False/best.pth' INFO: pascal -> pascal INFO: 0 -> 0 Start Filtering classes Removed classes = [] Kept classes = ['airplane', 'bicycle', 'bird', 'boat', 'bottle'] Processing data for [1, 2, 3, 4, 5] ==> Start testing Test: [200/1000] mIoU 0.5896 Loss 0.2439 (0.2205) Test: [400/1000] mIoU 0.5998 Loss 0.1735 (0.1959) Test: [600/1000] mIoU 0.5908 Loss 0.2507 (0.2111) Test: [800/1000] mIoU 0.5969 Loss 0.2431 (0.2067) Test: [1000/1000] mIoU 0.5981 Loss 0.2006 (0.2036) mIoU---Val result: mIoU 0.5981. Class 1 : 0.7976 Class 4 : 0.6099 Class 2 : 0.1969 Class 5 : 0.5643 Class 3 : 0.8221 Test: [200/1000] mIoU 0.6224 Loss 0.2126 (0.1886) Test: [400/1000] mIoU 0.6115 Loss 0.2031 (0.2012) Test: [600/1000] mIoU 0.6164 Loss 0.2035 (0.2002) Test: [800/1000] mIoU 0.6124 Loss 0.2239 (0.1972) Test: [1000/1000] mIoU 0.6120 Loss 0.1726 (0.2009) mIoU---Val result: mIoU 0.6120. Class 1 : 0.7903 Class 3 : 0.8333 Class 2 : 0.1915 Class 5 : 0.6145 Class 4 : 0.6307 Test: [200/1000] mIoU 0.5921 Loss 0.1996 (0.2134) Test: [400/1000] mIoU 0.5944 Loss 0.2304 (0.2220) Test: [600/1000] mIoU 0.6082 Loss 0.2099 (0.2091) Test: [800/1000] mIoU 0.6092 Loss 0.1999 (0.2107) Test: [1000/1000] mIoU 0.6077 Loss 0.2175 (0.2081) mIoU---Val result: mIoU 0.6077. Class 5 : 0.5949 Class 3 : 0.8324 Class 4 : 0.6531 Class 1 : 0.7896 Class 2 : 0.1688 Test: [200/1000] mIoU 0.5977 Loss 0.2175 (0.2164) Test: [400/1000] mIoU 0.5995 Loss 0.2068 (0.2146) Test: [600/1000] mIoU 0.6099 Loss 0.1955 (0.2092) Test: [800/1000] mIoU 0.6122 Loss 0.1857 (0.2072) Test: [1000/1000] mIoU 0.6091 Loss 0.1860 (0.2027) mIoU---Val result: mIoU 0.6091. Class 5 : 0.5856 Class 4 : 0.6328 Class 2 : 0.2274 Class 3 : 0.8108 Class 1 : 0.7888

    opened by zhiheLu 3
  • KL divergence

    KL divergence

    Hello!

    Thank you for this work! I was wondering if you could point me to where you are computing the FG-BG proportion KL divergence in your code?

    Thank you!

    opened by joshmyersdean 2
  • RuntimeError: CUDA out of memory

    RuntimeError: CUDA out of memory

    RuntimeError: CUDA out of memory. Tried to allocate 528.00 MiB (GPU 0; 11.77 GiB total capacity; 9.33 GiB already allocated; 326.75 MiB free; 9.51 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
    

    Hi Malik, thanks for making your work open source and congrats on CVPR :)

    I think I'm facing a similar issue as #12. I've tried changing the batch_size_val to 1 from 200 in config_files/pascal.yaml and in scripts/test.sh but I'm still facing the same error. Im running bash scripts/train.sh pascal 0 [0] 50 and im using a rtx3060.

    opened by arjvn 2
  • Few-Shot RePRI Setup

    Few-Shot RePRI Setup

    Hello thanks for making the code available.

    I have a question regarding the few-shot setup itself. I can see that you perform the RePRI inference in test.py after you accumulate multiple tasks (200 in case of 1-shot). The problem is that you finetune the classifier weights with these 200 tasks at once inside RePRI code in src/classifier.py

    But wouldn't this mean that you are finetuning with 200 support sets. How is this still considered fewshot? I thought the fewshot setup would require to test each task standalone

    Or do you handle this with ensuring that self.prototype in classifier code is already n_task x c so you learn a separate weight for every task? Just confirming. Thanks

    opened by MSiam 2
  • Debugging toolbox to run?

    Debugging toolbox to run?

    Hello,

    Thank you for open sourcing your project so early! :smiley:

    Could you please share which debugging tool you use for this project or any recommendations? pdb seems not working at hand possibly due to the multiprocessing code base.

    opened by dahyun-kang 2
  • mIoU on validation sets during training, i.e., 61 class mIoU

    mIoU on validation sets during training, i.e., 61 class mIoU

    Hi, thanks for your good work. I guess the performance of the pre-trained model is vital for the later few-shot task. So, can you provide the mIoU of validation sets during training? Should have four values for four splits of each dataset.

    opened by zhiheLu 2
  • validation During training on base classes

    validation During training on base classes

    Thanks for useful code @mboudiaf .

    I reviewed the code and noticed that you are using episodic validation during training instead of standard validation. could you please let me know if I am right.

    My second question: how many GPUs did you use for training? I think batch size was 12.

    opened by aminpdik 1
  • a error about connection

    a error about connection

    (repri) ldz@ldz-cy620:~/temp_project/RePRI$ bash scripts/train.sh pascal 0 [0] 50
    Setting up a new session...
    Traceback (most recent call last):
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/connection.py", line 169, in _new_conn
        conn = connection.create_connection(
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/util/connection.py", line 96, in create_connection
        raise err
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/util/connection.py", line 86, in create_connection
        sock.connect(sa)
    ConnectionRefusedError: [Errno 111] Connection refused
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
        httplib_response = self._make_request(
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
        conn.request(method, url, **httplib_request_kw)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/connection.py", line 234, in request
        super(HTTPConnection, self).request(method, url, body=body, headers=headers)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/http/client.py", line 1255, in request
        self._send_request(method, url, body, headers, encode_chunked)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/http/client.py", line 1301, in _send_request
        self.endheaders(body, encode_chunked=encode_chunked)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/http/client.py", line 1250, in endheaders
        self._send_output(message_body, encode_chunked=encode_chunked)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/http/client.py", line 1010, in _send_output
        self.send(msg)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/http/client.py", line 950, in send
        self.connect()
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/connection.py", line 200, in connect
        conn = self._new_conn()
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/connection.py", line 181, in _new_conn
        raise NewConnectionError(
    urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f9a6416e8e0>: Failed to establish a new connection: [Errno 111] Connection refused
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
        resp = conn.urlopen(
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/connectionpool.py", line 755, in urlopen
        retries = retries.increment(
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/urllib3/util/retry.py", line 573, in increment
        raise MaxRetryError(_pool, url, error or ResponseError(cause))
    urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8098): Max retries exceeded with url: /env/main (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f9a6416e8e0>: Failed to establish a new connection: [Errno 111] Connection refused'))
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/visdom/__init__.py", line 708, in _send
        return self._handle_post(
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/visdom/__init__.py", line 677, in _handle_post
        r = self.session.post(url, data=data)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/requests/sessions.py", line 590, in post
        return self.request('POST', url, data=data, json=json, **kwargs)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
        resp = self.send(prep, **send_kwargs)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
        r = adapter.send(request, **kwargs)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/requests/adapters.py", line 516, in send
        raise ConnectionError(e, request=request)
    requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8098): Max retries exceeded with url: /env/main (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f9a6416e8e0>: Failed to establish a new connection: [Errno 111] Connection refused'))
    [Errno 111] Connection refused
      0%|                                                                                                                                                                                                  | 0/5953 [00:00<?, ?it/s]==> Running process rank 0.
    Exception in user code:
    ------------------------------------------------------------
    Processing data for [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
    100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5953/5953 [00:00<00:00, 9114.94it/s]
    Traceback (most recent call last):
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/runpy.py", line 197, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/runpy.py", line 87, in _run_code
        exec(code, run_globals)
      File "/home/ldz/temp_project/RePRI/src/train.py", line 328, in <module>
        mp.spawn(main_worker,
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/torch/multiprocessing/spawn.py", line 199, in spawn
        return start_processes(fn, args, nprocs, join, daemon, start_method='spawn')
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/torch/multiprocessing/spawn.py", line 157, in start_processes
        while not context.join():
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/torch/multiprocessing/spawn.py", line 118, in join
        raise Exception(msg)
    Exception: 
    
    -- Process 0 terminated with the following error:
    multiprocessing.pool.RemoteTraceback: 
    """
    Traceback (most recent call last):
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/multiprocessing/pool.py", line 125, in worker
        result = (True, func(*args, **kwds))
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/multiprocessing/pool.py", line 48, in mapstar
        return list(map(*args))
      File "/home/ldz/temp_project/RePRI/src/dataset/utils.py", line 86, in process_image
        assert label_class_ in list(range(1, 81)), label_class_
    AssertionError: None
    """
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/site-packages/torch/multiprocessing/spawn.py", line 19, in _wrap
        fn(i, *args)
      File "/home/ldz/temp_project/RePRI/src/train.py", line 80, in main_worker
        train_loader, train_sampler = get_train_loader(args)
      File "/home/ldz/temp_project/RePRI/src/dataset/dataset.py", line 39, in get_train_loader
        train_data = StandardData(transform=train_transform,
      File "/home/ldz/temp_project/RePRI/src/dataset/dataset.py", line 120, in __init__
        self.data_list, _ = make_dataset(args.data_root, data_list_path, class_list)
      File "/home/ldz/temp_project/RePRI/src/dataset/utils.py", line 52, in make_dataset
        for sublist, subdict in mmap_(process_partial, tqdm(list_read)):
      File "/home/ldz/temp_project/RePRI/src/dataset/utils.py", line 17, in mmap_
        return Pool().map(fn, iter)
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/multiprocessing/pool.py", line 364, in map
        return self._map_async(func, iterable, mapstar, chunksize).get()
      File "/home/ldz/anaconda3/envs/repri/lib/python3.9/multiprocessing/pool.py", line 771, in get
        raise self._value
    AssertionError: None
    
    
    opened by 9p15p 1
  • How to set GPU?

    How to set GPU?

    Dear author:

    When I run this command:

    bash scripts/train.sh pascal 0 [5] 50

    I want to run the code on the fifth GPU. There is an error about "cuda out of memory". However, this GPU has 12 GiB free.

    opened by AmingWu 0
  • How to Debug with pycharm

    How to Debug with pycharm

    Hi, very excellent work. Thanks for the code, it's very helpful and instructive!I want to study your code structure, but I don't know how to use pycharm to debug your code.

    opened by 2873238593 5
Owner
Malik Boudiaf
Malik Boudiaf
This is an official implementation of our CVPR 2021 paper "Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression" (https://arxiv.org/abs/2104.02300)

Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression Introduction In this paper, we are interested in the bottom-up paradigm of estima

HRNet 367 Dec 27, 2022
A PyTorch implementation of EventProp [https://arxiv.org/abs/2009.08378], a method to train Spiking Neural Networks

Spiking Neural Network training with EventProp This is an unofficial PyTorch implemenation of EventProp, a method to compute exact gradients for Spiki

Pedro Savarese 35 Jul 29, 2022
Source Code for DialogBERT: Discourse-Aware Response Generation via Learning to Recover and Rank Utterances (https://arxiv.org/pdf/2012.01775.pdf)

DialogBERT This is a PyTorch implementation of the DialogBERT model described in DialogBERT: Neural Response Generation via Hierarchical BERT with Dis

Xiaodong Gu 67 Jan 6, 2023
ISTR: End-to-End Instance Segmentation with Transformers (https://arxiv.org/abs/2105.00637)

This is the project page for the paper: ISTR: End-to-End Instance Segmentation via Transformers, Jie Hu, Liujuan Cao, Yao Lu, ShengChuan Zhang, Yan Wa

Jie Hu 182 Dec 19, 2022
Supplementary code for the paper "Meta-Solver for Neural Ordinary Differential Equations" https://arxiv.org/abs/2103.08561

Meta-Solver for Neural Ordinary Differential Equations Towards robust neural ODEs using parametrized solvers. Main idea Each Runge-Kutta (RK) solver w

Julia Gusak 25 Aug 12, 2021
Code for paper "A Critical Assessment of State-of-the-Art in Entity Alignment" (https://arxiv.org/abs/2010.16314)

A Critical Assessment of State-of-the-Art in Entity Alignment This repository contains the source code for the paper A Critical Assessment of State-of

Max Berrendorf 16 Oct 14, 2022
Code for the paper: Learning Adversarially Robust Representations via Worst-Case Mutual Information Maximization (https://arxiv.org/abs/2002.11798)

Representation Robustness Evaluations Our implementation is based on code from MadryLab's robustness package and Devon Hjelm's Deep InfoMax. For all t

Sicheng 19 Dec 7, 2022
Source code for models described in the paper "AudioCLIP: Extending CLIP to Image, Text and Audio" (https://arxiv.org/abs/2106.13043)

AudioCLIP Extending CLIP to Image, Text and Audio This repository contains implementation of the models described in the paper arXiv:2106.13043. This

null 458 Jan 2, 2023
Official repository with code and data accompanying the NAACL 2021 paper "Hurdles to Progress in Long-form Question Answering" (https://arxiv.org/abs/2103.06332).

Hurdles to Progress in Long-form Question Answering This repository contains the official scripts and datasets accompanying our NAACL 2021 paper, "Hur

Kalpesh Krishna 41 Nov 8, 2022
Official implementation of the paper Image Generators with Conditionally-Independent Pixel Synthesis https://arxiv.org/abs/2011.13775

CIPS -- Official Pytorch Implementation of the paper Image Generators with Conditionally-Independent Pixel Synthesis Requirements pip install -r requi

Multimodal Lab @ Samsung AI Center Moscow 201 Dec 21, 2022
[PyTorch] Official implementation of CVPR2021 paper "PointDSC: Robust Point Cloud Registration using Deep Spatial Consistency". https://arxiv.org/abs/2103.05465

PointDSC repository PyTorch implementation of PointDSC for CVPR'2021 paper "PointDSC: Robust Point Cloud Registration using Deep Spatial Consistency",

null 153 Dec 14, 2022
Unofficial Tensorflow-Keras implementation of Fastformer based on paper [Fastformer: Additive Attention Can Be All You Need](https://arxiv.org/abs/2108.09084).

Fastformer-Keras Unofficial Tensorflow-Keras implementation of Fastformer based on paper Fastformer: Additive Attention Can Be All You Need. Tensorflo

Yam Peleg 10 Jan 30, 2022
This repository contains the code used for Predicting Patient Outcomes with Graph Representation Learning (https://arxiv.org/abs/2101.03940).

Predicting Patient Outcomes with Graph Representation Learning This repository contains the code used for Predicting Patient Outcomes with Graph Repre

Emma Rocheteau 76 Dec 22, 2022
source code for https://arxiv.org/abs/2005.11248 "Accelerating Antimicrobial Discovery with Controllable Deep Generative Models and Molecular Dynamics"

Accelerating Antimicrobial Discovery with Controllable Deep Generative Models and Molecular Dynamics This work will be published in Nature Biomedical

International Business Machines 71 Nov 15, 2022
Pytorch implementation of Each Part Matters: Local Patterns Facilitate Cross-view Geo-localization https://arxiv.org/abs/2008.11646

[TCSVT] Each Part Matters: Local Patterns Facilitate Cross-view Geo-localization LPN [Paper] NEWs Prerequisites Python 3.6 GPU Memory >= 8G Numpy > 1.

null 46 Dec 14, 2022
https://arxiv.org/abs/2102.11005

LogME LogME: Practical Assessment of Pre-trained Models for Transfer Learning How to use Just feed the features f and labels y to the function, and yo

THUML: Machine Learning Group @ THSS 149 Dec 19, 2022
Official Implementation for "ReStyle: A Residual-Based StyleGAN Encoder via Iterative Refinement" https://arxiv.org/abs/2104.02699

ReStyle: A Residual-Based StyleGAN Encoder via Iterative Refinement Recently, the power of unconditional image synthesis has significantly advanced th

null 967 Jan 4, 2023
Non-Official Pytorch implementation of "Face Identity Disentanglement via Latent Space Mapping" https://arxiv.org/abs/2005.07728 Using StyleGAN2 instead of StyleGAN

Face Identity Disentanglement via Latent Space Mapping - Implement in pytorch with StyleGAN 2 Description Pytorch implementation of the paper Face Ide

Daniel Roich 58 Dec 24, 2022
Minimal implementation of PAWS (https://arxiv.org/abs/2104.13963) in TensorFlow.

PAWS-TF ?? Implementation of Semi-Supervised Learning of Visual Features by Non-Parametrically Predicting View Assignments with Support Samples (PAWS)

Sayak Paul 43 Jan 8, 2023