【问题标题】:After finetuning Faster RCNN object detection model, how to visualize bbox prediction?微调 Faster RCNN 目标检测模型后,如何可视化 bbox 预测?
【发布时间】:2020-06-01 22:54:06
【问题描述】:

我在自己的自定义数据集上微调了 pytorch torchvision model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)。

我遵循了这个指南https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html#torchvision-object-detection-finetuning-tutorial,但只训练了 Faster RCNN,而不是 Mask RCNN。

我成功地完成了训练,没有错误,模型返回了一个包含预测框、标签和分数的字典。

在我遵循的指南中,他们展示了如何可视化训练模型预测的掩码。 有没有类似的方法来可视化边界框?我很难弄清楚这一点。

谢谢

【问题讨论】:

    标签: deep-learning computer-vision pytorch faster-rcnn torchvision


    【解决方案1】:

    FasterRCNN 的预测格式为:

    >>> predictions = model([input_img_tensor])
    [{'boxes': tensor([[419.6865, 170.0683, 536.0842, 493.7452],
              [159.0727, 180.3606, 298.8194, 434.4604],
              [439.7836, 222.6208, 452.0138, 271.8359],
              [444.3562, 224.4628, 456.1511, 265.5336],
              [437.7808, 226.5965, 446.2904, 271.2691]], grad_fn=<StackBackward>),
      'labels': tensor([ 1,  1, 32, 32, 32]),
      'scores': tensor([0.9997, 0.9996, 0.5827, 0.2102, 0.0943], grad_fn=<IndexBackward>)}]
    

    其中预测框为[x1, y1, x2, y2] 格式,其值介于0H0W 之间。

    您可以使用 OpenCV 的 rectangle 函数在图像上叠加边界框。

    import cv2
    img = cv2.imread('input_iamge.png', cv2.COLOR_BGR2RGB)
    
    for i in range(len(predictions[0]['boxes'])):
        x1, x2, x3, x4 = map(int, predictions[0]['boxes'][i].tolist())
        print(x1, x2, x3, x4)
        image = cv2.rectangle(img, (x1, x2), (x3, x4), (255, 0, 0), 1)
    
    cv2_imshow('img', image)
    

    【讨论】:

      【解决方案2】:

      您可以使用FiftyOne 轻松制作数据集并向其中添加预测。然后,您可以在交互式应用程序中将它们可视化。本教程遵循与您所做的类似的工作流程:https://voxel51.com/docs/fiftyone/tutorials/evaluate_detections.html

      这比必须单独可视化每个图像要好得多。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-12
      • 2018-01-09
      • 2020-08-22
      • 2021-03-03
      • 2020-06-17
      • 2021-10-14
      • 2021-09-18
      • 2019-11-06
      相关资源
      最近更新 更多