class_docstr: CVLearner
code: def __init__(self, inch):
      super().__init__()
  
      def make_building_block(
          in_channel,
          out_channels,
          kernel_sizes,
          query_strides,
          key_strides,
          group=4,
      ):
          assert (
              len(out_channels) == len(kernel_sizes) == len(key_strides)
          )
  
          building_block_layers = []
          for idx, (outch, ksz, query_stride, key_stride) in enumerate(
              zip(
                  out_channels, kernel_sizes, query_strides, key_strides
              )
          ):
              inch = in_channel if idx == 0 else out_channels[idx - 1]
              ksz4d = (ksz,) * 4
              str4d = (query_stride,) * 2 + (key_stride,) * 2
              pad4d = (ksz // 2,) * 4
  
              building_block_layers.append(
                  Conv4d(inch, outch, ksz4d, str4d, pad4d)
              )
              building_block_layers.append(nn.GroupNorm(group, outch))
              building_block_layers.append(nn.ReLU(inplace=True))
  
          return nn.Sequential(*building_block_layers)
  
      outch1, outch2, outch3, outch4 = 16, 32, 64, 128
  
      self.block1 = make_building_block(
          inch[1], [outch1], [5], [2], [2]
      )
      self.block2 = make_building_block(
          outch1, [outch1, outch2], [3, 3], [1, 2], [1, 2]
      )
      self.block3 = make_building_block(
          outch2,
          [outch2, outch2, outch3],
          [3, 3, 3],
          [1, 1, 2],
          [1, 1, 2],
      )
      self.block4 = make_building_block(
          outch3,
          [outch3, outch3, outch4],
          [3, 3, 3],
          [1, 1, 1],
          [1, 1, 1],
      )
  
      self.mlp = nn.Sequential(
          nn.Linear(outch4, outch4), nn.ReLU(), nn.Linear(outch4, 2)
      )
  
file_path: towhee/towhee/models/cvnet/cvnet_block.py
imports: import torch
  from torch import nn
  import torch.nn.functional
  from torch.nn.functional import interpolate
  from towhee.models.layers.conv4d import CenterPivotConv4d
  from towhee.models.cvnet.cvnet_utils import Geometry
  import math
label_desc: Use image node_id 1 to create a new CVLearner object from inherited base classes: nn with example: obj = CVLearner(inch)