valeoai / xmuda

Cross-Modal Unsupervised Domain Adaptationfor 3D Semantic Segmentation
Other
192 stars 36 forks source link

The implementation detail of Deep logCORAL #16

Closed YuXing3d closed 3 years ago

YuXing3d commented 3 years ago

Hi @maxjaritz,

At first, thank you for sharing this amazing work!

I noticed in your paper the result with Deep logCORAL strategy was reported. I also saw the code of corresponding loss function was defined in your project. However, I didn't find its implementation details. Do you remember which layers (feature maps) you used in your experiments and the setting of _C.TRAIN.XMUDA.lambda_logcoral (the weight for logCORAL loss)?

All the best, Yuxing

maxjaritz commented 3 years ago

Hi Yuxing, I use features before the linear layer. See here: https://github.com/valeoai/xmuda/blob/8b39f8f77f048cd4c086323dd89fbf9710335d35/xmuda/models/xmuda_arch.py#L50

Note that you need to modify the training script (or create a new one) to add the logcoral loss.

  1. forward pass on source
  2. forward pass on target
  3. compute logcoral loss
  4. backward

The training can be done separately on 2D and 3D as it is a uni-modal loss.

I tried the following values for _C.TRAIN.XMUDA.lambda_logcoral: 1, 10, 100.

Hope that helps Max

YuXing3d commented 3 years ago

Hi Max,

Thank you for your very quick reply. I implemented logcoral loss according to your instruction. However, after approximately 50000 iterations "big numbers" appear (as shown below). I repeated for several times with different _C.TRAIN.XMUDA.lambda_logcoral value but always encoutering the same situation at last. I know a strategy is adopted in your code to avoid the GPU memory error caused by big numbers. But it doesn't seem to make much sense. I guess the parameters for the deep model cannot get updated normally once encountering such a problem.

Under this circumstance, I cannot achieve the result you reported maybe due to too few valid iterations. My result with logcoral loss is even worse than the reult of baseline. I test on A2D2/SemanticKITTI joint datasets.

warning

Could you please give more details about your experience with logcoral loss? Have you adopted any other tricks to avoid above problem, such as fine-tuning with other settings?

Best regards, Yuxing

YuXing3d commented 3 years ago

Hi Max,

I compared my results with logcoral loss carefully. Actually only 2D stream encountered above problem and stopped updating corresponding network. 3D stream can still work well. In addition, a 3D uni-modal result similar to the one reported in your article can be achieved when _C.TRAIN.XMUDA.lambda_logcoral = 1.0. I have no question on this point now.

Thank you for your help!

Cheers, Yuxing

maxjaritz commented 3 years ago

Hi Yuxing, Sorry I did not reply earlier. I am glad that you could make it work! The loss is indeed not robust. It is one of the problems of this baseline method.

Best, Max