Exemplo n.º 1
0
    def _define_layers(self):
        if self.back_model:
            self.backbone = nn.Sequential(
                nn.Conv2d(in_channels=3,
                          out_channels=24,
                          kernel_size=5,
                          stride=2,
                          padding=0,
                          bias=True),
                nn.ReLU(inplace=True),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24, stride=2),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 24),
                BlazeBlock(24, 48, stride=2),
                BlazeBlock(48, 48),
                BlazeBlock(48, 48),
                BlazeBlock(48, 48),
                BlazeBlock(48, 48),
                BlazeBlock(48, 48),
                BlazeBlock(48, 48),
                BlazeBlock(48, 48),
                BlazeBlock(48, 96, stride=2),
                BlazeBlock(96, 96),
                BlazeBlock(96, 96),
                BlazeBlock(96, 96),
                BlazeBlock(96, 96),
                BlazeBlock(96, 96),
                BlazeBlock(96, 96),
                BlazeBlock(96, 96),
            )
            self.final = FinalBlazeBlock(96)
            self.classifier_8 = nn.Conv2d(96, 2, 1, bias=True)
            self.classifier_16 = nn.Conv2d(96, 6, 1, bias=True)

            self.regressor_8 = nn.Conv2d(96, 32, 1, bias=True)
            self.regressor_16 = nn.Conv2d(96, 96, 1, bias=True)
        else:
            self.backbone1 = nn.Sequential(
                nn.Conv2d(in_channels=3,
                          out_channels=24,
                          kernel_size=5,
                          stride=2,
                          padding=0,
                          bias=True),
                nn.ReLU(inplace=True),
                BlazeBlock(24, 24),
                BlazeBlock(24, 28),
                BlazeBlock(28, 32, stride=2),
                BlazeBlock(32, 36),
                BlazeBlock(36, 42),
                BlazeBlock(42, 48, stride=2),
                BlazeBlock(48, 56),
                BlazeBlock(56, 64),
                BlazeBlock(64, 72),
                BlazeBlock(72, 80),
                BlazeBlock(80, 88),
            )

            self.backbone2 = nn.Sequential(
                BlazeBlock(88, 96, stride=2),
                BlazeBlock(96, 96),
                BlazeBlock(96, 96),
                BlazeBlock(96, 96),
                BlazeBlock(96, 96),
            )

            self.classifier_8 = nn.Conv2d(88, 2, 1, bias=True)
            self.classifier_16 = nn.Conv2d(96, 6, 1, bias=True)

            self.regressor_8 = nn.Conv2d(88, 32, 1, bias=True)
            self.regressor_16 = nn.Conv2d(96, 96, 1, bias=True)
Exemplo n.º 2
0
    def _define_layers(self):
        self.backbone1 = nn.Sequential(
            nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3, stride=2, padding=0, bias=True),
            nn.ReLU(inplace=True),

            BlazeBlock(32, 32),
            BlazeBlock(32, 32),
            BlazeBlock(32, 32),
            BlazeBlock(32, 32),
            BlazeBlock(32, 32),
            BlazeBlock(32, 32),
            BlazeBlock(32, 32),
            
            BlazeBlock(32, 64, stride=2),
            BlazeBlock(64, 64),
            BlazeBlock(64, 64),
            BlazeBlock(64, 64),
            BlazeBlock(64, 64),
            BlazeBlock(64, 64),
            BlazeBlock(64, 64),
            BlazeBlock(64, 64),

            BlazeBlock(64, 128, stride=2),
            BlazeBlock(128, 128),
            BlazeBlock(128, 128),
            BlazeBlock(128, 128),
            BlazeBlock(128, 128),
            BlazeBlock(128, 128),
            BlazeBlock(128, 128),
            BlazeBlock(128, 128),

        )
        
        self.backbone2 = nn.Sequential(
            BlazeBlock(128, 256, stride=2),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
        )

        self.backbone3 = nn.Sequential(
            BlazeBlock(256, 256, stride=2),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
            BlazeBlock(256, 256),
        )

        self.conv_transpose1 = nn.ConvTranspose2d(in_channels=256, out_channels=256, kernel_size=2, stride=2, padding=0, bias=True)
        self.blaze1 = BlazeBlock(256, 256)

        self.conv_transpose2 = nn.ConvTranspose2d(in_channels=256, out_channels=128, kernel_size=2, stride=2, padding=0, bias=True)
        self.blaze2 = BlazeBlock(128, 128)

        self.classifier_32 = nn.Conv2d(128, 2, 1, bias=True)
        self.classifier_16 = nn.Conv2d(256, 2, 1, bias=True)
        self.classifier_8 = nn.Conv2d(256, 6, 1, bias=True)
        
        self.regressor_32 = nn.Conv2d(128, 36, 1, bias=True)
        self.regressor_16 = nn.Conv2d(256, 36, 1, bias=True)
        self.regressor_8 = nn.Conv2d(256, 108, 1, bias=True)
