def __init__(self, classes=19, p=5, q=3):
        '''
        :param classes: number of classes in the dataset. Default is 20 for the cityscapes
        :param p: depth multiplier
        :param q: depth multiplier
        '''
        super().__init__()
        self.level1 = CBR(3, 16, 3, 2)      # feature map size divided 2,                         1/2
        self.sample1 = InputProjectionA(1)  #down-sample for input reinforcement, factor=2
        self.sample2 = InputProjectionA(2)  #down-sample for input reinforcement, factor=4

        self.b1 = BR(16 + 3)
        self.level2_0 = DownSamplerB(16 +3, 64)  # Downsample Block, feature map size divided 2,    1/4

        self.level2 = nn.ModuleList()
        for i in range(0, p):
            self.level2.append(DilatedParllelResidualBlockB(64 , 64))  #ESP block
        self.b2 = BR(128 + 3)

        self.level3_0 = DownSamplerB(128 + 3, 128) #Downsample Block, feature map size divided 2,   1/8
        self.level3 = nn.ModuleList()
        for i in range(0, q):
            self.level3.append(DilatedParllelResidualBlockB(128 , 128)) # ESPblock
        self.b3 = BR(256)

        self.classifier = C(256, classes, 1, 1)

        :param classes: number of classes in the dataset. Default is 20 for the cityscapes
        :param p: depth multiplier
        :param q: depth multiplier
        
model/ESPNet.py