class_docstr: Bottleneck for the ResNet backbone in `DetectoRS
  <https://arxiv.org/pdf/2006.02334.pdf>`_.
  
  This bottleneck allows the users to specify whether to use
  SAC (Switchable Atrous Convolution) and RFP (Recursive Feature Pyramid).
  
  Args:
       inplanes (int): The number of input channels.
       planes (int): The number of output channels before expansion.
       rfp_inplanes (int, optional): The number of channels from RFP.
           Default: None. If specified, an additional conv layer will be
           added for ``rfp_feat``. Otherwise, the structure is the same as
           base class.
       sac (dict, optional): Dictionary to construct SAC. Default: None.
       init_cfg (dict or list[dict], optional): Initialization config dict.
          Default: None
code: def __init__(
      self,
      inplanes,
      planes,
      rfp_inplanes=None,
      sac=None,
      init_cfg=None,
      **kwargs,
  ):
      super(Bottleneck, self).__init__(
          inplanes, planes, init_cfg=init_cfg, **kwargs
      )
  
      assert sac is None or isinstance(sac, dict)
      self.sac = sac
      self.with_sac = sac is not None
      if self.with_sac:
          self.conv2 = build_conv_layer(
              self.sac,
              planes,
              planes,
              kernel_size=3,
              stride=self.conv2_stride,
              padding=self.dilation,
              dilation=self.dilation,
              bias=False,
          )
  
      self.rfp_inplanes = rfp_inplanes
      if self.rfp_inplanes:
          self.rfp_conv = build_conv_layer(
              None,
              self.rfp_inplanes,
              planes * self.expansion,
              1,
              stride=1,
              bias=True,
          )
          if init_cfg is None:
              self.init_cfg = dict(
                  type="Constant", val=0, override=dict(name="rfp_conv")
              )
  
imports: import torch.nn
  import torch.utils.checkpoint
  from mmcv.cnn import build_conv_layer, build_norm_layer
  from mmengine.logging import MMLogger
  from mmengine.model import Sequential, constant_init, kaiming_init
  from mmengine.runner.checkpoint import load_checkpoint
  from torch.nn.modules.batchnorm import _BatchNorm
  from mmdet.registry import MODELS
  from .resnet import BasicBlock
  from .resnet import Bottleneck
  from .resnet import ResNet
label_desc: Use image node_id 1 to create a new Bottleneck object from inherited base classes: _Bottleneck with example: obj = Bottleneck(inplanes, planes, rfp_inplanes, sac, init_cfg)