Salut,
Dans le rcnn plus rapide d'origine, vous avez utilisé la perte softmax lors de l'entraînement rpn. (https://github.com/rbgirshick/py-faster-rcnn/blob/master/models/pascal_voc/VGG16/faster_rcnn_alt_opt/stage1_rpn_train.pt#L447)
dans FPN, vous utilisez l'entropie croisée sigmoïde pour mesurer la perte de rpn.
(https://github.com/facebookresearch/Detectron/blob/master/lib/modeling/FPN.py#L459)
dans mon expérience, j'ai trouvé que le rappel RPN a chuté d'environ 4 points lors de l'utilisation de l'entropie croisée sigmoïde.
Alors, pourquoi utiliser l'entropie croisée sigmoïde dans FPN ? Avez-vous déjà essayé la perte softmax?
Merci!
L'utilisation de softmax pour la classification binaire est un sur-paramétrage et ne devrait pas être nécessaire. Lors du portage de py-faster-rcnn vers detectron, j'ai essayé softmax et sigmoid pour RPN et j'ai obtenu un rappel RPN similaire. Je n'ai pas revisité l'utilisation de softmax pour RPN avec FPN.
@rbgirshick Est-il possible de prendre en charge Softmax dans "rpn_heads.py" ?
J'ai essayé mais je n'ai pas réussi. La raison en est que lorsque la forme de rpn_cls_logits est (1, 30, H, W) au lieu de (1, 15, H ,W), l'opération "SpatialNarrowAs" ne peut pas être appliquée à "rpn_labels_int32_wide" car sa profondeur n'est pas identique à rpn_cls_logits.
J'ai trouvé le même problème ici, et c'est formidable de vous voir le mettre en place. Je suppose que je vais essayer les deux fonctions de perte pour vérifier laquelle est la meilleure.
Commentaire le plus utile
L'utilisation de softmax pour la classification binaire est un sur-paramétrage et ne devrait pas être nécessaire. Lors du portage de py-faster-rcnn vers detectron, j'ai essayé softmax et sigmoid pour RPN et j'ai obtenu un rappel RPN similaire. Je n'ai pas revisité l'utilisation de softmax pour RPN avec FPN.