class_docstr: Implement the ResNet variant used in `oCLIP.
  
  <https://github.com/bytedance/oclip>`_.
  
  It is also the official structure in
  `CLIP <https://github.com/openai/CLIP>`_.
  
  Compared with ResNetV1d structure, CLIPResNet replaces the
  max pooling layer with an average pooling layer at the end
  of the input stem.
  
  In the Bottleneck of CLIPResNet, after the second convolution
  layer, there is an additional average pooling layer with
  kernel_size 2 and stride 2, which is added as a plugin
  when the input stride > 1.
  The stride of each convolution layer is always set to 1.
  
  Args:
      depth (int): Depth of resnet, options are [50]. Defaults to 50.
      strides (sequence(int)): Strides of the first block of each stage.
          Defaults to (1, 2, 2, 2).
      deep_stem (bool): Replace 7x7 conv in input stem with 3 3x3 conv.
          Defaults to True.
      avg_down (bool): Use AvgPool instead of stride conv at
          the downsampling stage in the bottleneck. Defaults to True.
      **kwargs: Keyword arguments for
          :class:``mmdet.models.backbones.resnet.ResNet``.
code: def __init__(
      self,
      depth=50,
      strides=(1, 2, 2, 2),
      deep_stem=True,
      avg_down=True,
      **kwargs,
  ):
      super().__init__(
          depth=depth,
          strides=strides,
          deep_stem=deep_stem,
          avg_down=avg_down,
          **kwargs,
      )
  
file_path: mmocr/mmocr/models/common/backbones/clip_resnet.py
imports: import torch.nn
  from mmdet.models.backbones import ResNet
  from mmdet.models.backbones.resnet import Bottleneck
  from mmocr.registry import MODELS
label_desc: Use image node_id 1 to create a new CLIPResNet object from inherited base classes: ResNet with example: obj = CLIPResNet(depth, strides, deep_stem, avg_down)