class_docstr: Feature extractor based on MCait backbone. This is the proposed feature extractor in the paper. It uses two
  independently trained Cait models, at different scales, with input sizes 448 and 224, respectively.
  It also includes a normalization layer for each scale.
class_docstr_tok: ["Feature","extractor","based","on","MCait","backbone",".","This","is","the","proposed","feature","extractor","in","the","paper",".","It","uses","two","independently","trained","Cait","models",",","at","different","scales",",","with","input","sizes","448","and","224",",","respectively",".","It","also","includes","a","normalization","layer","for","each","scale","."]
code: def __init__(self):
      super(MCaitFeatureExtractor, self).__init__()
      self.input_size = 448
      self.extractor1 = timm.create_model(
          "cait_m48_448", pretrained=True
      )
      self.extractor2 = timm.create_model(
          "cait_s24_224", pretrained=True
      )
      self.channels = [768, 384]
      self.scale_factors = [16, 32]
      self.scales = range(len(self.scale_factors))
  
      for param in self.extractor1.parameters():
          param.requires_grad = False
      for param in self.extractor2.parameters():
          param.requires_grad = False
  
file_path: anomalib/src/anomalib/models/uflow/feature_extraction.py
imports: from typing import Tuple
  import timm
  import torch
  import torch.nn.functional
  from torch import nn
  from anomalib.models.components.feature_extractors import TimmFeatureExtractor
label_desc: Use image node_id 1 to create a new MCaitFeatureExtractor object from inherited base classes: nn with example: obj = MCaitFeatureExtractor()