Exemplo n.º 1
0
    def __init__(self, in_channels, out_channels, downsample=False):
        super(ResBlock2, self).__init__()

        if downsample:
            self.downsample = Conv2dBN(int(in_channels / 2),
                                       out_channels,
                                       1,
                                       stride=2)
        else:
            self.downsample = None

        self.conv_1 = Conv2dBN(in_channels, out_channels, 3, padding=1)
        self.conv_2 = Conv2dBN(out_channels, out_channels, 3, padding=1)
Exemplo n.º 2
0
    def __init__(self, in_channels, n_classes):
        super(ResNet34, self).__init__()

        self.conv_1 = Conv2dBN(in_channels, 64, 7, stride=2, padding=1)

        self.block_21 = ResBlock2(64, 64)
        self.block_22 = ResBlock2(64, 64)
        self.block_23 = ResBlock2(64, 64)

        self.block_31 = ResBlock2(128, 128, downsample=True)
        self.block_32 = ResBlock2(128, 128)
        self.block_33 = ResBlock2(128, 128)
        self.block_34 = ResBlock2(128, 128)

        self.block_41 = ResBlock2(256, 256, downsample=True)
        self.block_42 = ResBlock2(256, 256)
        self.block_43 = ResBlock2(256, 256)
        self.block_44 = ResBlock2(256, 256)
        self.block_45 = ResBlock2(256, 256)
        self.block_46 = ResBlock2(256, 256)

        self.block_51 = ResBlock2(512, 512, downsample=True)
        self.block_52 = ResBlock2(512, 512)
        self.block_53 = ResBlock2(512, 512)

        self.dense_1 = Linear(512, n_classes)
Exemplo n.º 3
0
    def __init__(self, in_channels, n_classes):
        super(ResNet50, self).__init__()

        self.conv_1 = Conv2dBN(in_channels, 64, 7, stride=2, padding=3)

        self.block_21 = ResBlock3(64, 64, 256)
        self.block_22 = ResBlock3(256, 64, 256)
        self.block_23 = ResBlock3(256, 64, 256)

        self.block_31 = ResBlock3(256, 128, 512, downsample=True)
        self.block_32 = ResBlock3(512, 128, 512)
        self.block_33 = ResBlock3(512, 128, 512)
        self.block_34 = ResBlock3(512, 128, 512)

        self.block_41 = ResBlock3(512, 256, 1024, downsample=True)
        self.block_42 = ResBlock3(1024, 256, 1024)
        self.block_43 = ResBlock3(1024, 256, 1024)
        self.block_44 = ResBlock3(1024, 256, 1024)
        self.block_45 = ResBlock3(1024, 256, 1024)
        self.block_46 = ResBlock3(1024, 256, 1024)

        self.block_51 = ResBlock3(1024, 512, 2048, downsample=True)
        self.block_52 = ResBlock3(2048, 512, 2048)
        self.block_53 = ResBlock3(2048, 512, 2048)

        self.dense_1 = Linear(2048, n_classes)
