Модификация функции потерь быстрее - PullRequest
0 голосов
/ 21 января 2019

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

В настоящее время я использую Facebooks Detectron. Кажется, работает отлично, но сейчас я активно пытаюсь изменить функцию потерь. Отладка моего кода Я заметил, что здесь добавляются функции потери fast_rcnn_heads.py: 75 :

def add_fast_rcnn_losses(model):
"""Add losses for RoI classification and bounding box regression."""
cls_prob, loss_cls = model.net.SoftmaxWithLoss(
    ['cls_score', 'labels_int32'], ['cls_prob', 'loss_cls'],
    scale=model.GetLossScale()
)
loss_bbox = model.net.SmoothL1Loss(
    [
        'bbox_pred', 'bbox_targets', 'bbox_inside_weights',
        'bbox_outside_weights'
    ],
    'loss_bbox',
    scale=model.GetLossScale()
)
loss_gradients = blob_utils.get_loss_gradients(model, [loss_cls, loss_bbox])
model.Accuracy(['cls_prob', 'labels_int32'], 'accuracy_cls')
model.AddLosses(['loss_cls', 'loss_bbox'])
model.AddMetrics('accuracy_cls')
return loss_gradients

Отладчик не может найти ни объявления, ни реализации mode.net.SmoothL1Loss или SoftmaxWithLoss. Detectron использует caffe, и когда я смотрю в net_builder (который входит в model.net), я вижу, что он «привязывает» (не знаю правильное слово) к caffe2, который сам по себе является pylib с скомпилированной библиотекой позади него.

Я смотрю не в том месте, чтобы внести незначительную корректировку в эту функцию потерь, или мне действительно придется открывать исходный код из dcaffe, корректировать потери, перекомпилировать библиотеку?

Привет,

1 Ответ

0 голосов
/ 23 января 2019

Вы должны реализовать функцию потерь самостоятельно.Изменить исходный код библиотеки и перекомпилировать его - не очень хорошая идея :)

Вы можете создать функцию python, которая будет принимать GT и прогнозируемые данные и возвращать значение потерь.

Также вы можете создатьдубликат L1-сглаживания или кросс-энтропии, который используется в настоящее время, а затем, когда вы убедитесь, что они совпадают, вы можете изменить их.Или вы можете реализовать, например, потерю L2 для боксов и использовать ее вместо этого.

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

...