Official implementation of "Dynamic Anchor Learning for Arbitrary-Oriented Object Detection" (AAAI2021).

Overview

DAL

This project hosts the official implementation for our AAAI 2021 paper:

Dynamic Anchor Learning for Arbitrary-Oriented Object Detection [arxiv] [comments].

Abstract

In this paper, we propose a dynamic anchor learning (DAL) method, which utilizes the newly defined matching degree to comprehensively evaluate the localization potential of the anchors and carry out a more efficient label assignment process. In this way, the detector can dynamically select high-quality anchors to achieve accurate object detection, and the divergence between classification and regression will be alleviated.

Getting Started

The codes build Rotated RetinaNet with the proposed DAL method for rotation object detection. The supported datasets include: DOTA, HRSC2016, ICDAR2013, ICDAR2015, UCAS-AOD, NWPU VHR-10, VOC.

Installation

Insatll requirements:

pip install -r requirements.txt
pip install git+git://github.com/lehduong/torch-warmup-lr.git

Build the Cython and CUDA modules:

cd $ROOT/utils
sh make.sh
cd $ROOT/utils/overlaps_cuda
python setup.py build_ext --inplace

Installation for DOTA_devkit:

cd $ROOT/datasets/DOTA_devkit
sudo apt-get install swig
swig -c++ -python polyiou.i
python setup.py build_ext --inplace

Inference

You can use the following command to test a dataset. Note that weight, img_dir, dataset,hyp should be modified as appropriate.

python demo.py

Train

  1. Move the dataset to the $ROOT directory.
  2. Generate imageset files for daatset division via:
cd $ROOT/datasets
python generate_imageset.py
  1. Modify the configuration file hyp.py and arguments in train.py, then start training:
python train.py

Evaluation

Different datasets use different test methods. For UCAS-AOD/HRSC2016/VOC/NWPU VHR-10, you need to prepare labels in the appropriate format in advance. Take evaluation on HRSC2016 for example:

cd $ROOT/datasets/evaluate
python hrsc2gt.py

then you can conduct evaluation:

python eval.py

Note that :

  • the script needs to be executed only once, but testing on different datasets needs to be executed again.
  • the imageset file used in hrsc2gt.py is generated from generate_imageset.py.

Main Results

Method Dataset Bbox Backbone Input Size mAP/F1
DAL DOTA OBB ResNet-101 800 x 800 71.78
DAL UCAS-AOD OBB ResNet-101 800 x 800 89.87
DAL HRSC2016 OBB ResNet-50 416 x 416 88.60
DAL ICDAR2015 OBB ResNet-101 800 x 800 82.4
DAL ICDAR2013 HBB ResNet-101 800 x 800 81.3
DAL NWPU VHR-10 HBB ResNet-101 800 x 800 88.3
DAL VOC 2007 HBB ResNet-101 800 x 800 76.1

Detections

DOTA_results

Citation

If you find our work or code useful in your research, please consider citing:

@article{ming2020dynamic,
  title={Dynamic Anchor Learning for Arbitrary-Oriented Object Detection},
  author={Ming, Qi and Zhou, Zhiqiang and Miao, Lingjuan and Zhang, Hongwei and Li, Linhao},
  journal={arXiv preprint arXiv:2012.04150},
  year={2020}
}

If you have any questions, please contact me via issue or email.

