Giter Club home page Giter Club logo

opencompounddomainadaptation-ocda's Introduction

Open Compound Domain Adaptation

[Project] [Paper] [Demo] [Blog]

Overview

Open Compound Domain Adaptation (OCDA) is the author's re-implementation of the compound domain adaptator described in:
"Open Compound Domain Adaptation"
Ziwei Liu*Zhongqi Miao*Xingang PanXiaohang ZhanDahua LinStella X. YuBoqing Gong  (CUHK & Berkeley & Google)  in IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2020, Oral Presentation

Further information please contact Zhongqi Miao and Ziwei Liu.

Requirements

Updates:

  • 11/09/2020: We have uploaded C-Faces dataset. Corresponding codes will be updated shortly. Please be patient. Thank you very much!
  • 06/16/2020: We have released C-Digits dataset and corresponding weights.

Data Preparation

[OCDA Datasets]

First, please download C-Digits, save it to a directory, and change the dataset root in the config file accordingly. The file contains MNIST, MNIST-M, SVHN, SVHN-bal, and SynNum.

For C-Faces, please download Multi-PIE first. Since it is a proprietary dataset, we can only privide the data list we used during training here. We will update the dataset function accordingly.

Getting Started (Training & Testing)

C-Digits

To run experiments for both training and evaluation on the C-Digits datasets (SVHN -> Multi):

python main.py --config ./config svhn_bal_to_multi.yaml

After training is completed, the same command will automatically evaluate the trained models.

C-Faces

  • We will be releasing code for C-Faces experiements very soon.

C-Driving

Reproduced Benchmarks and Model Zoo

NOTE: All reproduced weights need to be decompressed into results directory:

OpenCompoundedDomainAdaptation-OCDA
    |--results

C-Digits (Results may currently have variations.)

Source MNIST (C) MNIST-M (C) USPS (C) SymNum (O) Avg. Acc Download
SVHN 89.62 64.53 81.17 87.86 80.80 model

License and Citation

The use of this software is released under BSD-3.

@inproceedings{compounddomainadaptation,
  title={Open Compound Domain Adaptation},
  author={Liu, Ziwei and Miao, Zhongqi and Pan, Xingang and Zhan, Xiaohang and Lin, Dahua and Yu, Stella X. and Gong, Boqing},
  booktitle={IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
  year={2020}
}

opencompounddomainadaptation-ocda's People

Contributors

liuziwei7 avatar zhmiao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

opencompounddomainadaptation-ocda's Issues

Motivation behined Concept and Domain Factor Selector Linear Networks

As I understand from the code, instead if using the Domain Factor network for weighting the memory value as explained in the paper, you train a "Concept Selector" and a "Domain Factor Selector" linear networks to output weights for both the memory and the domain factor net output to get the final v_transfer value when combing with the direct encoder output.

  1. Can you please explain the motivation behind this change?
  2. Can you explain the motivation behind training Man network before the domain factor network and not training both concept and domain factor selectors at once? (and in short, why not remove step 2)
  3. Can you explain how these changes are applied in the semantic segmentation task training?

Thanks.

Semantic Segmentation Differences

Hi,
First of all thanks for this repository. The approach in this article is very interesting.
I have a few questions about the implementation:

  1. The training session in main.py consists of training MANN net without scheduling before training the Disentangle Domain Factor Net. Is there any reason to train it before the Disentangle Domain Factor Net? is there any reason to train the MANN network without scheduling prior to training it with scheduling?

  2. What were the architectures used in order to train the domain adaptation task on semantic segmentation data. in particular:

  • What layer of the DeepLab (I assume V3+) network was used as the last encoder layer for the DA task?
  • What was the architecture of the decoder/domain encoder for the reconstruction loss used in the domain disentanglement train?

Thanks.

C-Faces experiments

Hi,

I would like to reproduce the results of C-Faces dataset but I noticed that you shared only the code to reproduce the experiments on Digits. Can you also share the code for C-Faces?

Thank you!

Memory module for Semantic Segmentation

Hi,
from my understanding the memory module is a matrix which holds for each row the mean latent vector for each class (or - its centroid) over the source data. Later these centroids are also used to order the target data for a curriculum learning step.

What I don't understand is how the memory module is implemented for semantic segmentation. when there is a single class for each image the division to centroids is clear but what is your method when the labels are segmentation maps?

I did not find an explanation for this in the paper, or the code.

Thanks,
Nadav

C-Driving segmentation code

Hi, I am trying to reproduce the results from your paper using your code. I have noticed that the code which you have shared is for classification of digits. Can you also share the architecture and code for C-Driving segmentation as well.
Thank you

Questions regarding the decoder

Thanks for releasing the code. It seems that the paper forgets to mention how to train the decoder while in the code the decoder is updated jointly with the domain encoder.

Questions about training details.

Hello, thanks for your impressive work.
I am trying to reproduce the results of source only, AdaptSeg, and proposed method on C-Driving benchmarks.
I checked the appendices (C.2.Training details), but there are some points unclear to me.
I’d really appreciate your kind reply.

  1. Which initial weights did you use for training each methods?
    Random initialization or vgg16_bn provided by torchvision or any other?

  2. Did you use similar training process on C-Driving benchmarks as in the OCDA of classification tasks?
    Specifically, is the overall process as follows?
    (1) Train source net
    (2) Compute class centroids from trained source net
    (3) Fine-tune the model, which is initialized from source model(1), with fixed centroids and curriculum learning.

  3. When you construct visual memory, did you average all the features belonging to the same category at once or firstly average the features of same category in each image?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.