Байесовское затухание потерь для обнаружения объектов - PullRequest
0 голосов
/ 02 июля 2019

Я хочу создать функцию потерь согласно этой статье (http://mediatum.ub.tum.de/doc/1463390/488043490645.pdf)

Для этого мне нужно изменить текущий SSD объект детектора, добавив слои дисперсии в соответствии с этой бумагой

Мой вопрос: как мы создаем слои Variance поверх модели ssd

как мы должны создать функцию потерь для блоков и классов

Я попытался создать слои поверх ssd следующим образом

но я не уверен, было ли это так же, как описано в статье

classes4_reshaped = Reshape((-1, num_classes), name='classes4_reshape')(classes4)
#We added dropout layer because yarian gal said that dropout layer should added before output layer & on top of fully connected layer
classes4_reshaped = Dropout(0.5)(classes4_reshaped)
classes5_reshaped = Reshape((-1, num_classes), name='classes5_reshape')(classes5)
classes5_reshaped = Dropout(0.5)(classes5_reshaped)
classes6_reshaped = Reshape((-1, num_classes), name='classes6_reshape')(classes6)
classes6_reshaped = Dropout(0.5)(classes6_reshaped)
classes7_reshaped = Reshape((-1, num_classes), name='classes7_reshape')(classes7)
classes7_reshaped = Dropout(0.5)(classes7_reshaped)

# Reshape the box coordinate predictions, yielding 3D tensors of shape `(batch, height * width * n_boxes, 4)`
# We want the four box coordinates isolated in the last axis to compute the smooth L1 loss
boxes4_reshaped = Reshape((-1, 4), name='boxes4_reshape')(boxes4)
boxes4_reshaped = Dropout(0.5)(boxes4_reshaped)
boxes5_reshaped = Reshape((-1, 4), name='boxes5_reshape')(boxes5)
boxes5_reshaped = Dropout(0.5)(boxes5_reshaped)
boxes6_reshaped = Reshape((-1, 4), name='boxes6_reshape')(boxes6)
boxes6_reshaped = Dropout(0.5)(boxes6_reshaped)
boxes7_reshaped = Reshape((-1, 4), name='boxes7_reshape')(boxes7)
boxes7_reshaped = Dropout(0.5)(boxes7_reshaped)

anchors4_reshaped = Reshape((-1, 8), name='anchors4_reshape')(anchors_4)
anchors5_reshaped = Reshape((-1, 8), name='anchors5_reshape')(anchors_5)
anchors6_reshaped = Reshape((-1, 8), name='anchors6_reshape')(anchors_6)
anchors7_reshaped = Reshape((-1, 8), name='anchors7_reshape')(anchors_7)

variance_pre = Dense (1, name = 'variance_pre') (classes_concat) дисперсия = активация («softplus», имя = «дисперсия») (variance_pre)

logits_variance_class = Concatenate(axis=2,name='logits_variance_class')([classes_concat, variance])

boxes_concat = Concatenate(axis=1, name='boxes_concat')([boxes4_reshaped,
                                                         boxes5_reshaped,
                                                         boxes6_reshaped,
                                                         boxes7_reshaped])


variance_pre_box = Dense(1, name='variance_pre_box')(boxes_concat)
variance_box = Activation('softplus', name='variance_box')(variance_pre_box)

logits_variance_box = Concatenate (axis = 2, name = 'logits_variance_box') ([boxes_concat, variance_box])

logits_variance_class = Concatenate (axis = 2, name = 'logits_variance_class') ([classes_concat, variance])

logits_variance = Concatenate (axis = 2, name = 'logits_variance') ([logits_variance_class, logits_variance_box, anchors_concat])

model2 = Модель (входы = x, выходы = logits_variance)

Мне нужно несколько предложений о том, как мы должны реализовать модель и уравнение потерь согласно этой статье.

...