# Codeblock 13a class YOLOv3(nn.Module): def __init__(self): super().__init__() ############################################### # Backbone initialization. self.darknet53 = Darknet53() #(1) ############################################### # For 13x13 output. self.conv0 = Convolutional(in_channels=1024, out_channels=512, kernel_size=1) self.conv1 = Convolutional(in_channels=512, out_channels=1024, kernel_size=3) self.conv2 = Convolutional(in_channels=1024, out_channels=512, kernel_size=1) self.conv3 = Convolutional(in_channels=512, out_channels=1024, kernel_size=3) self.conv4 = Convolutional(in_channels=1024, out_channels=512, kernel_size=1) self.detection_head_large_obj = DetectionHead(num_channels=512) ############################################### # For 26x26 output. self.conv5 = Convolutional(in_channels=512, out_channels=256, kernel_size=1) #(2) self.upsample0 = nn.Upsample(scale_factor=2) #(3) self.conv6 = Convolutional(in_channels=768, out_channels=256, kernel_size=1) self.conv7 = Convolutional(in_channels=256, out_channels=512, kernel_size=3) self.conv8 = Convolutional(in_channels=512, out_channels=256, kernel_size=1) self.conv9 = Convolutional(in_channels=256, out_channels=512, kernel_size=3) self.conv10 = Convolutional(in_channels=512, out_channels=256, kernel_size=1) self.detection_head_medium_obj = DetectionHead(num_channels=256) ############################################### # For 52x52 output. self.conv11 = Convolutional(in_channels=256, out_channels=128, kernel_size=1) #(4) self.upsample1 = nn.Upsample(scale_factor=2) #(5) self.conv12 = Convolutional(in_channels=384, out_channels=128, kernel_size=1) self.conv13 = Convolutional(in_channels=128, out_channels=256, kernel_size=3) self.conv14 = Convolutional(in_channels=256, out_channels=128, kernel_size=1) self.conv15 = Convolutional(in_channels=128, out_channels=256, kernel_size=3) self.conv16 = Convolutional(in_channels=256, out_channels=128, kernel_size=1) self.detection_head_small_obj = DetectionHead(num_channels=128)