Exemplo n.º 3
0
    def _define_layers(self):
        self.backbone1 = nn.Sequential(
            nn.Conv2d(in_channels=3, out_channels=48, kernel_size=5, stride=1, padding=2, bias=True),
            nn.ReLU(inplace=True),

            BlazeBlock(48, 48, 5),
            BlazeBlock(48, 48, 5),
            BlazeBlock(48, 48, 5),
            BlazeBlock(48, 64, 5, 2, skip_proj=True),

            BlazeBlock(64, 64, 5),
            BlazeBlock(64, 64, 5),
            BlazeBlock(64, 64, 5),
            BlazeBlock(64, 96, 5, 2, skip_proj=True),

            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 128, 5, 2, skip_proj=True),

            BlazeBlock(128, 128, 5),
            BlazeBlock(128, 128, 5),
            BlazeBlock(128, 128, 5),
            BlazeBlock(128, 128, 5),
            BlazeBlock(128, 128, 5),
            BlazeBlock(128, 128, 5),
            BlazeBlock(128, 128, 5),

        )

        self.backbone2 = nn.Sequential(
            BlazeBlock(128, 256, 5, 2, skip_proj=True),
            BlazeBlock(256, 256, 5),
            BlazeBlock(256, 256, 5),
            BlazeBlock(256, 256, 5),
            BlazeBlock(256, 256, 5),
            BlazeBlock(256, 256, 5),
            BlazeBlock(256, 256, 5),

        )

        self.classifier_8 = nn.Conv2d(128, 2, 1, bias=True)
        self.classifier_16 = nn.Conv2d(256, 6, 1, bias=True)

        self.regressor_8 = nn.Conv2d(128, 24, 1, bias=True)
        self.regressor_16 = nn.Conv2d(256, 72, 1, bias=True)
Exemplo n.º 4
0
    def _define_layers(self):
        self.backbone1 = nn.Sequential(
            nn.Conv2d(in_channels=3,
                      out_channels=24,
                      kernel_size=3,
                      stride=2,
                      padding=0,
                      bias=True),
            nn.ReLU(inplace=True),
            BlazeBlock(24, 24, 5),
            BlazeBlock(24, 24, 5),
            BlazeBlock(24, 48, 5, 2),
        )

        self.backbone2 = nn.Sequential(
            BlazeBlock(48, 48, 5),
            BlazeBlock(48, 48, 5),
            BlazeBlock(48, 96, 5, 2),
        )

        self.backbone3 = nn.Sequential(
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5, 2),
        )

        self.backbone4 = nn.Sequential(
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5, 2),
        )

        self.blaze5 = BlazeBlock(96, 96, 5)
        self.blaze6 = BlazeBlock(96, 96, 5)
        self.conv7 = nn.Conv2d(96, 48, 1, bias=True)

        self.backbone8 = nn.Sequential(
            BlazeBlock(48, 48, 5),
            BlazeBlock(48, 48, 5),
            BlazeBlock(48, 48, 5),
            BlazeBlock(48, 48, 5),
            BlazeBlock(48, 96, 5, 2),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 96, 5),
            BlazeBlock(96, 288, 5, 2),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5, 2),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5, 2),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5, 2),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
            BlazeBlock(288, 288, 5),
        )

        self.hand_flag = nn.Conv2d(288, 1, 2, bias=True)
        self.handed = nn.Conv2d(288, 1, 2, bias=True)
        self.landmarks = nn.Conv2d(288, 63, 2, bias=True)
Exemplo n.º 5
0
    def _define_layers(self):
        self.backbone1 = nn.Sequential(
            nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, stride=2, padding=0, bias=True),
            nn.PReLU(16),

            BlazeBlock(16, 16, 3, act='prelu'),
            BlazeBlock(16, 16, 3, act='prelu'),
            BlazeBlock(16, 32, 3, 2, act='prelu'),

            BlazeBlock(32, 32, 3, act='prelu'),
            BlazeBlock(32, 32, 3, act='prelu'),
            BlazeBlock(32, 64, 3, 2, act='prelu'),

            BlazeBlock(64, 64, 3, act='prelu'),
            BlazeBlock(64, 64, 3, act='prelu'),
            BlazeBlock(64, 128, 3, 2, act='prelu'),

            BlazeBlock(128, 128, 3, act='prelu'),
            BlazeBlock(128, 128, 3, act='prelu'),
            BlazeBlock(128, 128, 3, 2, act='prelu'),

            BlazeBlock(128, 128, 3, act='prelu'),
            BlazeBlock(128, 128, 3, act='prelu'),
        )


        self.backbone2a = nn.Sequential(
            BlazeBlock(128, 128, 3, 2, act='prelu'),
            BlazeBlock(128, 128, 3, act='prelu'),
            BlazeBlock(128, 128, 3, act='prelu'),
            nn.Conv2d(128, 32, 1, padding=0, bias=True),
            nn.PReLU(32),
            BlazeBlock(32, 32, 3, act='prelu'),
            nn.Conv2d(32, 1404, 3, padding=0, bias=True)
        )

        self.backbone2b = nn.Sequential(
            BlazeBlock(128, 128, 3, 2, act='prelu'),
            nn.Conv2d(128, 32, 1, padding=0, bias=True),
            nn.PReLU(32),
            BlazeBlock(32, 32, 3, act='prelu'),
            nn.Conv2d(32, 1, 3, padding=0, bias=True)
        )
