code: def init_denoising(self, dn_cfg):
      if dn_cfg is not None:
          dn_cfg["num_classes"] = self.num_classes
          dn_cfg["num_matching_queries"] = self.num_query
          dn_cfg["embed_dims"] = self.embed_dims
      self.dn_generator = CdnQueryGenerator(**dn_cfg)
  
imports: import copy
  from typing import List
  import torch
  import torch.nn
  import torch.nn.functional
  from mmcv.cnn import Linear
  from mmcv.ops import batched_nms
  from mmengine.structures import InstanceData
  from torch import Tensor
  from mmdet.models import DINOHead
  from mmdet.models.layers import CdnQueryGenerator
  from mmdet.models.layers.transformer import inverse_sigmoid
  from mmdet.models.utils import multi_apply
  from mmdet.registry import MODELS
  from mmdet.structures import SampleList
  from mmdet.structures.bbox import bbox_cxcywh_to_xyxy, bbox_overlaps, bbox_xyxy_to_cxcywh
  from mmdet.utils import InstanceList, reduce_mean
label_desc: Use image node_id 3 for calling the CoDINOHead obj's underlying member method code with example usage: obj.init_denoising(dn_cfg) without return types