class_docstr: SSD: Single Shot MultiBox Detector
      
class_docstr_tok: ["SSD",":","Single","Shot","MultiBox","Detector"]
code: def __init__(self, config, name="ssd"):
      super(SSD, self).__init__(name=name)
      self._config = config.model
      self._num_classes = config.model.network.num_classes
      self._debug = config.train.debug
      self._seed = config.train.seed
      self._anchor_max_scale = config.model.anchors.max_scale
      self._anchor_min_scale = config.model.anchors.min_scale
      self._anchor_ratios = np.array(config.model.anchors.ratios)
      self.image_shape = [
          config.dataset.image_preprocessing.fixed_height,
          config.dataset.image_preprocessing.fixed_width,
      ]
      self._anchors_per_point = config.model.anchors.anchors_per_point
      self._loc_loss_weight = config.model.loss.localization_loss_weight
      # TODO: Why not use the default LOSSES collection?
      self._losses_collections = ["ssd_losses"]
  
file_path: luminoth/luminoth/models/ssd/ssd.py
imports: import numpy
  import sonnet
  import tensorflow
  from sonnet.python.modules.conv import Conv2D
  from luminoth.models.ssd.feature_extractor import SSDFeatureExtractor
  from luminoth.models.ssd.proposal import SSDProposal
  from luminoth.models.ssd.target import SSDTarget
  from luminoth.models.ssd.utils import generate_raw_anchors, adjust_bboxes
  from luminoth.utils.losses import smooth_l1_loss
  from luminoth.utils.bbox_transform import clip_boxes
label_desc: Use image node_id 1 to create a new SSD object from inherited base classes: snt with example: obj = SSD(config, name)