أهلا،
في لعبة rcnn الأسرع الأصلية ، استخدمت خسارة softmax عند تدريب rpn. (https://github.com/rbgirshick/py-faster-rcnn/blob/master/models/pascal_voc/VGG16/faster_rcnn_alt_opt/stage1_rpn_train.pt#L447)
في FPN ، يمكنك استخدام الانتروبيا السيني المتقاطعة لقياس خسارة rpn.
(https://github.com/facebookresearch/Detectron/blob/master/lib/modeling/FPN.py#L459)
في تجربتي ، وجدت أن استدعاء RPN انخفض حوالي 4 نقاط عند استخدام الانتروبيا السيني.
إذن ، لماذا استخدام الانتروبيا السيني في FPN؟ هل سبق لك أن حاولت خسارة softmax؟
شكرا!
يعد استخدام softmax للتصنيف الثنائي عبارة عن معاملات مفرطة ويجب ألا يكون ضروريًا. عند النقل من py-الأسرع-rcnn إلى المستكشف ، جربت كلاً من softmax و sigmoid لـ RPN وحصلت على استدعاء RPN مماثل. لم أعود إلى استخدام softmax لـ RPN مع FPN.
rbgirshick هل من الممكن دعم Softmax في "rpn_heads.py"؟
حاولت لكني لم أنجح. السبب هو أنه عندما يكون شكل rpn_cls_logits هو (1 ، 30 ، H ، W) بدلاً من (1 ، 15 ، H ، W) ، لا يمكن تطبيق عملية "SpatialNarrowAs" على "rpn_labels_int32_wide" نظرًا لأن عمقها ليس كذلك نفس rpn_cls_logits.
لقد وجدت نفس المشكلة هنا ، ومن الرائع أن أراك تطرحها. أعتقد أنني سأحاول كلتا وظيفتي الخسارة للتحقق من أيهما أفضل.
التعليق الأكثر فائدة
يعد استخدام softmax للتصنيف الثنائي عبارة عن معاملات مفرطة ويجب ألا يكون ضروريًا. عند النقل من py-الأسرع-rcnn إلى المستكشف ، جربت كلاً من softmax و sigmoid لـ RPN وحصلت على استدعاء RPN مماثل. لم أعود إلى استخدام softmax لـ RPN مع FPN.