Exemplo n.º 6
0
    def _define_layers(self):
        self.backbone1 = nn.Sequential(
            nn.Conv2d(in_channels=3,
                      out_channels=24,
                      kernel_size=3,
                      stride=2,
                      padding=0,
                      bias=True),
            nn.ReLU(inplace=True),
            BlazeBlock(24, 24, 3),
            BlazeBlock(24, 24, 3),
        )

        self.backbone2 = nn.Sequential(
            BlazeBlock(24, 48, 3, 2),
            BlazeBlock(48, 48, 3),
            BlazeBlock(48, 48, 3),
            BlazeBlock(48, 48, 3),
        )

        self.backbone3 = nn.Sequential(
            BlazeBlock(48, 96, 3, 2),
            BlazeBlock(96, 96, 3),
            BlazeBlock(96, 96, 3),
            BlazeBlock(96, 96, 3),
            BlazeBlock(96, 96, 3),
        )

        self.backbone4 = nn.Sequential(
            BlazeBlock(96, 192, 3, 2),
            BlazeBlock(192, 192, 3),
            BlazeBlock(192, 192, 3),
            BlazeBlock(192, 192, 3),
            BlazeBlock(192, 192, 3),
            BlazeBlock(192, 192, 3),
        )

        self.backbone5 = nn.Sequential(
            BlazeBlock(192, 288, 3, 2),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
        )

        self.up1 = nn.Sequential(
            nn.Conv2d(288, 288, 3, 1, 1, groups=288, bias=True),
            nn.Conv2d(288, 48, 1, bias=True),
            nn.ReLU(True),
        )

        self.up2 = nn.Sequential(
            nn.Conv2d(192, 192, 3, 1, 1, groups=192, bias=True),
            nn.Conv2d(192, 48, 1, bias=True),
            nn.ReLU(True),
        )

        self.up3 = nn.Sequential(
            nn.Conv2d(96, 96, 3, 1, 1, groups=96, bias=True),
            nn.Conv2d(96, 48, 1, bias=True),
            nn.ReLU(True),
        )

        self.up4 = nn.Sequential(
            nn.Conv2d(48, 48, 3, 1, 1, groups=48, bias=True),
            nn.Conv2d(48, 48, 1, bias=True),
            nn.ReLU(True),
        )

        self.block1 = nn.Sequential(
            BlazeBlock(48, 96, 3, 2),
            BlazeBlock(96, 96, 3),
            BlazeBlock(96, 96, 3),
            BlazeBlock(96, 96, 3),
            BlazeBlock(96, 96, 3),
        )

        self.up5 = nn.Sequential(
            nn.Conv2d(96, 96, 3, 1, 1, groups=96, bias=True),
            nn.Conv2d(96, 96, 1, bias=True),
            nn.ReLU(True),
        )

        self.block2 = nn.Sequential(
            BlazeBlock(96, 192, 3, 2),
            BlazeBlock(192, 192, 3),
            BlazeBlock(192, 192, 3),
            BlazeBlock(192, 192, 3),
            BlazeBlock(192, 192, 3),
            BlazeBlock(192, 192, 3),
        )

        self.up6 = nn.Sequential(
            nn.Conv2d(192, 192, 3, 1, 1, groups=192, bias=True),
            nn.Conv2d(192, 192, 1, bias=True),
            nn.ReLU(True),
        )

        self.block3 = nn.Sequential(
            BlazeBlock(192, 288, 3, 2),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
        )

        self.up7 = nn.Sequential(
            nn.Conv2d(288, 288, 3, 1, 1, groups=288, bias=True),
            nn.Conv2d(288, 288, 1, bias=True),
            nn.ReLU(True),
        )

        self.block4 = nn.Sequential(
            BlazeBlock(288, 288, 3, 2),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3, 2),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
            BlazeBlock(288, 288, 3),
        )

        self.up8 = nn.Sequential(
            nn.Conv2d(48, 48, 3, 1, 1, groups=48, bias=True),
            nn.Conv2d(48, 8, 1, bias=True),
            nn.ReLU(True),
        )

        self.up9 = nn.Sequential(
            nn.Conv2d(24, 24, 3, 1, 1, groups=24, bias=True),
            nn.Conv2d(24, 8, 1, bias=True),
            nn.ReLU(True),
        )

        self.block5 = BlazeBlock(288, 288, 3)

        self.block6 = nn.Sequential(
            nn.Conv2d(8, 8, 3, 1, 1, groups=8, bias=True),
            nn.Conv2d(8, 8, 1, bias=True),
            nn.ReLU(True),
        )

        self.flag = nn.Conv2d(288, 1, 2, bias=True)
        self.segmentation = nn.Conv2d(8, 1, 3, padding=1, bias=True)
        self.landmarks = nn.Conv2d(288, 124, 2, bias=True)