我正在尝试提取基于 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
请让我知道我做错了什么,以及如何解决它。关于为什么会出现此错误的解释也将非常有帮助。
如果需要任何其他信息,请告诉我。
通过更多的挖掘,我解决了这个问题。上面的代码中有几个问题:
- 我没有先将模型设置为评估模式 -
model.eval()
.模型需要设置为拳头eval
。 mode.proposal_generator()
期望以ImageList
对象的形式输入,有关其详细信息可在此处找到。
执行上述两个步骤解决了问题。