refinedet.pytorch
refinedet.pytorch copied to clipboard
arm filter redundant anchors in training phase?
Hello coder, I'm learning RefineDet architecture these days. After comparing different implements below
- https://github.com/luuuyi/RefineDet.PyTorch
- https://github.com/lzx1413/PytorchSSD
- yours
I found there is a different when training the model. That's do we need to filter redundant anchors using ARM when training model.
In the first implement. The author use below in RefineDetMultiBoxLoss function
if self.use_ARM: P = F.softmax(arm_conf_data, 2) arm_conf_tmp = P[:,:,1] object_score_index = arm_conf_tmp <= self.theta pos = conf_t > 0 pos[object_score_index.data] = 0
They filter the positive anchors using arm_conf However, In the second Implement, the author lzx1413 wrote belowif arm_data and filter_object: arm_conf_data = arm_conf.data[:,:,1] pos = conf_t > 0 object_score_index = arm_conf_data <= self.object_score pos[object_score_index] = 0
but in training code: refinedet_train_test.pyodm_loss_l, odm_loss_c = odm_criterion((odm_loc,odm_conf),priors,targets,(arm_loc,arm_conf),False)
The filter_object is disabled. However in the original paper, the author zhangshifeng writeI wonder whether It's a big difference to enable or disable this filter object ? Thanks!