class_docstr: Basic residual block.
  
  This block is a little different from the block in the ResNet backbone.
  The kernel size of conv1 is 1 in this block while 3 in ResNet BasicBlock.
  
  Args:
      in_channels (int): Channels of the input feature map.
      out_channels (int): Channels of the output feature map.
      conv_cfg (dict): The config dict for convolution layers.
      norm_cfg (dict): The config dict for normalization layers.
code: def __init__(
      self,
      in_channels,
      out_channels,
      conv_cfg=None,
      norm_cfg=dict(type="BN"),
  ):
      super(BasicResBlock, self).__init__()
  
      # main path
      self.conv1 = ConvModule(
          in_channels,
          in_channels,
          kernel_size=3,
          padding=1,
          bias=False,
          conv_cfg=conv_cfg,
          norm_cfg=norm_cfg,
      )
      self.conv2 = ConvModule(
          in_channels,
          out_channels,
          kernel_size=1,
          bias=False,
          conv_cfg=conv_cfg,
          norm_cfg=norm_cfg,
          act_cfg=None,
      )
  
      # identity path
      self.conv_identity = ConvModule(
          in_channels,
          out_channels,
          kernel_size=1,
          conv_cfg=conv_cfg,
          norm_cfg=norm_cfg,
          act_cfg=None,
      )
  
      self.relu = nn.ReLU(inplace=True)
  
file_path: insightface/detection/scrfd/mmdet/models/roi_heads/bbox_heads/double_bbox_head.py
imports: import torch.nn
  from mmcv.cnn import ConvModule, normal_init, xavier_init
  from mmdet.models.backbones.resnet import Bottleneck
  from mmdet.models.builder import HEADS
  from .bbox_head import BBoxHead
label_desc: Use image node_id 1 to create a new BasicResBlock object from inherited base classes: nn with example: obj = BasicResBlock(in_channels, out_channels, conv_cfg, norm_cfg)