Comments
  • python setup.py build_ext --inplace 报gcc错误

    python setup.py build_ext --inplace 报gcc错误

    作者您好,我运行python setup.py build_ext --inplace 命令后报如下错误,请问 如何解决 image cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ In file included from /home/flora/miniconda3/envs/DAL/lib/python3.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:0, from /home/flora/miniconda3/envs/DAL/lib/python3.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:12, from /home/flora/miniconda3/envs/DAL/lib/python3.7/site-packages/numpy/core/include/numpy/arrayobject.h:4, from rbbox_overlaps.cpp:449: /home/flora/miniconda3/envs/DAL/lib/python3.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp] #warning "Using deprecated NumPy API, disable it with "
    ^ rbbox_overlaps.cpp: In function ‘void __Pyx__ExceptionSave(PyThreadState*, PyObject**, PyObject**, PyObject**)’: rbbox_overlaps.cpp:5670:21: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’ type = tstate->exc_type; ^ rbbox_overlaps.cpp:5671:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’ value = tstate->exc_value; ^ rbbox_overlaps.cpp:5672:19: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’ tb = tstate->exc_traceback; ^ rbbox_overlaps.cpp: In function ‘void __Pyx__ExceptionReset(PyThreadState, PyObject, PyObject, PyObject*)’: rbbox_overlaps.cpp:5679:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’ tmp_type = tstate->exc_type; ^ rbbox_overlaps.cpp:5680:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’ tmp_value = tstate->exc_value; ^ rbbox_overlaps.cpp:5681:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’ tmp_tb = tstate->exc_traceback; ^ rbbox_overlaps.cpp:5682:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’ tstate->exc_type = type; ^ rbbox_overlaps.cpp:5683:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’ tstate->exc_value = value; ^ rbbox_overlaps.cpp:5684:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’ tstate->exc_traceback = tb; ^ rbbox_overlaps.cpp: In function ‘int __Pyx__GetException(PyThreadState*, PyObject**, PyObject**, PyObject**)’: rbbox_overlaps.cpp:5739:24: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’ tmp_type = tstate->exc_type; ^ rbbox_overlaps.cpp:5740:25: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’ tmp_value = tstate->exc_value; ^ rbbox_overlaps.cpp:5741:22: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’ tmp_tb = tstate->exc_traceback; ^ rbbox_overlaps.cpp:5742:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_type’ tstate->exc_type = local_type; ^ rbbox_overlaps.cpp:5743:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_value’ tstate->exc_value = local_value; ^ rbbox_overlaps.cpp:5744:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’ tstate->exc_traceback = local_tb; ^ error: command 'gcc' failed with exit status 1

    opened by florazxf 10
  • for train.py def eval help

    for train.py def eval help

    how to eval on train? my data format as {x1,y1,x2,y2,x3,y3,x4,y4,text}, and i want use DLA for text detection, but get mistake(list out of range) on train.py(def eval). the train dataset use IC15dataset,could u write more detail for eval on train.py please.

    opened by csliuchang 8
  • About the angle of rbox

    About the angle of rbox

    Thanks great work! I have a question about the angle of rbox: In the paper, i find the angle regression term is CodeCogsEqn. Does the angle of GT rbox (for example, HRSC2016 dataset) in this paper ranges from -90 to 90?

    opened by lz20061213 6
  • 关于DOTA数据集精度的问题

    关于DOTA数据集精度的问题

    作者好,非常感谢您的工作。我尝试在DOTA1.0上进行训练与精度评价,这里是我训练的超参:

    lr

    lr0: 0.0001 warmup_lr: 0.00001 warm_epoch:5

    setting

    num_classes: 15

    training

    epochs: 24 batch_size: 4 save_interval: 3 test_interval: 1000

    这里图片的输入尺寸是1024^2,但是目前我得到的精度是(task1): mAP: 0.6017705895879002 ap of each class: plane:0.7982196456704045, baseball-diamond:0.6323334007581611, bridge:0.40836332233092576, ground-track-field:0.46187258734002823, small-vehicle:0.6304814611874696, large-vehicle:0.6403297981395368, ship:0.7565095425203512, tennis-court:0.8959681065504155, basketball-court:0.7136081543213204, storage-tank:0.7763719723087148, soccer-ball-field:0.29802453302029897, roundabout:0.5099949396128973, harbor:0.5388697646315033, swimming-pool:0.5819268480975204, helicopter:0.3836847673289567

    请问如果达到项目里70+ap我需要做哪些修改?

    opened by Marcus208 5
  • replace RetinaNet with YOLOv5

    replace RetinaNet with YOLOv5

    Hi, I tried to replace RetinaNet with YOLOv5 to get faster speed. The traning loss can decrease but mAP is always low. It cannot detect anything. Before replacement, I can sucessfully get 93% mAP using the default setting (RetinaNet). Could you please tell me if I miss anything here? I read the code about anchor part. It looks like only rectangle anchor is used, but i did not notice where is the way to resize the predicted box to original image corrdinate, and what is the purpose of weights in class BoxCoder weights=(10., 10., 10., 5., 15.)

    Here is the part I changed. I make anthor copy of yolo.py in YOLOv5/models. Only change the Detect class to replace cls head and reg head in RetinaNet. I also changed in anchor.py to reduce the pyramid level from 5 to 3 as in YOLOv5. self.pyramid_levels = [3, 4, 5]

    class Detect(nn.Module): def init(self, nc=80, anchors=(), ch=()): # detection layer super(Detect, self).init() self.nc = nc + 1 # number of classes self.nr = 5 #xywha self.na = 3 #len(anchors[0]) // 2 # number of anchors self.cls_head = nn.ModuleList(nn.Conv2d(x, self.na * self.nc, 3, 1, 1) for x in ch) # output conv self.reg_head = nn.ModuleList(nn.Conv2d(x, self.na * self.nr, 3, 1, 1) for x in ch) # output conv self.init_weights()

    def init_weights(self):
        prior = 0.01
        for m in self.cls_head.modules():
            if isinstance(m, nn.Conv2d):
                m.weight.data.fill_(0)
                m.bias.data.fill_(-math.log((1.0 - prior) / prior))
        for m in self.reg_head.modules():
            if isinstance(m, nn.Conv2d):
                m.weight.data.fill_(0)
                m.bias.data.fill_(0)
    
    def get_cls_feature(self, index, x):
        x = torch.sigmoid(self.cls_head[index](x))
        x = x.permute(0, 2, 3, 1)
        n, w, h, c = x.shape
        x = x.reshape(n, w, h, self.na, self.nc)
        return x.reshape(x.shape[0], -1, self.nc)
    def get_reg_feature(self, index, x):
        x = self.reg_head[index](x)
        x = x.permute(0, 2, 3, 1)
        return x.reshape(x.shape[0], -1, self.nr)
    def forward(self, x):
        cls_score = torch.cat([self.get_cls_feature(idx, feature) for idx, feature in enumerate(x)], dim=1)
        bbox_pred = torch.cat([self.get_reg_feature(idx, feature) for idx, feature in enumerate(x)], dim=1)
        return [cls_score, bbox_pred]
    

    I define another class to replace class RetinaNet, by only change a few lines.

    class YOLOV5(nn.Module): def init(self, cfg='yolov5l.yaml', ch=3, nc=None, export=False): super(YOLOV5, self).init() self.yolov5 = Model(cfg) self.num_classes = 1 + 1 # class number + 1, I only have one class in the dataset self.anchor_generator = Anchors( ratios = np.array([0.5,1,2]), ) self.num_anchors = self.anchor_generator.num_anchors self.loss = IntegratedLoss(func='smooth') self.box_coder = BoxCoder()

    def forward(self, ims, gt_boxes=None, test_conf=None,process=None):
        anchors_list, offsets_list, cls_list, var_list = [], [], [], []
        original_anchors = self.anchor_generator(ims)   # (bs, num_all_achors, 5)
        anchors_list.append(original_anchors)
        # features = self.fpn(self.ims_2_features(ims))
        # cls_score = torch.cat([self.cls_head(feature) for feature in features], dim=1)
        # bbox_pred = torch.cat([self.reg_head(feature) for feature in features], dim=1)
        [cls_score, bbox_pred] = self.yolov5(ims)
    

    ..........the other parts are the same.

    opened by xjsxujingsong 5
  • IndexError: too many indices for array

    IndexError: too many indices for array

    Hi ming71: When I trained the model to 2 iterations with batch 1 of the first epoch for DOTA dataset, I encountered the following problems: Epoch gpu_mem cls reg total targets img_size 0/99 4.38G 2.35 4.93 7.28 33 768: 0%| | 2/1411 [00:00<10:31, 2.23it/s] Traceback (most recent call last): File "/home/mccc/Program_Code/Rotated_Object_Detection/DAL/train.py", line 279, in train_model(arg, hyps) File "/home/mccc/Program_Code/Rotated_Object_Detection/DAL/train.py", line 146, in train_model for i, (ni, batch) in enumerate(pbar): File "/home/mccc/anaconda3/envs/DAL/lib/python3.6/site-packages/tqdm/std.py", line 1176, in iter for obj in iterable: File "/home/mccc/anaconda3/envs/piou/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 322, in next return self._process_next_batch(batch) File "/home/mccc/anaconda3/envs/piou/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 357, in _process_next_batch raise batch.exc_type(batch.exc_msg) IndexError: Traceback (most recent call last): File "/home/mccc/anaconda3/envs/piou/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 106, in _worker_loop samples = collate_fn([dataset[i] for i in batch_indices]) File "/home/mccc/anaconda3/envs/piou/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 106, in samples = collate_fn([dataset[i] for i in batch_indices]) File "/home/mccc/Program_Code/Rotated_Object_Detection/DAL/datasets/dota_dataset.py", line 43, in getitem bboxes = roidb['boxes'][gt_inds, :] IndexError: too many indices for array

    Do you have such a problem? My GPU is nvidia RTX 2080Ti , its memory size is 11G. Looking forward to your reply! Thanks.

    opened by 19940312 4
  • 作者您好,请问如何安装torch-warmup-lr呀  谢谢

    作者您好,请问如何安装torch-warmup-lr呀 谢谢

    作者您好,请问如何安装torch-warmup-lr呀 谢谢 (DAL) wen@wen-ubuntu:~/Documents/object_detection/DAL$ pip install torch-warmup-lr==1.0.0 Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple/ ERROR: Could not find a version that satisfies the requirement torch-warmup-lr==1.0.0 ERROR: No matching distribution found for torch-warmup-lr==1.0.0 (DAL) wen@wen-ubuntu:~/Documents/object_detection/DAL$

    opened by wen-flow 3
  • rbbx_overlaps函数计算的iou始终为0

    rbbx_overlaps函数计算的iou始终为0

    您好,我想在自己的工程里使用您的计算旋转框iou的函数rbbx_overlaps,但我发现无论我输入什么,输出的iou始终为0。下面是我的测试代码,是我的调用方式有问题吗 import numpy as np from DAL_utils.overlaps_cuda.rbbox_overlaps import rbbx_overlaps from DAL_utils.overlaps.rbox_overlaps import rbox_overlaps

    a = np.array([[10, 10, 20, 10, 0]], dtype=np.float32) b = np.array([[10, 10, 20, 10, 0]], dtype=np.float32) c = rbbx_overlaps(a, b) d = rbox_overlaps(a, b) print(c) print(d)

    opened by buzhidaoshenme 2
  • train on DOTAdataset

    train on DOTAdataset

    Hi, thanks for your great job! But when i run the code on dota_dataset, there has something wrong with the data processing: Traceback (most recent call last): File "train.py", line 279, in train_model(arg, hyps) File "train.py", line 147, in train_model for i, (ni, batch) in enumerate(pbar): File "/home/cyli/dat01/anaconda3/envs/dal/lib/python3.7/site-packages/tqdm/std.py", line 1166, in iter for obj in iterable: File "/home/cyli/dat01/anaconda3/envs/dal/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 582, in next return self._process_next_batch(batch) File "/home/cyli/dat01/anaconda3/envs/dal/lib/python3.7/site-packages/torch/utils/data/dataloader.py", line 608, in _process_next_batch raise batch.exc_type(batch.exc_msg) IndexError: Traceback (most recent call last): File "/home/cyli/dat01/anaconda3/envs/dal/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 99, in _worker_loop samples = collate_fn([dataset[i] for i in batch_indices]) File "/home/cyli/dat01/anaconda3/envs/dal/lib/python3.7/site-packages/torch/utils/data/_utils/worker.py", line 99, in samples = collate_fn([dataset[i] for i in batch_indices]) File "/scratch/cyli/lcy/DAL/datasets/dota_dataset.py", line 40, in getitem bboxes = roidb['boxes'][gt_inds, :] IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

    opened by Marcus208 2
  • 你好,我想在DOTA数据集上跑下您这个代码但是出现问题。

    你好,我想在DOTA数据集上跑下您这个代码但是出现问题。

    我是先用了DOTA_devkit进行DOTA数据集的train和val的切分,生成相应的images,labelTxt文件夹,用的标签是DOTA1.5 obb的。之后我也用generage_dataset生成相应的包含trainval所有图像的位置的txt文件,之后修改train.py的default参数如下,然后出现了一下错误。自己不是很明白,所以来这里问下。 if name == 'main':

    parser = argparse.ArgumentParser(description='Train a detector')
    # config
    parser.add_argument('--hyp', type=str, default='hyp.py', help='hyper-parameter path')
    # network
    parser.add_argument('--backbone', type=str, default='res50')
    parser.add_argument('--freeze_bn', type=bool, default=False)
    parser.add_argument('--weight', type=str, default='')   # 
    parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches')
    
    # NWPU-VHR10
    parser.add_argument('--dataset', type=str, default='DOTA')
    parser.add_argument('--train_path', type=str, default='/home/ff/WangZF/datasets/dota/train.txt')
    parser.add_argument('--test_path', type=str, default='/home/ff/WangZF/datasets/dota/val.txt')
    
    parser.add_argument('--training_size', type=int, default=800)
    parser.add_argument('--resume', action='store_true', help='resume training from last.pth')
    parser.add_argument('--load', action='store_true', help='load training from last.pth')
    parser.add_argument('--augment', action='store_true', help='data augment')
    parser.add_argument('--target_size', type=int, default=[800])   
    #
    
    arg = parser.parse_args()
    hyps = hyp_parse(arg.hyp)
    print(arg)
    print(hyps)
    
    train_model(arg, hyps)
    

    /home/ff/anaconda3/envs/pytorch1.6/bin/python /home/ff/WangZF/remoteSense/DAL/train.py fail to speed up training via apex

    Namespace(augment=False, backbone='res50', dataset='DOTA', freeze_bn=False, hyp='hyp.py', load=False, multi_scale=False, resume=False, target_size=[800], test_path='/home/ff/WangZF/datasets/dota/val.txt', train_path='/home/ff/WangZF/datasets/dota/train.txt', training_size=800, weight='') {'lr0': 0.0001, 'warmup_lr': 1e-05, 'warm_epoch': 5.0, 'num_classes': 10.0, 'epochs': 100.0, 'batch_size': 2.0, 'save_interval': 5.0, 'test_interval': 5.0} Model Summary: 195 layers, 3.63368e+07 parameters, 3.63368e+07 gradients

     Epoch   gpu_mem       cls       reg     total   targets  img_size
    

    0%| | 0/4043 [00:00<?, ?it/s] Traceback (most recent call last): File "/home/ff/WangZF/remoteSense/DAL/train.py", line 278, in train_model(arg, hyps) File "/home/ff/WangZF/remoteSense/DAL/train.py", line 146, in train_model for i, (ni, batch) in enumerate(pbar): File "/home/ff/anaconda3/envs/pytorch1.6/lib/python3.6/site-packages/tqdm/std.py", line 1193, in iter for obj in iterable: File "/home/ff/anaconda3/envs/pytorch1.6/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 435, in next data = self._next_data() File "/home/ff/anaconda3/envs/pytorch1.6/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 1085, in _next_data return self._process_data(data) File "/home/ff/anaconda3/envs/pytorch1.6/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 1111, in _process_data data.reraise() File "/home/ff/anaconda3/envs/pytorch1.6/lib/python3.6/site-packages/torch/_utils.py", line 428, in reraise raise self.exc_type(msg) IndexError: Caught IndexError in DataLoader worker process 0. Original Traceback (most recent call last): File "/home/ff/anaconda3/envs/pytorch1.6/lib/python3.6/site-packages/torch/utils/data/_utils/worker.py", line 198, in _worker_loop data = fetcher.fetch(index) File "/home/ff/anaconda3/envs/pytorch1.6/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/home/ff/anaconda3/envs/pytorch1.6/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py", line 44, in data = [self.dataset[idx] for idx in possibly_batched_index] File "/home/ff/WangZF/remoteSense/DAL/datasets/dota_dataset.py", line 40, in getitem bboxes = roidb['boxes'][gt_inds, :] IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

    opened by wong1998 2
  • about s2anet-DAL

    about s2anet-DAL

    Dear author: thank you for your repo! In the AAAI paper, the experiments on DOTA shows 76.95 mAP with the s2anet-DAL method, I want to know more about the details, such as, whether the DAL applied in the FAM or the ODM module?

    opened by Jnyle 2
