class_docstr: Focus width and height information into channel space.
  
  Args:
      in_channels (int): The input channels of this Module.
      out_channels (int): The output channels of this Module.
      kernel_size (int): The kernel size of the convolution. Default: 1
      stride (int): The stride of the convolution. Default: 1
      conv_cfg (dict): Config dict for convolution layer. Default: None,
          which means using conv2d.
      norm_cfg (dict): Config dict for normalization layer.
          Default: dict(type='BN', momentum=0.03, eps=0.001).
      act_cfg (dict): Config dict for activation layer.
          Default: dict(type='Swish').
code: def __init__(
      self,
      in_channels,
      out_channels,
      kernel_size=1,
      stride=1,
      conv_cfg=None,
      norm_cfg=dict(type="BN", momentum=0.03, eps=0.001),
      act_cfg=dict(type="Swish"),
  ):
      super().__init__()
      self.conv = ConvModule(
          in_channels * 4,
          out_channels,
          kernel_size,
          stride,
          padding=(kernel_size - 1) // 2,
          conv_cfg=conv_cfg,
          norm_cfg=norm_cfg,
          act_cfg=act_cfg,
      )
  
imports: import math
  import torch
  import torch.nn
  from mmcv.cnn import ConvModule, DepthwiseSeparableConvModule
  from mmengine.model import BaseModule
  from torch.nn.modules.batchnorm import _BatchNorm
  from mmdet.registry import MODELS
  from ..layers import CSPLayer
label_desc: Use image node_id 1 to create a new Focus object from inherited base classes: nn with example: obj = Focus(in_channels, out_channels, kernel_size, stride, conv_cfg, norm_cfg, act_cfg)