Exemplo n.º 4
0
    def __init__(self, in_channels, n_classes):
        super(ResNet152, self).__init__()

        self.conv_1 = Conv2dBN(in_channels, 64, 7, stride=2, padding=1)

        self.block_21 = ResBlock3(64, 64, 256)
        self.block_22 = ResBlock3(256, 64, 256)
        self.block_23 = ResBlock3(256, 64, 256)

        self.block_31 = ResBlock3(256, 128, 512, downsample=True)
        self.block_32 = ResBlock3(512, 128, 512)
        self.block_33 = ResBlock3(512, 128, 512)
        self.block_34 = ResBlock3(512, 128, 512)
        self.block_35 = ResBlock3(512, 128, 512)
        self.block_36 = ResBlock3(512, 128, 512)
        self.block_37 = ResBlock3(512, 128, 512)
        self.block_38 = ResBlock3(512, 128, 512)

        self.block_41 = ResBlock3(512, 256, 1024, downsample=True)
        self.block_42 = ResBlock3(1024, 256, 1024)
        self.block_43 = ResBlock3(1024, 256, 1024)
        self.block_44 = ResBlock3(1024, 256, 1024)
        self.block_45 = ResBlock3(1024, 256, 1024)
        self.block_46 = ResBlock3(1024, 256, 1024)
        self.block_47 = ResBlock3(1024, 256, 1024)
        self.block_48 = ResBlock3(1024, 256, 1024)
        self.block_49 = ResBlock3(1024, 256, 1024)
        self.block_410 = ResBlock3(1024, 256, 1024)
        self.block_411 = ResBlock3(1024, 256, 1024)
        self.block_412 = ResBlock3(1024, 256, 1024)
        self.block_413 = ResBlock3(1024, 256, 1024)
        self.block_414 = ResBlock3(1024, 256, 1024)
        self.block_415 = ResBlock3(1024, 256, 1024)
        self.block_416 = ResBlock3(1024, 256, 1024)
        self.block_417 = ResBlock3(1024, 256, 1024)
        self.block_418 = ResBlock3(1024, 256, 1024)
        self.block_419 = ResBlock3(1024, 256, 1024)
        self.block_420 = ResBlock3(1024, 256, 1024)
        self.block_421 = ResBlock3(1024, 256, 1024)
        self.block_422 = ResBlock3(1024, 256, 1024)
        self.block_423 = ResBlock3(1024, 256, 1024)
        self.block_424 = ResBlock3(1024, 256, 1024)
        self.block_425 = ResBlock3(1024, 256, 1024)
        self.block_426 = ResBlock3(1024, 256, 1024)
        self.block_427 = ResBlock3(1024, 256, 1024)
        self.block_428 = ResBlock3(1024, 256, 1024)
        self.block_429 = ResBlock3(1024, 256, 1024)
        self.block_430 = ResBlock3(1024, 256, 1024)
        self.block_431 = ResBlock3(1024, 256, 1024)
        self.block_432 = ResBlock3(1024, 256, 1024)
        self.block_433 = ResBlock3(1024, 256, 1024)
        self.block_434 = ResBlock3(1024, 256, 1024)
        self.block_435 = ResBlock3(1024, 256, 1024)
        self.block_436 = ResBlock3(1024, 256, 1024)

        self.block_51 = ResBlock3(1024, 512, 2048, downsample=True)
        self.block_52 = ResBlock3(2048, 512, 2048)
        self.block_53 = ResBlock3(2048, 512, 2048)

        self.dense_1 = Linear(2048, n_classes)
Exemplo n.º 5
0
    def __init__(self,
                 in_channels,
                 channels_1x1,
                 channels_3x3r,
                 channels_3x3,
                 channels_3x3dr,
                 channels_3x3d,
                 channels_poolr,
                 stride=1,
                 pool_type='max'):
        super(InceptionModuleBN, self).__init__()

        self.conv_1x1 = Conv2dBN(in_channels, channels_1x1, 1, stride=stride)
        self.conv_3x3r = Conv2dBN(in_channels, channels_3x3r, 1)
        self.conv_3x3 = Conv2dBN(channels_3x3r,
                                 channels_3x3,
                                 3,
                                 padding=1,
                                 stride=stride)
        self.conv_3x3dr = Conv2dBN(in_channels, channels_3x3dr, 1)
        self.conv_3x3d1 = Conv2dBN(channels_3x3dr, channels_3x3d, 3, padding=1)
        self.conv_3x3d2 = Conv2dBN(channels_3x3d,
                                   channels_3x3d,
                                   3,
                                   padding=1,
                                   stride=stride)
        self.poolr = Conv2dBN(in_channels, channels_poolr, 1)
        self.stride = stride
        self.pool_type = pool_type
Exemplo n.º 6
0
    def __init__(self,
                 in_channels,
                 mid_channels,
                 out_channels,
                 downsample=False):
        super(ResBlock3, self).__init__()

        if downsample:
            self.downsample = Conv2dBN(in_channels, mid_channels, 1, stride=2)
            self.conv_1 = Conv2dBN(mid_channels, mid_channels, 1)
            self.res_conv = Conv2dBN(mid_channels, out_channels, 1)
        else:
            self.downsample = None
            self.conv_1 = Conv2dBN(in_channels, mid_channels, 1)
            self.res_conv = Conv2dBN(in_channels, out_channels, 1)

        self.conv_2 = Conv2dBN(mid_channels, mid_channels, 3, padding=1)
        self.conv_3 = Conv2dBN(mid_channels, out_channels, 1)
Exemplo n.º 7
0
    def __init__(self, in_channels, data_shape):
        super(TinyYolo, self).__init__()

        self.conv_1 = Conv2dBN(in_channels, 16, 3, padding=1)
        data_shape /= 2

        self.conv_2 = Conv2dBN(16, 32, 3, padding=1)
        data_shape /= 2

        self.conv_3 = Conv2dBN(32, 64, 3, padding=1)
        data_shape /= 2

        self.conv_4 = Conv2dBN(64, 128, 3, padding=1)
        data_shape /= 2

        self.conv_5 = Conv2dBN(128, 256, 3, padding=1)
        data_shape /= 2

        self.conv_6 = Conv2dBN(256, 512, 3, padding=1)
        data_shape /= 2

        self.conv_7 = Conv2dBN(512, 1024, 3, padding=1)
        self.conv_8 = Conv2dBN(1024, 256, 3, padding=1)
        self.dense_1 = Linear(data_shape.prod() * 256, 1470)
