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)
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)
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)
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)
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) )
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)