def __init__(self, backbone="resnet18", num_classes=80):
        """
        Source:
            https://github.com/NVIDIA/DeepLearningExamples/blob/70fcb70ff4bc49cc723195b35cfa8d4ce94a7f76/PyTorch/Detection/SSD/src/model.py

        Args:
            backbone (str): model backbone to use
            n_classes (int): number of classes to predict
        """
        super().__init__()

        self.feature_extractor = ResnetBackbone(backbone)

        self.label_num = num_classes + 1  # +background class
        self._build_additional_features(self.feature_extractor.out_channels)
        self.num_defaults = [4, 6, 6, 6, 4, 4]
        self.loc = []
        self.conf = []

        for nd, oc in zip(self.num_defaults, self.feature_extractor.out_channels):
            self.loc.append(nn.Conv2d(oc, nd * 4, kernel_size=3, padding=1))
            self.conf.append(
                nn.Conv2d(oc, nd * self.label_num, kernel_size=3, padding=1)
            )

        self.loc = nn.ModuleList(self.loc)
        self.conf = nn.ModuleList(self.conf)
        self._init_weights()

        Source:
            https://github.com/NVIDIA/DeepLearningExamples/blob/70fcb70ff4bc49cc723195b35cfa8d4ce94a7f76/PyTorch/Detection/SSD/src/model.py

        Args:
            backbone (str): model backbone to use
            n_classes (int): number of classes to predict
        
examples/detection/models/ssd.py