Exemplo n.º 8
0
    def __init__(self, in_channels, n_classes, data_size):
        super(InceptionBN, self).__init__()

        self.conv_1 = Conv2dBN(in_channels, 64, 7, stride=2, padding=3)

        self.conv_2 = Conv2dBN(64, 192, 1)
        self.conv_3 = Conv2dBN(192, 192, 3, padding=1)

        self.i3a = InceptionModuleBN(192,
                                     64,
                                     64,
                                     64,
                                     64,
                                     96,
                                     32,
                                     pool_type='avg')
        self.i3b = InceptionModuleBN(256,
                                     64,
                                     64,
                                     96,
                                     64,
                                     96,
                                     64,
                                     pool_type='avg')
        self.i3c = InceptionModuleBN(320, 64, 128, 160, 64, 96, 64, stride=2)

        self.i4a = InceptionModuleBN(576,
                                     224,
                                     64,
                                     96,
                                     96,
                                     128,
                                     128,
                                     pool_type='avg')
        self.i4b = InceptionModuleBN(576,
                                     192,
                                     96,
                                     128,
                                     96,
                                     128,
                                     128,
                                     pool_type='avg')
        self.i4c = InceptionModuleBN(576,
                                     160,
                                     128,
                                     160,
                                     128,
                                     160,
                                     128,
                                     pool_type='avg')
        self.i4d = InceptionModuleBN(608,
                                     96,
                                     128,
                                     192,
                                     160,
                                     192,
                                     128,
                                     pool_type='avg')
        self.i4e = InceptionModuleBN(608,
                                     256,
                                     128,
                                     192,
                                     192,
                                     256,
                                     128,
                                     stride=2)

        self.i5a = InceptionModuleBN(1056,
                                     352,
                                     192,
                                     320,
                                     160,
                                     224,
                                     128,
                                     pool_type='avg')
        self.i5b = InceptionModuleBN(1024, 352, 192, 320, 160, 224, 128)

        self.fc1 = Linear(1024, 1000)
Exemplo n.º 9
0
    def __init__(self, in_channels, channels_1x1, channels_3x3, channels_5x5):
        super(InceptionModule, self).__init__()

        self.conv_1x1 = Conv2dBN(in_channels, channels_1x1, 1)
        self.conv_3x3 = Conv2dBN(in_channels, channels_3x3, 3, padding=1)
        self.conv_5x5 = Conv2dBN(in_channels, channels_5x5, 5, padding=2)
Exemplo n.º 10
0
    def __init__(self, in_channels, data_shape):
        super(Yolo, self).__init__()

        # Block 1
        conv_1 = Conv2dBN(in_channels, 64, 7, stride=2, padding=1)

        # Block 2
        conv_2 = Conv2dBN(64, 192, 3, padding=1)

        # Block 3
        conv_3 = Conv2dBN(192, 128, 1, padding=1)
        conv_4 = Conv2dBN(128, 256, 3, padding=1)
        conv_5 = Conv2dBN(256, 256, 1, padding=1)
        conv_6 = Conv2dBN(256, 512, 3, padding=1)

        # Block 4
        conv_7 = Conv2dBN(512, 256, 1, padding=1)
        conv_8 = Conv2dBN(256, 512, 3, padding=1)
        conv_9 = Conv2dBN(512, 256, 1, padding=1)
        conv_10 = Conv2dBN(256, 512, 3, padding=1)
        conv_11 = Conv2dBN(512, 256, 1, padding=1)
        conv_12 = Conv2dBN(256, 512, 3, padding=1)
        conv_13 = Conv2dBN(512, 256, 1, padding=1)
        conv_14 = Conv2dBN(256, 512, 3, padding=1)
        conv_15 = Conv2dBN(512, 512, 1, padding=1)
        conv_16 = Conv2dBN(1024, 512, 3, padding=1)

        # Block 5
        conv_17 = Conv2dBN(512, 1024, 3, padding=1)
        conv_18 = Conv2dBN(1024, 512, 3, padding=1)
        conv_19 = Conv2dBN(512, 1024, 3, padding=1)
        conv_20 = Conv2dBN(1024, 512, 3, padding=1)

        # Classification block
        dense_classify = Linear(512, n_classes)

        # Detection block
        conv_21 = Conv2dBN(1024, 1024, 3, padding=1)
        conv_22 = Conv2dBN(1024, 1024, 3, stride=2, padding=1)
        conv_23 = Conv2dBN(1024, 1024, 3, padding=1)
        conv_24 = Conv2dBN(1024, 1024, 3, padding=1)
        local_1 = Conv2dLocal(7, 7, 1024, 256, 3, padding=1)
        dense_detect = Linear