Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PoseNet():
- def __init__(self, training=True):
- img_input = Input(shape=(368, 368, 3))
- if training:
- mask = Input(shape=(46, 46, 1))
- #VGG
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(img_input)
- self.x = Conv2D(64, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv1_1")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(64, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv1_2")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.x)
- self.x = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv2_1")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv2_2")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.x)
- self.x = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv3_1")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv3_2")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv3_3")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv3_4")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.x)
- self.x = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(512, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv4_1")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(512, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv4_2")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv4_3_CPM")(self.x)
- self.x = Activation('relu')(self.x)
- self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
- self.branching_stage_1 = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv4_4_CPM")(self.x)
- #Stage 1, Heat Maps branch:
- self.branching_1_hm = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_stage_1)
- self.branching_1_hm = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_1_CPM_L1")(self.branching_1_hm)
- self.branching_1_hm = Activation('relu')(self.branching_1_hm)
- self.branching_1_hm = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_1_hm)
- self.branching_1_hm = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_2_CPM_L1")(self.branching_1_hm)
- self.branching_1_hm = Activation('relu')(self.branching_1_hm)
- self.branching_1_hm = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_1_hm)
- self.branching_1_hm = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_3_CPM_L1")(self.branching_1_hm)
- self.branching_1_hm = Activation('relu')(self.branching_1_hm)
- self.branching_1_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_1_hm)
- self.branching_1_hm = Conv2D(512, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_4_CPM_L1")(self.branching_1_hm)
- self.branching_1_hm = Activation('relu')(self.branching_1_hm)
- self.branching_1_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_1_hm)
- self.branching_1_hm = Conv2D(38, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_5_CPM_L1")(self.branching_1_hm)
- #Stage 1, PAF branch:
- self.branching_1_paf = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_stage_1)
- self.branching_1_paf = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_1_CPM_L2")(self.branching_1_paf)
- self.branching_1_paf = Activation('relu')(self.branching_1_paf)
- self.branching_1_paf = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_1_paf)
- self.branching_1_paf = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_2_CPM_L2")(self.branching_1_paf)
- self.branching_1_paf = Activation('relu')(self.branching_1_paf)
- self.branching_1_paf = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_1_paf)
- self.branching_1_paf = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_3_CPM_L2")(self.branching_1_paf)
- self.branching_1_paf = Activation('relu')(self.branching_1_paf)
- self.branching_1_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_1_paf)
- self.branching_1_paf = Conv2D(512, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_4_CPM_L2")(self.branching_1_paf)
- self.branching_1_paf = Activation('relu')(self.branching_1_paf)
- self.branching_1_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_1_paf)
- self.branching_1_paf = Conv2D(19, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv5_5_CPM_L2")(self.branching_1_paf)
- #Stage 2, concat:
- self.branching_stage_2 = concatenate([self.branching_stage_1, self.branching_1_hm, self.branching_1_paf])
- if training:
- self.branching_stage_2 = Multiply()([self.branching_stage_2,mask])
- #Stage 2, Heat Maps branch:
- self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_2)
- self.branching_2_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage2_L1")(self.branching_2_hm)
- self.branching_2_hm = Activation('relu')(self.branching_2_hm)
- self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_hm)
- self.branching_2_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage2_L1")(self.branching_2_hm)
- self.branching_2_hm = Activation('relu')(self.branching_2_hm)
- self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_hm)
- self.branching_2_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage2_L1")(self.branching_2_hm)
- self.branching_2_hm = Activation('relu')(self.branching_2_hm)
- self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_hm)
- self.branching_2_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage2_L1")(self.branching_2_hm)
- self.branching_2_hm = Activation('relu')(self.branching_2_hm)
- self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_hm)
- self.branching_2_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage2_L1")(self.branching_2_hm)
- self.branching_2_hm = Activation('relu')(self.branching_2_hm)
- self.branching_2_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_2_hm)
- self.branching_2_hm = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage2_L1")(self.branching_2_hm)
- self.branching_2_hm = Activation('relu')(self.branching_2_hm)
- self.branching_2_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_2_hm)
- self.branching_2_hm = Conv2D(38, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage2_L1")(self.branching_2_hm)
- #Stage 2, PAF branch:
- self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_2)
- self.branching_2_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage2_L2")(self.branching_2_paf)
- self.branching_2_paf = Activation('relu')(self.branching_2_paf)
- self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_paf)
- self.branching_2_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage2_L2")(self.branching_2_paf)
- self.branching_2_paf = Activation('relu')(self.branching_2_paf)
- self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_paf)
- self.branching_2_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage2_L2")(self.branching_2_paf)
- self.branching_2_paf = Activation('relu')(self.branching_2_paf)
- self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_paf)
- self.branching_2_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage2_L2")(self.branching_2_paf)
- self.branching_2_paf = Activation('relu')(self.branching_2_paf)
- self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_paf)
- self.branching_2_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage2_L2")(self.branching_2_paf)
- self.branching_2_paf = Activation('relu')(self.branching_2_paf)
- self.branching_2_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_2_paf)
- self.branching_2_paf = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage2_L2")(self.branching_2_paf)
- self.branching_2_paf = Activation('relu')(self.branching_2_paf)
- self.branching_2_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_2_paf)
- self.branching_2_paf = Conv2D(19, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage2_L2")(self.branching_2_paf)
- #Stage 3, concat:
- self.branching_stage_3 = concatenate([self.branching_stage_1, self.branching_2_hm, self.branching_2_paf])
- if training:
- self.branching_stage_3 = Multiply()([self.branching_stage_3,mask])
- #Stage 3, Heat Maps branch:
- self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_3)
- self.branching_3_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage3_L1")(self.branching_3_hm)
- self.branching_3_hm = Activation('relu')(self.branching_3_hm)
- self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_hm)
- self.branching_3_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage3_L1")(self.branching_3_hm)
- self.branching_3_hm = Activation('relu')(self.branching_3_hm)
- self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_hm)
- self.branching_3_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage3_L1")(self.branching_3_hm)
- self.branching_3_hm = Activation('relu')(self.branching_3_hm)
- self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_hm)
- self.branching_3_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage3_L1")(self.branching_3_hm)
- self.branching_3_hm = Activation('relu')(self.branching_3_hm)
- self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_hm)
- self.branching_3_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage3_L1")(self.branching_3_hm)
- self.branching_3_hm = Activation('relu')(self.branching_3_hm)
- self.branching_3_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_3_hm)
- self.branching_3_hm = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage3_L1")(self.branching_3_hm)
- self.branching_3_hm = Activation('relu')(self.branching_3_hm)
- self.branching_3_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_3_hm)
- self.branching_3_hm = Conv2D(38, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage3_L1")(self.branching_3_hm)
- #Stage 3, PAF branch:
- self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_3)
- self.branching_3_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage3_L2")(self.branching_3_paf)
- self.branching_3_paf = Activation('relu')(self.branching_3_paf)
- self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_paf)
- self.branching_3_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage3_L2")(self.branching_3_paf)
- self.branching_3_paf = Activation('relu')(self.branching_3_paf)
- self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_paf)
- self.branching_3_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage3_L2")(self.branching_3_paf)
- self.branching_3_paf = Activation('relu')(self.branching_3_paf)
- self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_paf)
- self.branching_3_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage3_L2")(self.branching_3_paf)
- self.branching_3_paf = Activation('relu')(self.branching_3_paf)
- self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_paf)
- self.branching_3_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage3_L2")(self.branching_3_paf)
- self.branching_3_paf = Activation('relu')(self.branching_3_paf)
- self.branching_3_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_3_paf)
- self.branching_3_paf = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage3_L2")(self.branching_3_paf)
- self.branching_3_paf = Activation('relu')(self.branching_3_paf)
- self.branching_3_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_3_paf)
- self.branching_3_paf = Conv2D(19, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage3_L2")(self.branching_3_paf)
- #Stage 4, concat:
- self.branching_stage_4 = concatenate([self.branching_stage_1, self.branching_3_hm, self.branching_3_paf])
- if training:
- self.branching_stage_4 = Multiply()([self.branching_stage_4,mask])
- #Stage 4, Heat Maps branch:
- self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_4)
- self.branching_4_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage4_L1")(self.branching_4_hm)
- self.branching_4_hm = Activation('relu')(self.branching_4_hm)
- self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_hm)
- self.branching_4_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage4_L1")(self.branching_4_hm)
- self.branching_4_hm = Activation('relu')(self.branching_4_hm)
- self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_hm)
- self.branching_4_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage4_L1")(self.branching_4_hm)
- self.branching_4_hm = Activation('relu')(self.branching_4_hm)
- self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_hm)
- self.branching_4_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage4_L1")(self.branching_4_hm)
- self.branching_4_hm = Activation('relu')(self.branching_4_hm)
- self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_hm)
- self.branching_4_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage4_L1")(self.branching_4_hm)
- self.branching_4_hm = Activation('relu')(self.branching_4_hm)
- self.branching_4_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_4_hm)
- self.branching_4_hm = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage4_L1")(self.branching_4_hm)
- self.branching_4_hm = Activation('relu')(self.branching_4_hm)
- self.branching_4_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_4_hm)
- self.branching_4_hm = Conv2D(38, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage4_L1")(self.branching_4_hm)
- #Stage 3, PAF branch:
- self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_4)
- self.branching_4_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage4_L2")(self.branching_4_paf)
- self.branching_4_paf = Activation('relu')(self.branching_4_paf)
- self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_paf)
- self.branching_4_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage4_L2")(self.branching_4_paf)
- self.branching_4_paf = Activation('relu')(self.branching_4_paf)
- self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_paf)
- self.branching_4_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage4_L2")(self.branching_4_paf)
- self.branching_4_paf = Activation('relu')(self.branching_4_paf)
- self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_paf)
- self.branching_4_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage4_L2")(self.branching_4_paf)
- self.branching_4_paf = Activation('relu')(self.branching_4_paf)
- self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_paf)
- self.branching_4_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage4_L2")(self.branching_4_paf)
- self.branching_4_paf = Activation('relu')(self.branching_4_paf)
- self.branching_4_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_4_paf)
- self.branching_4_paf = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage4_L2")(self.branching_4_paf)
- self.branching_4_paf = Activation('relu')(self.branching_4_paf)
- self.branching_4_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_4_paf)
- self.branching_4_paf = Conv2D(19, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage4_L2")(self.branching_4_paf)
- #Stage 5, concat:
- self.branching_stage_5 = concatenate([self.branching_stage_1, self.branching_4_hm, self.branching_4_paf])
- if training:
- self.branching_stage_5 = Multiply()([self.branching_stage_5,mask])
- #Stage 5, Heat Maps branch:
- self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_5)
- self.branching_5_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage5_L1")(self.branching_5_hm)
- self.branching_5_hm = Activation('relu')(self.branching_5_hm)
- self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_hm)
- self.branching_5_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage5_L1")(self.branching_5_hm)
- self.branching_5_hm = Activation('relu')(self.branching_5_hm)
- self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_hm)
- self.branching_5_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage5_L1")(self.branching_5_hm)
- self.branching_5_hm = Activation('relu')(self.branching_5_hm)
- self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_hm)
- self.branching_5_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage5_L1")(self.branching_5_hm)
- self.branching_5_hm = Activation('relu')(self.branching_5_hm)
- self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_hm)
- self.branching_5_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage5_L1")(self.branching_5_hm)
- self.branching_5_hm = Activation('relu')(self.branching_5_hm)
- self.branching_5_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_5_hm)
- self.branching_5_hm = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage5_L1")(self.branching_5_hm)
- self.branching_5_hm = Activation('relu')(self.branching_5_hm)
- self.branching_5_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_5_hm)
- self.branching_5_hm = Conv2D(38, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage5_L1")(self.branching_5_hm)
- #Stage 5, PAF branch:
- self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_5)
- self.branching_5_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage5_L2")(self.branching_5_paf)
- self.branching_5_paf = Activation('relu')(self.branching_5_paf)
- self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_paf)
- self.branching_5_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage5_L2")(self.branching_5_paf)
- self.branching_5_paf = Activation('relu')(self.branching_5_paf)
- self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_paf)
- self.branching_5_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage5_L2")(self.branching_5_paf)
- self.branching_5_paf = Activation('relu')(self.branching_5_paf)
- self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_paf)
- self.branching_5_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage5_L2")(self.branching_5_paf)
- self.branching_5_paf = Activation('relu')(self.branching_5_paf)
- self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_paf)
- self.branching_5_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage5_L2")(self.branching_5_paf)
- self.branching_5_paf = Activation('relu')(self.branching_5_paf)
- self.branching_5_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_5_paf)
- self.branching_5_paf = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage5_L2")(self.branching_5_paf)
- self.branching_5_paf = Activation('relu')(self.branching_5_paf)
- self.branching_5_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_5_paf)
- self.branching_5_paf = Conv2D(19, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage5_L2")(self.branching_5_paf)
- #Stage 6, concat:
- self.branching_stage_6 = concatenate([self.branching_stage_1, self.branching_5_hm, self.branching_5_paf])
- if training:
- self.branching_stage_6 = Multiply()([self.branching_stage_6,mask])
- #Stage 6, Heat Maps branch:
- self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_6)
- self.branching_6_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage6_L1")(self.branching_6_hm)
- self.branching_6_hm = Activation('relu')(self.branching_6_hm)
- self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_hm)
- self.branching_6_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage6_L1")(self.branching_6_hm)
- self.branching_6_hm = Activation('relu')(self.branching_6_hm)
- self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_hm)
- self.branching_6_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage6_L1")(self.branching_6_hm)
- self.branching_6_hm = Activation('relu')(self.branching_6_hm)
- self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_hm)
- self.branching_6_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage6_L1")(self.branching_6_hm)
- self.branching_6_hm = Activation('relu')(self.branching_6_hm)
- self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_hm)
- self.branching_6_hm = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage6_L1")(self.branching_6_hm)
- self.branching_6_hm = Activation('relu')(self.branching_6_hm)
- self.branching_6_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_6_hm)
- self.branching_6_hm = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage6_L1")(self.branching_6_hm)
- self.branching_6_hm = Activation('relu')(self.branching_6_hm)
- self.branching_6_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_6_hm)
- self.hm = Conv2D(38, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage6_L1")(self.branching_6_hm)
- if training:
- self.hm = Multiply()([self.hm,mask])
- self.hm = Activation('softmax')(self.branching_6_hm)
- #Stage 6, PAF branch:
- self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_6)
- self.branching_6_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv1_stage6_L2")(self.branching_6_paf)
- self.branching_6_paf = Activation('relu')(self.branching_6_paf)
- self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_paf)
- self.branching_6_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv2_stage6_L2")(self.branching_6_paf)
- self.branching_6_paf = Activation('relu')(self.branching_6_paf)
- self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_paf)
- self.branching_6_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv3_stage6_L2")(self.branching_6_paf)
- self.branching_6_paf = Activation('relu')(self.branching_6_paf)
- self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_paf)
- self.branching_6_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv4_stage6_L2")(self.branching_6_paf)
- self.branching_6_paf = Activation('relu')(self.branching_6_paf)
- self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_paf)
- self.branching_6_paf = Conv2D(128, (7, 7), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv5_stage6_L2")(self.branching_6_paf)
- self.branching_6_paf = Activation('relu')(self.branching_6_paf)
- self.branching_6_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_6_paf)
- self.branching_6_paf = Conv2D(128, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv6_stage6_L2")(self.branching_6_paf)
- self.branching_6_paf = Activation('relu')(self.branching_6_paf)
- self.branching_6_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_6_paf)
- self.paf = Conv2D(19, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage6_L2")(self.branching_6_paf)
- if training:
- self.paf = Multiply()([self.paf,mask])
- self.paf = Activation('softmax')(self.branching_6_paf)
- #Optimizer
- opt = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, decay=0.0)
- if training:
- self.model = Model(inputs=[img_input,mask], outputs=[self.hm, self.paf])
- else:
- self.model = Model(inputs=img_input, outputs=[self.hm, self.paf])
- self.model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
- def train(self, X_tr, Y_tr, epochs=10):
- self.model.fit(X_tr, Y_tr, batch_size=1, validation_split=0.3, epochs=epochs, shuffle=True)
- def get_weights(self):
- return self.model.layers.get_weights()
- def get_model_summary(self):
- # plot_model(self.model)
- self.model.summary()
- def save_weights(self,savename="model_weights.h5"):
- self.model.save_weights(savename)
- def load_weights(self,loadname="model_weights.h5",by_name=False):
- self.model.load_weights(loadname,by_name=by_name)
- def predict(self,X):
- return self.model.predict(X)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement