Определение пользовательской потери при обнаружении объекта TF
Я пытаюсь реализовать свою собственную функцию потерь в API обнаружения объектов тензорного потока. Я выполнил следующие шаги.
1) Добавьте потерю в core/loss.py (просто поделился скелетом)
class ClassBalancedSigmoidFocalClassificationLoss(Loss):
def __init__(self, gamma=2.0, alpha=0.25):
super(ClassBalancedSigmoidFocalClassificationLoss, self).__init__()
self._alpha = alpha
self._gamma = gamma
def _compute_loss(self,
prediction_tensor,
target_tensor,
weights,
class_indices=None):
return
2. Добавьте это определение в protos/loss.proto
message ClassificationLoss {
oneof classification_loss {
WeightedSigmoidClassificationLoss weighted_sigmoid = 1;
WeightedSoftmaxClassificationLoss weighted_softmax = 2;
WeightedSoftmaxClassificationAgainstLogitsLoss weighted_logits_softmax = 5;
BootstrappedSigmoidClassificationLoss bootstrapped_sigmoid = 3;
SigmoidFocalClassificationLoss weighted_sigmoid_focal = 4;
ClassBalancedSigmoidFocalClassificationLoss my_loss = 6;
}
}
3. Обновите конфигурацию protos,
./bin/protoc object_detection/protos/*.proto --python_out=.
Однако на шаге 3 я получаю следующую ошибку
object_detection/protos/losses.proto:107:5: "ClassBalancedSigmoidFocalClassificationLoss" is not defined.
object_detection/protos/faster_rcnn.proto: Import "object_detection/protos/losses.proto" was not found or had errors.
object_detection/protos/faster_rcnn.proto:126:12: "HardExampleMiner" is not defined.
object_detection/protos/faster_rcnn.proto:133:12: "ClassificationLoss" is not defined.
Я работаю над TensorFlow 1.15. Пожалуйста помоги.