Advertisement
Guest User

Untitled

a guest
May 21st, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 33.75 KB | None | 0 0
  1. class PoseNet():
  2.     def __init__(self, training=True):
  3.        
  4.         img_input = Input(shape=(368, 368, 3))
  5.         if training:
  6.             mask = Input(shape=(46, 46, 1))
  7.        
  8.         #VGG
  9.        
  10.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(img_input)
  11.         self.x = Conv2D(64, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv1_1")(self.x)
  12.         self.x = Activation('relu')(self.x)
  13.        
  14.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  15.         self.x = Conv2D(64, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv1_2")(self.x)
  16.         self.x = Activation('relu')(self.x)
  17.        
  18.         self.x = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.x)
  19.         self.x = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(self.x)
  20.        
  21.        
  22.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  23.         self.x = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv2_1")(self.x)
  24.         self.x = Activation('relu')(self.x)
  25.        
  26.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  27.         self.x = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv2_2")(self.x)
  28.         self.x = Activation('relu')(self.x)
  29.        
  30.         self.x = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.x)
  31.         self.x = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(self.x)
  32.        
  33.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  34.         self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv3_1")(self.x)
  35.         self.x = Activation('relu')(self.x)
  36.        
  37.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  38.         self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv3_2")(self.x)
  39.         self.x = Activation('relu')(self.x)
  40.        
  41.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  42.         self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv3_3")(self.x)
  43.         self.x = Activation('relu')(self.x)
  44.        
  45.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  46.         self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv3_4")(self.x)
  47.         self.x = Activation('relu')(self.x)
  48.        
  49.         self.x = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.x)
  50.         self.x = MaxPooling2D(pool_size=(2, 2), strides=(2, 2))(self.x)
  51.        
  52.        
  53.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  54.         self.x = Conv2D(512, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv4_1")(self.x)
  55.         self.x = Activation('relu')(self.x)
  56.        
  57.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  58.         self.x = Conv2D(512, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv4_2")(self.x)
  59.         self.x = Activation('relu')(self.x)
  60.        
  61.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  62.         self.x = Conv2D(256, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv4_3_CPM")(self.x)
  63.         self.x = Activation('relu')(self.x)
  64.        
  65.         self.x = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.x)
  66.         self.branching_stage_1 = Conv2D(128, (3, 3), padding='valid', strides=(1, 1), data_format="channels_last", name = "conv4_4_CPM")(self.x)
  67.        
  68.      
  69.         #Stage 1, Heat Maps branch:
  70.         self.branching_1_hm = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_stage_1)
  71.         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)
  72.         self.branching_1_hm = Activation('relu')(self.branching_1_hm)
  73.        
  74.         self.branching_1_hm = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_1_hm)
  75.         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)
  76.         self.branching_1_hm = Activation('relu')(self.branching_1_hm)
  77.        
  78.         self.branching_1_hm = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_1_hm)
  79.         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)
  80.         self.branching_1_hm = Activation('relu')(self.branching_1_hm)
  81.        
  82.         self.branching_1_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_1_hm)
  83.         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)
  84.         self.branching_1_hm = Activation('relu')(self.branching_1_hm)
  85.        
  86.         self.branching_1_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_1_hm)
  87.         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)
  88.  
  89.        
  90.         #Stage 1, PAF branch:
  91.         self.branching_1_paf = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_stage_1)
  92.         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)
  93.         self.branching_1_paf = Activation('relu')(self.branching_1_paf)
  94.        
  95.         self.branching_1_paf = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_1_paf)
  96.         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)
  97.         self.branching_1_paf = Activation('relu')(self.branching_1_paf)  
  98.        
  99.         self.branching_1_paf = ZeroPadding2D(padding=(1, 1), data_format="channels_last")(self.branching_1_paf)
  100.         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)
  101.         self.branching_1_paf = Activation('relu')(self.branching_1_paf)  
  102.        
  103.         self.branching_1_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_1_paf)
  104.         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)
  105.         self.branching_1_paf = Activation('relu')(self.branching_1_paf)
  106.        
  107.         self.branching_1_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_1_paf)
  108.         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)
  109.      
  110.      
  111.         #Stage 2, concat:
  112.         self.branching_stage_2 = concatenate([self.branching_stage_1, self.branching_1_hm, self.branching_1_paf])
  113.         if training:
  114.             self.branching_stage_2 = Multiply()([self.branching_stage_2,mask])
  115.      
  116.         #Stage 2, Heat Maps branch:
  117.         self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_2)
  118.         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)
  119.         self.branching_2_hm = Activation('relu')(self.branching_2_hm)
  120.        
  121.         self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_hm)
  122.         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)
  123.         self.branching_2_hm = Activation('relu')(self.branching_2_hm)
  124.        
  125.         self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_hm)
  126.         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)
  127.         self.branching_2_hm = Activation('relu')(self.branching_2_hm)
  128.        
  129.         self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_hm)
  130.         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)
  131.         self.branching_2_hm = Activation('relu')(self.branching_2_hm)
  132.        
  133.         self.branching_2_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_hm)
  134.         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)
  135.         self.branching_2_hm = Activation('relu')(self.branching_2_hm)
  136.        
  137.         self.branching_2_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_2_hm)
  138.         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)
  139.         self.branching_2_hm = Activation('relu')(self.branching_2_hm)
  140.        
  141.         self.branching_2_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_2_hm)
  142.         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)
  143.  
  144.        
  145.         #Stage 2, PAF branch:
  146.         self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_2)
  147.         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)
  148.         self.branching_2_paf = Activation('relu')(self.branching_2_paf)
  149.        
  150.         self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_paf)
  151.         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)
  152.         self.branching_2_paf = Activation('relu')(self.branching_2_paf)
  153.        
  154.         self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_paf)
  155.         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)
  156.         self.branching_2_paf = Activation('relu')(self.branching_2_paf)
  157.        
  158.         self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_paf)
  159.         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)
  160.         self.branching_2_paf = Activation('relu')(self.branching_2_paf)
  161.        
  162.         self.branching_2_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_2_paf)
  163.         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)
  164.         self.branching_2_paf = Activation('relu')(self.branching_2_paf)
  165.        
  166.         self.branching_2_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_2_paf)
  167.         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)
  168.         self.branching_2_paf = Activation('relu')(self.branching_2_paf)
  169.        
  170.         self.branching_2_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_2_paf)
  171.         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)
  172.  
  173.        
  174.         #Stage 3, concat:
  175.         self.branching_stage_3 = concatenate([self.branching_stage_1, self.branching_2_hm, self.branching_2_paf])
  176.         if training:
  177.             self.branching_stage_3 = Multiply()([self.branching_stage_3,mask])
  178.        
  179.         #Stage 3, Heat Maps branch:
  180.         self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_3)
  181.         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)
  182.         self.branching_3_hm = Activation('relu')(self.branching_3_hm)
  183.        
  184.         self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_hm)
  185.         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)
  186.         self.branching_3_hm = Activation('relu')(self.branching_3_hm)
  187.        
  188.         self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_hm)
  189.         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)
  190.         self.branching_3_hm = Activation('relu')(self.branching_3_hm)
  191.        
  192.         self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_hm)
  193.         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)
  194.         self.branching_3_hm = Activation('relu')(self.branching_3_hm)
  195.        
  196.         self.branching_3_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_hm)
  197.         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)
  198.         self.branching_3_hm = Activation('relu')(self.branching_3_hm)
  199.        
  200.         self.branching_3_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_3_hm)
  201.         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)
  202.         self.branching_3_hm = Activation('relu')(self.branching_3_hm)
  203.        
  204.         self.branching_3_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_3_hm)
  205.         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)
  206.  
  207.        
  208.         #Stage 3, PAF branch:
  209.         self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_3)
  210.         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)
  211.         self.branching_3_paf = Activation('relu')(self.branching_3_paf)
  212.        
  213.         self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_paf)
  214.         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)
  215.         self.branching_3_paf = Activation('relu')(self.branching_3_paf)
  216.        
  217.         self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_paf)
  218.         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)
  219.         self.branching_3_paf = Activation('relu')(self.branching_3_paf)
  220.        
  221.         self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_paf)
  222.         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)
  223.         self.branching_3_paf = Activation('relu')(self.branching_3_paf)
  224.        
  225.         self.branching_3_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_3_paf)
  226.         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)
  227.         self.branching_3_paf = Activation('relu')(self.branching_3_paf)
  228.        
  229.         self.branching_3_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_3_paf)
  230.         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)
  231.         self.branching_3_paf = Activation('relu')(self.branching_3_paf)
  232.        
  233.         self.branching_3_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_3_paf)
  234.         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)
  235.  
  236.        
  237.         #Stage 4, concat:
  238.         self.branching_stage_4 = concatenate([self.branching_stage_1, self.branching_3_hm, self.branching_3_paf])
  239.         if training:
  240.             self.branching_stage_4 = Multiply()([self.branching_stage_4,mask])
  241.        
  242.         #Stage 4, Heat Maps branch:
  243.         self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_4)
  244.         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)
  245.         self.branching_4_hm = Activation('relu')(self.branching_4_hm)
  246.        
  247.         self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_hm)
  248.         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)
  249.         self.branching_4_hm = Activation('relu')(self.branching_4_hm)
  250.        
  251.         self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_hm)
  252.         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)
  253.         self.branching_4_hm = Activation('relu')(self.branching_4_hm)  
  254.        
  255.         self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_hm)
  256.         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)
  257.         self.branching_4_hm = Activation('relu')(self.branching_4_hm)
  258.        
  259.         self.branching_4_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_hm)
  260.         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)
  261.         self.branching_4_hm = Activation('relu')(self.branching_4_hm)
  262.        
  263.         self.branching_4_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_4_hm)
  264.         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)
  265.         self.branching_4_hm = Activation('relu')(self.branching_4_hm)
  266.        
  267.         self.branching_4_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_4_hm)
  268.         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)
  269.  
  270.        
  271.         #Stage 3, PAF branch:
  272.         self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_4)
  273.         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)
  274.         self.branching_4_paf = Activation('relu')(self.branching_4_paf)
  275.        
  276.         self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_paf)
  277.         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)
  278.         self.branching_4_paf = Activation('relu')(self.branching_4_paf)
  279.        
  280.         self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_paf)
  281.         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)
  282.         self.branching_4_paf = Activation('relu')(self.branching_4_paf)
  283.        
  284.         self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_paf)
  285.         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)
  286.         self.branching_4_paf = Activation('relu')(self.branching_4_paf)
  287.        
  288.         self.branching_4_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_4_paf)
  289.         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)
  290.         self.branching_4_paf = Activation('relu')(self.branching_4_paf)
  291.        
  292.         self.branching_4_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_4_paf)
  293.         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)
  294.         self.branching_4_paf = Activation('relu')(self.branching_4_paf)
  295.        
  296.         self.branching_4_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_4_paf)
  297.         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)
  298.  
  299.        
  300.         #Stage 5, concat:
  301.         self.branching_stage_5 = concatenate([self.branching_stage_1, self.branching_4_hm, self.branching_4_paf])
  302.         if training:
  303.             self.branching_stage_5 = Multiply()([self.branching_stage_5,mask])
  304.  
  305.         #Stage 5, Heat Maps branch:
  306.         self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_5)
  307.         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)
  308.         self.branching_5_hm = Activation('relu')(self.branching_5_hm)
  309.        
  310.         self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_hm)
  311.         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)
  312.         self.branching_5_hm = Activation('relu')(self.branching_5_hm)
  313.        
  314.         self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_hm)
  315.         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)
  316.         self.branching_5_hm = Activation('relu')(self.branching_5_hm)  
  317.        
  318.         self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_hm)
  319.         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)
  320.         self.branching_5_hm = Activation('relu')(self.branching_5_hm)
  321.        
  322.         self.branching_5_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_hm)
  323.         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)
  324.         self.branching_5_hm = Activation('relu')(self.branching_5_hm)
  325.        
  326.         self.branching_5_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_5_hm)
  327.         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)
  328.         self.branching_5_hm = Activation('relu')(self.branching_5_hm)
  329.        
  330.         self.branching_5_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_5_hm)
  331.         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)
  332.  
  333.        
  334.         #Stage 5, PAF branch:
  335.         self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_5)
  336.         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)
  337.         self.branching_5_paf = Activation('relu')(self.branching_5_paf)
  338.        
  339.         self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_paf)
  340.         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)
  341.         self.branching_5_paf = Activation('relu')(self.branching_5_paf)
  342.        
  343.         self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_paf)
  344.         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)
  345.         self.branching_5_paf = Activation('relu')(self.branching_5_paf)
  346.        
  347.         self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_paf)
  348.         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)
  349.         self.branching_5_paf = Activation('relu')(self.branching_5_paf)
  350.        
  351.         self.branching_5_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_5_paf)
  352.         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)
  353.         self.branching_5_paf = Activation('relu')(self.branching_5_paf)
  354.        
  355.         self.branching_5_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_5_paf)
  356.         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)
  357.         self.branching_5_paf = Activation('relu')(self.branching_5_paf)
  358.        
  359.         self.branching_5_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_5_paf)
  360.         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)
  361.  
  362.        
  363.         #Stage 6, concat:
  364.         self.branching_stage_6 = concatenate([self.branching_stage_1, self.branching_5_hm, self.branching_5_paf])
  365.         if training:
  366.             self.branching_stage_6 = Multiply()([self.branching_stage_6,mask])
  367.        
  368.         #Stage 6, Heat Maps branch:
  369.         self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_6)
  370.         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)
  371.         self.branching_6_hm = Activation('relu')(self.branching_6_hm)
  372.        
  373.         self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_hm)
  374.         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)
  375.         self.branching_6_hm = Activation('relu')(self.branching_6_hm)
  376.        
  377.         self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_hm)
  378.         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)
  379.         self.branching_6_hm = Activation('relu')(self.branching_6_hm)  
  380.        
  381.         self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_hm)
  382.         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)
  383.         self.branching_6_hm = Activation('relu')(self.branching_6_hm)
  384.        
  385.         self.branching_6_hm = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_hm)
  386.         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)
  387.         self.branching_6_hm = Activation('relu')(self.branching_6_hm)
  388.        
  389.         self.branching_6_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_6_hm)
  390.         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)
  391.         self.branching_6_hm = Activation('relu')(self.branching_6_hm)
  392.        
  393.         self.branching_6_hm = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_6_hm)
  394.         self.hm = Conv2D(38, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage6_L1")(self.branching_6_hm)
  395.         if training:
  396.             self.hm = Multiply()([self.hm,mask])
  397.         self.hm = Activation('softmax')(self.branching_6_hm)
  398.        
  399.         #Stage 6, PAF branch:
  400.         self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_stage_6)
  401.         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)
  402.         self.branching_6_paf = Activation('relu')(self.branching_6_paf)
  403.        
  404.         self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_paf)
  405.         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)
  406.         self.branching_6_paf = Activation('relu')(self.branching_6_paf)
  407.        
  408.         self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_paf)
  409.         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)
  410.         self.branching_6_paf = Activation('relu')(self.branching_6_paf)  
  411.        
  412.         self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_paf)
  413.         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)
  414.         self.branching_6_paf = Activation('relu')(self.branching_6_paf)
  415.        
  416.         self.branching_6_paf = ZeroPadding2D(padding=(3, 3), data_format="channels_last")(self.branching_6_paf)
  417.         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)
  418.         self.branching_6_paf = Activation('relu')(self.branching_6_paf)
  419.        
  420.         self.branching_6_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_6_paf)
  421.         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)
  422.         self.branching_6_paf = Activation('relu')(self.branching_6_paf)
  423.        
  424.         self.branching_6_paf = ZeroPadding2D(padding=(0, 0), data_format="channels_last")(self.branching_6_paf)
  425.         self.paf = Conv2D(19, (1, 1), padding='valid', strides=(1, 1), data_format="channels_last", name = "Mconv7_stage6_L2")(self.branching_6_paf)
  426.         if training:
  427.             self.paf = Multiply()([self.paf,mask])
  428.         self.paf = Activation('softmax')(self.branching_6_paf)
  429.        
  430.         #Optimizer
  431.         opt = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, decay=0.0)
  432.         if training:
  433.             self.model = Model(inputs=[img_input,mask], outputs=[self.hm, self.paf])
  434.         else:
  435.             self.model = Model(inputs=img_input, outputs=[self.hm, self.paf])
  436.         self.model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
  437.        
  438.     def train(self, X_tr, Y_tr, epochs=10):
  439.         self.model.fit(X_tr, Y_tr, batch_size=1, validation_split=0.3, epochs=epochs, shuffle=True)
  440.        
  441.     def get_weights(self):
  442.         return self.model.layers.get_weights()
  443.      
  444.     def get_model_summary(self):
  445.         # plot_model(self.model)
  446.         self.model.summary()
  447.      
  448.     def save_weights(self,savename="model_weights.h5"):
  449.         self.model.save_weights(savename)
  450.        
  451.     def load_weights(self,loadname="model_weights.h5",by_name=False):
  452.         self.model.load_weights(loadname,by_name=by_name)
  453.  
  454.     def predict(self,X):
  455.         return self.model.predict(X)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement