Точность валидации не меняется - PullRequest
0 голосов
/ 23 мая 2019

Я тренирую свою сеть к 10 эпохам, но никогда точность проверки не увеличивается и не уменьшается, все время один и тот же результат. Потеря меняется, но точность не меняется.

Сеть PoseNet: https://github.com/alleboudy/DLinCV/blob/master/scripts/keras-posenet/scripts/posenet.py

Я просто подавляю промежуточные выходные данные, используя выходные данные последних (прогнозы XYZ и WPQR).

При использовании GTX 1080 все работает, но при использовании RTX 2070 не работает должным образом.

набор данных: 30 тыс. Изображений *

эпох: 10 (или больше, но ничего не происходит)

Размер партии: 100

оптимизатор: Адам

потери функций: MSE

    def create_posenet(weights_path=None):
    ## POSENET
    with tf.device('/device:GPU:0'):
    inputs = Input((config.IMG_HEIGHT, config.IMG_WIDTH, config.IMG_CHANNELS))
    init     = Conv2D(64,(7,7),padding='same',activation='relu',name='init/conv1')(inputs)
    init     = MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='valid',name='init/max1')(init)
    init     = BatchNormalization(name='init/norm1')(init)    
    init     = Conv2D(64, (1,1),padding='same',activation='relu',name='init/conv2_1')(init)
    init     = Conv2D(192,(3,3),padding='same',activation='relu',name='init/conv2_3')(init)
    init     = BatchNormalization(name='init/nomr2')(init)
    init_out = MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='valid',name='init/3x3')(init)

    #inception 1
    icp_1_1x1        = Conv2D(64, (1,1),padding='same',activation='relu',name='icp_1/1x1')(init_out)
    icp_1_3x3_reduce = Conv2D(96, (1,1),padding='same',activation='relu',name='icp_1/3x3_reduce')(init_out)
    icp_1_3x3        = Conv2D(128,(3,3),padding='same',activation='relu',name='icp_1/3x3')(icp_1_3x3_reduce)
    icp_1_5x5_reduce = Conv2D(16, (1,1),padding='same',activation='relu',name='icp_1/5x5_reduce')(init_out)
    icp_1_5x5        = Conv2D(32, (5,5),padding='same',activation='relu',name='icp_1/5x5')(icp_1_3x3_reduce)
    icp_1_pool       = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same',name='icp_1/pool')(init_out)
    icp_1_pool_proj  = Conv2D(32, (1,1),padding='same',activation='relu',name='icp_1/pool_proj')(icp_1_pool)
    icp_1_output     = concatenate([icp_1_1x1,icp_1_3x3,icp_1_5x5,icp_1_pool_proj],name='icp_1/output')

    #inception 2
    icp_2_1x1        = Conv2D(128,(1,1),padding='same',activation='relu',name='icp_2/1x1')(icp_1_output)
    icp_2_3x3_reduce = Conv2D(128,(1,1),padding='same',activation='relu',name='icp_2/3x3_reduce')(icp_1_output)
    icp_2_3x3        = Conv2D(192,(3,3),padding='same',activation='relu',name='icp_2/3x3')(icp_2_3x3_reduce)
    icp_2_5x5_reduce = Conv2D(32, (1,1),padding='same',activation='relu',name='icp_2/5x5_reduce')(icp_1_output)
    icp_2_5x5        = Conv2D(96, (5,5),padding='same',activation='relu',name='icp_2/5x5')(icp_2_5x5_reduce)
    icp_2_pool       = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same',name='icp_2/pool')(icp_1_output)
    icp_2_pool_proj  = Conv2D(64, (1,1),padding='same',activation='relu',name='icp_2/pool_proj')(icp_2_pool)
    icp_2_output     = concatenate([icp_2_1x1,icp_2_3x3,icp_2_5x5,icp_2_pool_proj],name='icp_2/output')

    pool2_3x3_icp3   = MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='valid',name='pool3/3x3_s2')(icp_2_output)

    #inception 3
    icp_3_1x1        = Conv2D(192,(1,1),padding='same',activation='relu',name='icp_3/1x1')(pool2_3x3_icp3)
    icp_3_3x3_reduce = Conv2D(96, (1,1),padding='same',activation='relu',name='icp_3/3x3_reduce')(pool2_3x3_icp3)
    icp_3_3x3        = Conv2D(208,(3,3),padding='same',activation='relu',name='icp_3/3x3')(icp_3_3x3_reduce)
    icp_3_5x5_reduce = Conv2D(16, (1,1),padding='same',activation='relu',name='icp_3/5x5_reduce')(pool2_3x3_icp3)
    icp_3_5x5        = Conv2D(48, (5,5),padding='same',activation='relu',name='icp_3/5x5')(icp_3_5x5_reduce)
    icp_3_pool       = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same',name='icp_3/pool')(pool2_3x3_icp3)
    icp_3_pool_proj  = Conv2D(64, (1,1),padding='same',activation='relu',name='icp_3/pool_proj')(icp_3_pool)
    icp_3_output     = concatenate([icp_3_1x1,icp_3_3x3,icp_3_5x5,icp_3_pool_proj],name='icp_3/output')

    #inception 4
    icp_4_1x1        = Conv2D(160,(1,1),padding='same',activation='relu',name='icp_4/1x1')(icp_3_output)
    icp_4_3x3_reduce = Conv2D(112,(1,1),padding='same',activation='relu',name='icp_4/3x3_reduce')(icp_3_output)
    icp_4_3x3        = Conv2D(224,(3,3),padding='same',activation='relu',name='icp_4/3x3')(icp_4_3x3_reduce)
    icp_4_5x5_reduce = Conv2D(24, (1,1),padding='same',activation='relu',name='icp_4/5x5_reduce')(icp_3_output)
    icp_4_5x5        = Conv2D(64, (5,5),padding='same',activation='relu',name='icp_4/5x5')(icp_4_5x5_reduce)
    icp_4_pool       = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same',name='icp_4/pool')(icp_3_output)
    icp_4_pool_proj  = Conv2D(64, (1,1),padding='same',activation='relu',name='icp_4/pool_proj')(icp_4_pool)
    icp_4_output     = concatenate([icp_4_1x1,icp_4_3x3,icp_4_5x5,icp_4_pool_proj],name='icp_4_output')

    #inception 5
    icp_5_1x1        = Conv2D(128,(1,1),padding='same',activation='relu',name='icp_5/1x1')(icp_4_output)
    icp_5_3x3_reduce = Conv2D(128,(1,1),padding='same',activation='relu',name='icp_5/3x3_reduce')(icp_4_output)
    icp_5_3x3        = Conv2D(256,(3,3),padding='same',activation='relu',name='icp_5/3x3')(icp_5_3x3_reduce)
    icp_5_5x5_reduce = Conv2D(24, (1,1),padding='same',activation='relu',name='icp_5/5x5_reduce')(icp_4_output)
    icp_5_5x5        = Conv2D(64, (5,5),padding='same',activation='relu',name='icp_5/5x5')(icp_5_5x5_reduce)
    icp_5_pool       = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same',name='icp_5/pool')(icp_4_output)
    icp_5_pool_proj  = Conv2D(64, (1,1),padding='same',activation='relu',name='icp_5/pool_proj')(icp_5_pool)
    icp_5_output     = concatenate([icp_5_1x1,icp_5_3x3,icp_5_5x5,icp_5_pool_proj],name='icp_5/output')

    #inception 6
    icp_6_1x1        = Conv2D(112,(1,1),padding='same',activation='relu',name='icp_6/1x1')(icp_5_output)
    icp_6_3x3_reduce = Conv2D(144,(1,1),padding='same',activation='relu',name='icp_6/3x3_reduce')(icp_5_output)
    icp_6_3x3        = Conv2D(288,(3,3),padding='same',activation='relu',name='icp_6/3x3')(icp_6_3x3_reduce)
    icp_6_5x5_reduce = Conv2D(32, (1,1),padding='same',activation='relu',name='icp_6/5x5_reduce')(icp_5_output)
    icp_6_5x5        = Conv2D(64, (5,5),padding='same',activation='relu',name='icp_6/5x5')(icp_6_5x5_reduce)
    icp_6_pool       = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same',name='icp_6/pool')(icp_5_output)
    icp_6_pool_proj  = Conv2D(64, (1,1),padding='same',activation='relu',name='icp_6/pool_proj')(icp_6_pool)
    icp_6_output     = concatenate([icp_6_1x1,icp_6_3x3,icp_6_5x5,icp_6_pool_proj],name='icp_6/output')

    #inception 7
    icp_7_1x1        = Conv2D(256,(1,1),padding='same',activation='relu',name='icp_7/1x1')(icp_6_output)
    icp_7_3x3_reduce = Conv2D(160,(1,1),padding='same',activation='relu',name='icp_7/3x3_reduce')(icp_6_output)
    icp_7_3x3        = Conv2D(320,(3,3),padding='same',activation='relu',name='icp_7/3x3')(icp_7_3x3_reduce)
    icp_7_5x5_reduce = Conv2D(32, (1,1),padding='same',activation='relu',name='icp_7/5x5_reduce')(icp_6_output)
    icp_7_5x5        = Conv2D(128,(5,5),padding='same',activation='relu',name='icp_7/5x5')(icp_7_5x5_reduce)
    icp_7_pool       = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same',name='icp_7/pool')(icp_6_output)
    icp_7_pool_proj  = Conv2D(128,(1,1),padding='same',activation='relu',name='icp_7/pool_proj')(icp_7_pool)
    icp_7_output     = concatenate([icp_7_1x1,icp_7_3x3,icp_7_5x5,icp_7_pool_proj],name='icp_7/output')

    pool3_3x3_icp8   = MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='valid',name='pool4/3x3_s2')(icp_7_output)

    #inception 8
    icp_8_1x1        = Conv2D(256,(1,1),padding='same',activation='relu',name='icp_8/1x1')(pool3_3x3_icp8)
    icp_8_3x3_reduce = Conv2D(160,(1,1),padding='same',activation='relu',name='icp_8/3x3_reduce')(pool3_3x3_icp8)
    icp_8_3x3        = Conv2D(320,(3,3),padding='same',activation='relu',name='icp_8/3x3')(icp_8_3x3_reduce)
    icp_8_5x5_reduce = Conv2D(32, (1,1),padding='same',activation='relu',name='icp_8/5x5_reduce')(pool3_3x3_icp8)
    icp_8_5x5        = Conv2D(128,(5,5),padding='same',activation='relu',name='icp_8/5x5')(icp_8_5x5_reduce)
    icp_8_pool       = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same',name='icp_8/pool')(pool3_3x3_icp8)
    icp_8_pool_proj  = Conv2D(128,(1,1),padding='same',activation='relu',name='icp_8/pool_proj')(icp_8_pool)
    icp_8_output     = concatenate([icp_8_1x1,icp_8_3x3,icp_8_5x5,icp_8_pool_proj],name='icp_8/output')

    #inception 9
    icp_9_1x1        = Conv2D(384,(1,1),padding='same',activation='relu',name='icp_9/1x1')(icp_8_output)
    icp_9_3x3_reduce = Conv2D(192,(1,1),padding='same',activation='relu',name='icp_9/3x3_reduce')(icp_8_output)
    icp_9_3x3        = Conv2D(384,(3,3),padding='same',activation='relu',name='icp_9/3x3')(icp_9_3x3_reduce)
    icp_9_5x5_reduce = Conv2D(48, (1,1),padding='same',activation='relu',name='icp_9/5x5_reduce')(icp_8_output)
    icp_9_5x5        = Conv2D(128,(5,5),padding='same',activation='relu',name='icp_9/5x5')(icp_9_5x5_reduce)
    icp_9_pool       = MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same',name='icp_9/pool')(icp_8_output)
    icp_9_pool_proj  = Conv2D(128,(1,1),padding='same',activation='relu',name='icp_9/pool_proj')(icp_9_pool)
    icp_9_output     = concatenate([icp_9_1x1,icp_9_3x3,icp_9_5x5,icp_9_pool_proj],name='icp_9/output')

    # --- classification 3 --- #
    cls_pose      = AveragePooling2D(pool_size=(2,2),strides=(1,1),name='pool5/7x7_s2')(icp_9_output)
    cls_pose      = Flatten()(cls_pose)
    cls_pose      = Dropout(0.5)(cls_pose)

    cls_pose_xyz  = Dense(3,name='cls3_fc_pose_xyz')(cls_pose)
    cls_pose_wpqr = Dense(4,name='cls3_fc_pose_wpqr')(cls_pose)

    model_posenet = Model(inputs=[inputs], outputs=[cls_pose_xyz, cls_pose_wpqr])

    model_posenet.compile(optimizer = 'adam', 
                          loss = ['mse', 
                                  'mse'],
                          metrics = ['accuracy'])

return model_posenet

Выход для XYZ-ПРОГНОЗОВ не меняется:

Эпоха 1/10 20165/20165 [====================================] - 61 с 3 мс / шаг - потеря: 1,0996 - cls3_fc_pose_xyz_loss: 0,3909 - cls3_fc_pose_wpqr_loss : 0,7087 - cls3_fc_pose_xyz_acc: 0,9814 - cls3_fc_pose_wpqr_acc: 0,8663 - val_loss: 1,5001 - val_cls3_fc_pose_xyz_loss: 0,5134 - val_cls3_fc_pose_wpqr_loss: 0,9867 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc_pose_wpqr_acc: 0,6472

Эпоха 2/10 20165/20165 [====================================] - 54 с 3 мс / шаг - потеря: 0,2953 - cls3_fc_pose_xyz_loss: 0,1026 - cls3_fc_pose_wpqr_loss : 0,1927 - cls3_fc_pose_xyz_acc: 0,9819 - cls3_fc_pose_wpqr_acc: 0,8858 - val_loss: 1,2819 - val_cls3_fc_pose_xyz_loss: 0,4634 - val_cls3_fc_pose_wpqr_loss: 0,8185 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc_pose_wpqr_acc: 0,6843

Эпоха 3/10 20165/20165 [====================================] - 54 с 3 мс / шаг - потеря: 0,1802 - cls3_fc_pose_xyz_loss: 0,0627 - cls3_fc_pose_wpqr_loss : 0,1175 - cls3_fc_pose_xyz_acc: 0,9838 - cls3_fc_pose_wpqr_acc: 0,9086 - val_loss: 1,2151 - val_cls3_fc_pose_xyz_loss: 0,3737 - val_cls3_fc_pose_wpqr_loss: 0,8414 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc_pose_wpqr_acc: 0,7086

Эпоха 4/10 20165/20165 [====================================] - 54 с 3 мс / шаг - потеря: 0,1470 - cls3_fc_pose_xyz_loss: 0,0543 - cls3_fc_pose_wpqr_loss : 0,0927 - cls3_fc_pose_xyz_acc: 0,9854 - cls3_fc_pose_wpqr_acc: 0,9183 - val_loss: 1,2588 - val_cls3_fc_pose_xyz_loss: 0,3980 - val_cls3_fc_pose_wpqr_loss: 0,8608 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc_pose_wpqr_acc: 0,6973

Эпоха 5/10 20165/20165 [====================================] - 54 с 3 мс / шаг - потеря: 0,1268 - cls3_fc_pose_xyz_loss: 0,0465 - cls3_fc_pose_wpqr_loss : 0,0804 - cls3_fc_pose_xyz_acc: 0,9875 - cls3_fc_pose_wpqr_acc: 0,9288 - val_loss: 1,2391 - val_cls3_fc_pose_xyz_loss: 0,4460 - val_cls3_fc_pose_wpqr_loss: 0,7931 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc_pose_wpqr_acc: 0,6983

Эпоха 6/10 20165/20165 [====================================] - 54 с 3 мс / шаг - потеря: 0,1196 - cls3_fc_pose_xyz_loss: 0,0437 - cls3_fc_pose_wpqr_loss : 0,0759 - cls3_fc_pose_xyz_acc: 0,9886 - cls3_fc_pose_wpqr_acc: 0,9309 - val_loss: 1,1939 - val_cls3_fc_pose_xyz_loss: 0,3995 - val_cls3_fc_pose_wpqr_loss: 0,7943 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc_pose_wpqr_acc: 0,7371

Эпоха 7/10 20165/20165 [====================================] - 54 с 3 мс / шаг - потеря: 0,1133 - cls3_fc_pose_xyz_loss: 0,0424 - cls3_fc_pose_wpqr_loss : 0,0709 - cls3_fc_pose_xyz_acc: 0,9901 - cls3_fc_pose_wpqr_acc: 0,9333 - val_loss: 1,1904 - val_cls3_fc_pose_xyz_loss: 0,4390 - val_cls3_fc_pose_wpqr_loss: 0,7514 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc_pose_wpqr_acc: 0,7317

Эпоха 8/1020165/20165 [====================================] - 54s 3 мс / шаг - потеря: 0.1030 - cls3_fc_pose_xyz_loss: 0.0394 - cls3_fc_pose_wpqr_loss: 0,0636 - cls3_fc_pose_xyz_acc: 0,9910 - cls3_fc_pose_wpqr_acc: 0,9382 - val_loss: 1,2242 - val_cls3_fc_pose_xyz_loss: 0,4447 - val_cls3_fc_pose_wpqr_loss: 0,7796 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc_pose_wpqr_acc: 0,7385

Epoch 9/10 20165/20165 [==============================] - 54 с 3 мс / шаг - потеря: 0,1056 - cls3_fc_pose_xyz_loss: 0,0394 - cls3_fc_pose_wpqr_loss: 0,0661 - cls3_fc_pose_xy: 0,9912 - cls3_fc_pose_wpqr_acc: 0,9395 - val_loss: 1,3230 - val_cls3_fc_pose_xyz_loss: 0,4622 - val_cls3_fc_pose_wpqr_loss: 0,8609 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc_pose_wpqr_acc: 0,7091

Epoch 10/10 20165/20165 [==============================] - 54s 3 мс / шаг - потеря: 0,0995 - cls3_fc_pose_xyz_loss: 0,0369 - cls3_fc_pose_wpqr_loss: 0,0626 - cls3_fc_pose_xywf_c 0: 0c:: 0.9421 - val_loss: 1.2388 - val_cls3_fc_pose_xyz_loss: 0,4127 - val_cls3_fc_pose_wpqr_loss: 0,8261 - val_cls3_fc_pose_xyz_acc: 0,8663 - val_cls3_fc__69

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...