πŸŽ‰ 75% of content is free forever β€” Unlock Premium from $10/mo β†’
CW
Search courses…
πŸ’Ό Servicesℹ️ Aboutβœ‰οΈ ContactView Pricing Plansfrom $10

Domain Adaptation

Computer VisionDomain Adaptation🟒 Free Lesson

Advertisement

Domain Adaptation

Module: Computer Vision | Difficulty: Advanced

Domain Shift

Source domain differs from target :

Maximum Mean Discrepancy (MMD)

Adversarial Domain Adaptation

CORAL Loss

where is the covariance matrix.

import torch
import torch.nn as nn

class DomainAdversarial(nn.Module):
    def __init__(self, feat_dim, num_classes):
        super().__init__()
        self.classifier = nn.Linear(feat_dim, num_classes)
        self.discriminator = nn.Sequential(
            nn.Linear(feat_dim, 256), nn.ReLU(True),
            nn.Linear(256, 2), nn.Softmax(dim=1),
        )
        self.grl = GradientReversalLayer()
    
    def forward(self, features):
        class_pred = self.classifier(features)
        domain_pred = self.discriminator(self.grl(features))
        return class_pred, domain_pred

class GradientReversalFunction(torch.autograd.Function):
    @staticmethod
    def forward(ctx, x, alpha):
        ctx.alpha = alpha
        return x.view_as(x)
    
    @staticmethod
    def backward(ctx, grad_output):
        return -ctx.alpha * grad_output, None

Key Takeaways

  • Domain shift degrades performance on unseen target domains
  • Adversarial training aligns feature distributions
  • MMD and CORAL provide distribution matching losses

Need Expert Computer Vision Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement