class_docstr: Basic convolutional block for UNet.
  
  This module consists of several plain convolutional layers.
  
  Args:
      in_channels (int): Number of input channels.
      out_channels (int): Number of output channels.
      num_convs (int): Number of convolutional layers. Default: 2.
      stride (int): Whether use stride convolution to downsample
          the input feature map. If stride=2, it only uses stride convolution
          in the first convolutional layer to downsample the input feature
          map. Options are 1 or 2. Default: 1.
      dilation (int): Whether use dilated convolution to expand the
          receptive field. Set dilation rate of each convolutional layer and
          the dilation rate of the first convolutional layer is always 1.
          Default: 1.
      with_cp (bool): Use checkpoint or not. Using checkpoint will save some
          memory while slowing down the training speed. Default: False.
      conv_cfg (dict | None): Config dict for convolution layer.
          Default: None.
      norm_cfg (dict | None): Config dict for normalization layer.
          Default: dict(type='BN').
      act_cfg (dict | None): Config dict for activation layer in ConvModule.
          Default: dict(type='ReLU').
      dcn (bool): Use deformable convolution in convolutional layer or not.
          Default: None.
      plugins (dict): plugins for convolutional layers. Default: None.
code: def __init__(
      self,
      in_channels,
      out_channels,
      num_convs=2,
      stride=1,
      dilation=1,
      with_cp=False,
      conv_cfg=None,
      norm_cfg=dict(type="BN"),
      act_cfg=dict(type="ReLU"),
      dcn=None,
      plugins=None,
  ):
      super().__init__()
      assert dcn is None, "Not implemented yet."
      assert plugins is None, "Not implemented yet."
  
      self.with_cp = with_cp
      convs = []
      for i in range(num_convs):
          convs.append(
              ConvModule(
                  in_channels=in_channels if i == 0 else out_channels,
                  out_channels=out_channels,
                  kernel_size=3,
                  stride=stride if i == 0 else 1,
                  dilation=1 if i == 0 else dilation,
                  padding=1 if i == 0 else dilation,
                  conv_cfg=conv_cfg,
                  norm_cfg=norm_cfg,
                  act_cfg=act_cfg,
              )
          )
  
      self.convs = nn.Sequential(*convs)
  
imports: import torch
  import torch.nn
  import torch.utils.checkpoint
  from mmcv.cnn import ConvModule, build_norm_layer
  from mmengine.model import BaseModule
  from mmengine.utils.dl_utils.parrots_wrapper import _BatchNorm
  from mmocr.registry import MODELS
label_desc: Use image node_id 1 to create a new BasicConvBlock object from inherited base classes: nn with example: obj = BasicConvBlock(in_channels, out_channels, num_convs, stride, dilation, with_cp, conv_cfg, norm_cfg, act_cfg, dcn, plugins)