tpark94 / spnv2

PyTorch implementation of SPNv2
MIT License
35 stars 2 forks source link

EFFICIENTDET_PHI and Backbone name #12

Open ammaccabanane95 opened 1 month ago

ammaccabanane95 commented 1 month ago

Dear Dr. Park, Thank you for your work and for your contribution to research. From your paper (and the ones you cited) I understand that \phi is an hyperparameter to adjust the number of parameters of the Efficientdet network. However, I have to set an EFFICIENTDET_PHI parameter inside the configuration file and a backbone name (efficientdet_d0, efficientdet_d1 etc.). In your example in the folder "experiments", you set the same number for EFFICIENTDET_PHI (e.g = 3) and for backbone name (e.g efficientdet_d3) both in the case of \phi = 3 that \phi = 6 (efficientdet_d6). I do not understant whether setting a different value (e.g. EFFICIENTDET_PHI = 4 and efficientdet_d2) is a conceptual mistake. Thank you for your attention, Best regards

Antonio

tpark94 commented 1 month ago

Hello,

Thanks for your question. Looking back at the code, it seems MODEL.BACKBONE.NAME is irrelevant since the backbone is created using the EFFICIENTDET_PHI parameter, e.g.,

# Regular with BN (pretrained on ImageNet)
self.efficientnet = eval(f'efficientnet_b{cfg.MODEL.EFFICIENTDET_PHI}')(
    pretrained=True
)

or any other such instances in core/nets/backbone/efficientdet.py. It seems the backbone name is only used for recording purposes (e.g., on a console or as the directory name), so for example if you train with EFFICIENTDET_PHI=3, you would want to set the name as efficientdet_d3 so that the trained model is associated with the correct backbone name in your output/log directories. Beyond this, the backbone name is irrelevant, you can probably achieve the same with using just EFFICIENTDET_PHI parameter.

Please let me know if you find it relevant otherwise.