Owner
ming71
欢迎学术交流合作[email protected]
ming71
Implementation for our AAAI2021 paper (Entity Structure Within and Throughout: Modeling Mention Dependencies for Document-Level Relation Extraction).

SSAN Introduction This is the pytorch implementation of the SSAN model (see our AAAI2021 paper: Entity Structure Within and Throughout: Modeling Menti

benfeng 69 Nov 15, 2022
The code of “Similarity Reasoning and Filtration for Image-Text Matching” [AAAI2021]

SGRAF PyTorch implementation for AAAI2021 paper of “Similarity Reasoning and Filtration for Image-Text Matching”. It is built on top of the SCAN and C

Ronnie_IIAU 149 Dec 22, 2022
Simple is not Easy: A Simple Strong Baseline for TextVQA and TextCaps[AAAI2021]

Simple is not Easy: A Simple Strong Baseline for TextVQA and TextCaps Here is the code for ssbassline model. We also provide OCR results/features/mode

ZephyrZhuQi 51 Nov 18, 2022
Code for KHGT model, AAAI2021

KHGT Code for KHGT accepted by AAAI2021 Please unzip the data files in Datasets/ first. To run KHGT on Yelp data, use python labcode_yelp.py For Movi

null 32 Nov 29, 2022
Out-of-Town Recommendation with Travel Intention Modeling (AAAI2021)

TrainOR_AAAI21 This is the official implementation of our AAAI'21 paper: Haoran Xin, Xinjiang Lu, Tong Xu, Hao Liu, Jingjing Gu, Dejing Dou, Hui Xiong

Jack Xin 13 Oct 19, 2022
[AAAI2021] The source code for our paper 《Enhancing Unsupervised Video Representation Learning by Decoupling the Scene and the Motion》.

DSM The source code for paper Enhancing Unsupervised Video Representation Learning by Decoupling the Scene and the Motion Project Website; Datasets li

Jinpeng Wang 114 Oct 16, 2022
The project is an official implementation of our CVPR2019 paper "Deep High-Resolution Representation Learning for Human Pose Estimation"

Deep High-Resolution Representation Learning for Human Pose Estimation (CVPR 2019) News [2020/07/05] A very nice blog from Towards Data Science introd

Leo Xiao 3.9k Jan 5, 2023
Official implementation of AAAI-21 paper "Label Confusion Learning to Enhance Text Classification Models"

Description: This is the official implementation of our AAAI-21 accepted paper Label Confusion Learning to Enhance Text Classification Models. The str

null 101 Nov 25, 2022
Official PyTorch implementation for paper Context Matters: Graph-based Self-supervised Representation Learning for Medical Images

Context Matters: Graph-based Self-supervised Representation Learning for Medical Images Official PyTorch implementation for paper Context Matters: Gra

null 49 Nov 23, 2022
The official implementation of NeMo: Neural Mesh Models of Contrastive Features for Robust 3D Pose Estimation [ICLR-2021]. https://arxiv.org/pdf/2101.12378.pdf

NeMo: Neural Mesh Models of Contrastive Features for Robust 3D Pose Estimation [ICLR-2021] Release Notes The offical PyTorch implementation of NeMo, p

Angtian Wang 76 Nov 23, 2022
StyleGAN2-ADA - Official PyTorch implementation

Abstract: Training generative adversarial networks (GAN) using too little data typically leads to discriminator overfitting, causing training to diverge. We propose an adaptive discriminator augmentation mechanism that significantly stabilizes training in limited data regimes.

NVIDIA Research Projects 3.2k Dec 30, 2022
Official implementation of the ICLR 2021 paper

You Only Need Adversarial Supervision for Semantic Image Synthesis Official PyTorch implementation of the ICLR 2021 paper "You Only Need Adversarial S

Bosch Research 272 Dec 28, 2022
Official PyTorch implementation of Joint Object Detection and Multi-Object Tracking with Graph Neural Networks

This is the official PyTorch implementation of our paper: "Joint Object Detection and Multi-Object Tracking with Graph Neural Networks". Our project website and video demos are here.

Richard Wang 443 Dec 6, 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
Official pytorch implementation of paper "Image-to-image Translation via Hierarchical Style Disentanglement".

HiSD: Image-to-image Translation via Hierarchical Style Disentanglement Official pytorch implementation of paper "Image-to-image Translation

null 364 Dec 14, 2022
Official pytorch implementation of paper "Inception Convolution with Efficient Dilation Search" (CVPR 2021 Oral).

IC-Conv This repository is an official implementation of the paper Inception Convolution with Efficient Dilation Search. Getting Started Download Imag

Jie Liu 111 Dec 31, 2022
Official PyTorch Implementation of Unsupervised Learning of Scene Flow Estimation Fusing with Local Rigidity

UnRigidFlow This is the official PyTorch implementation of UnRigidFlow (IJCAI2019). Here are two sample results (~10MB gif for each) of our unsupervis

Liang Liu 28 Nov 16, 2022
Official implementation of our paper "LLA: Loss-aware Label Assignment for Dense Pedestrian Detection" in Pytorch.

LLA: Loss-aware Label Assignment for Dense Pedestrian Detection This project provides an implementation for "LLA: Loss-aware Label Assignment for Dens

null 35 Dec 6, 2022
Official implementation of Self-supervised Graph Attention Networks (SuperGAT), ICLR 2021.

SuperGAT Official implementation of Self-supervised Graph Attention Networks (SuperGAT). This model is presented at How to Find Your Friendly Neighbor

Dongkwan Kim 127 Dec 28, 2022