Detectron2 Panoptic FPN 模型部分执行 - 类型错误:'NoneType'对象不可迭代



我正在尝试提取基于 Detectron2 ResNet50 的 FPN 模型的全景输出的预输出特征图。

因此,为了获得部分模型输出,我遵循官方的 Detectron2 建模文档来部分执行模型。

请在下面找到代码:

# Setting the model Configurations
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file(
"COCO-PanopticSegmentation/panoptic_fpn_R_50_1x.yaml")
)
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(
"COCO-PanopticSegmentation/panoptic_fpn_R_50_1x.yaml"
)
# Build the model from config
model = build_model(cfg)
# Loading an image just for testing
im = cv2.imread("./detectron/input.jpg")
im = torch.from_numpy(im).cuda().permute(2, 0, 1).unsqueeze(0).float()
# Extracting Features - This part works fine
features = model.backbone(im)
# Extracting the proposals - Throws Error
proposals = model.proposal_generator(im, features)

请找到上述步骤引发的错误,如下所示:

TypeError                                 Traceback (most recent call last)
<ipython-input-17-dd53471cf2d2> in <module>
----> 1 proposals = model.proposal_generator(im, features)
~/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs)
548             result = self._slow_forward(*input, **kwargs)
549         else:
--> 550             result = self.forward(*input, **kwargs)
551         for hook in self._forward_hooks.values():
552             hook_result = hook(self, input, result)
/media/Data/Documents/Python-Codes/Freelance/detectron2/detectron2/modeling/proposal_generator/rpn.py in forward(self, images, features, gt_instances)
409 
410         if self.training:
--> 411             gt_labels, gt_boxes = self.label_and_sample_anchors(anchors, gt_instances)
412             losses = self.losses(
413                 anchors, pred_objectness_logits, gt_labels, pred_anchor_deltas, gt_boxes
~/miniconda3/envs/pytorch/lib/python3.7/site-packages/torch/autograd/grad_mode.py in decorate_context(*args, **kwargs)
13         def decorate_context(*args, **kwargs):
14             with self:
---> 15                 return func(*args, **kwargs)
16         return decorate_context
17 
/media/Data/Documents/Python-Codes/Freelance/detectron2/detectron2/modeling/proposal_generator/rpn.py in label_and_sample_anchors(self, anchors, gt_instances)
272         anchors = Boxes.cat(anchors)
273 
--> 274         gt_boxes = [x.gt_boxes for x in gt_instances]
275         image_sizes = [x.image_size for x in gt_instances]
276         del gt_instances
TypeError: 'NoneType' object is not iterable

请让我知道我做错了什么,以及如何解决它。关于为什么会出现此错误的解释也将非常有帮助。

如果需要任何其他信息,请告诉我。

通过更多的挖掘,我解决了这个问题。上面的代码中有几个问题:

  1. 我没有先将模型设置为评估模式 -model.eval().模型需要设置为拳头eval
  2. mode.proposal_generator()期望以ImageList对象的形式输入,有关其详细信息可在此处找到。

执行上述两个步骤解决了问题。

最新更新