Eryck Zhou

A super simple BLOG for Artifical Intelligence.

从零复现YOLOv4系列三:Neck部分

01 March 2023

Paper: YOLOv4: Optimal Speed and Accuracy of Object Detection

CBL + 上采样

class Upsample(nn.Module):
    def __init__(self, in_channels, out_channels):
        super(Upsample, self).__init__()
        self.upsample = nn.Sequential(
            CBL(in_channels, out_channels, 1),
            nn.Upsample(scale_factor = 2, mode = 'nearest')
        )
    
    def forward(self, x):
        x = self.upsample(x)
        return x

3 ✖️ CBL

def make_three_conv(filters_list, in_filters):
    m = nn.Sequential(
        CBL(in_filters, filters_list[0], 1),
        CBL(filters_list[0], filters_list[1], 3),
        CBL(filters_list[1], filters_list[0], 1)
    )

    return m

5 ✖️ CBL

def make_five_conv(filters_list, in_filters):
    m = nn.Sequential(
        CBL(in_filters, filters_list[0], 1),
        CBL(filters_list[0], filters_list[1], 3),
        CBL(filters_list[1], filters_list[0], 1),
        CBL(filters_list[0], filters_list[1], 3),
        CBL(filters_list[1], filters_list[0], 1)
    )

    return m

head (CBL + Conv)

def yolo_head(filters_list, in_filters):
    m = nn.Sequential(
        CBL(in_filters, filters_list[0], 3),
        nn.Conv2d(filters_list[0], filters_list[1], 1)
    )

    return m