jwyang / fpn.pytorch

Pytorch implementation of Feature Pyramid Network (FPN) for Object Detection
MIT License
955 stars 224 forks source link

when i porting fpn pytorch version 0.4 to 1.0, i face with error #36

Closed EzoBear closed 5 years ago

EzoBear commented 5 years ago
    if cfg.POOLING_MODE == "crop":

        grid_xy = _affine_grid_gen(rois, base_feat.size()[2:], self.grid_size)
        grid_yx = torch.stack([grid_xy.data[:,:,:,1], grid_xy.data[:,:,:,0]], 3).contiguous()
        roi_pool_feat = self.RCNN_roi_crop(base_feat, Variable(grid_yx).detach())
        if cfg.CROP_RESIZE_WITH_MAX_POOL:
            roi_pool_feat = F.max_pool2d(roi_pool_feat, 2, 2)
    else :
        roi_pool_feats = []
        box_to_levels = []
        for i, l in enumerate(range(2, 6)):
            if (roi_level == l).sum() == 0:
                continue
            idx_l = (roi_level == l).nonzero().squeeze()
            box_to_levels.append(idx_l)
            #scale = feat_maps[i].size(2) / im_info[0][0]
            if cfg.POOLING_MODE == 'align':
                feat = self.RCNN_roi_align(feat_maps[i], rois[idx_l])
            elif cfg.POOLING_MODE == 'pool':
                feat = self.RCNN_roi_pool(feat_maps[i], rois[idx_l])
            roi_pool_feats.append(feat)

        roi_pool_feat = torch.cat(roi_pool_feats, 0)       
        box_to_level = torch.cat(box_to_levels, 0)
        idx_sorted, order = torch.sort(box_to_level)
        roi_pool_feat = roi_pool_feat[order]

    return roi_pool_feat

in _PyramidRoI_Feat function of fpn.py when i porting test_net code to change torch version 0.4 to 1,
occured "runtime error : zero-dimensional tensor(at position 3) cannot be concatenated " because 724 box_to_levle[3]'s dimesion is 1 error data shape : tensor(271,device='cuda:0') other data shape : tensor([3, 10, 13, 14, .... 282],device='cuda:0')

i change some code

  1. test_net.py ( line : 277 ) before : cls_dets = torch.cat(cls_boxes, cls_scores, 1) after : cls_dets = torch.cat((cls_boxes, cls_scores.unsqueeze(1)), 1)
  2. test_net.py ( line : 279 ) before : keep = nms(cls_dets, cfg.TEST.NMS) after : keep = nms(cls_boxes[order, :], cls_scores[order], cfg.TEST.NMS)

my enviorment : based project is your faster - rcnn , which support version torch 1.0 anaconda pytorch1.0, cuda version is 10 python version is 2.7 dataset is voc2007 ( occured error in 001433 data, test data 724th of vocdata2007)

i wondering where i shold debug. i should not get a sense.

PyNancy commented 5 years ago

hi,i want to ask you some question about build.py when you change torch version 0.4 to 1, change torch.utils.ffi.create_extension to BuildExtension ?