Я пытаюсь реализовать свою собственную функцию потерь в API обнаружения объектов tenorflow. Я выполнил следующие шаги:
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. Обновите конфигурацию протоса с помощью
./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. Пожалуйста, помогите.