如何在没有类标签的情况下可视化实例预测?

问题描述 投票:0回答:2
import matplotlib.pyplot as plt
predicted_images_path = os.path.abspath("/content/predicted")
dataset_dicts_validation = DatasetCatalog.get('void-detection-2-valid')
for d in dataset_dicts_validation:
    im = cv2.imread(d["file_name"])
    outputs = predictor(im)
    v = Visualizer(im[:, :, ::-1],
                   metadata = metadata,
                   scale=0.5,
                   instance_mode=ColorMode.IMAGE_BW
    )
    out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
    fig = plt.figure(frameon=False, dpi=1)
    fig.set_size_inches(1024,1024)
    ax = plt.Axes(fig, [0., 0., 1., 1.])
    ax.set_axis_off()
    fig.add_axes(ax)
    ax.imshow(cv2.cvtColor(out.get_image()[:, :, ::-1], cv2.COLOR_BGR2RGB), aspect='auto')
    fig.savefig(f"{predicted_images_path}/{d['file_name'].split('/')[-1]}")

分割图像:

我使用 detectorron2 来训练模型并对检测到的空洞进行预测。如何仅标记分段而不使用文字的形状。

二值图像:

python machine-learning deep-learning detectron mask-rcnn
2个回答
0
投票
import os
import cv2
import matplotlib.pyplot as plt
from detectron2.data import DatasetCatalog
from detectron2.utils.visualizer import Visualizer, ColorMode

predicted_images_path = os.path.abspath("/content/predicted")
dataset_dicts_validation = DatasetCatalog.get('void-detection-2-valid')

for d in dataset_dicts_validation:
    im = cv2.imread(d["file_name"])
    outputs = predictor(im)
    
    # Visualize the instances without labels
    v = Visualizer(im[:, :, ::-1], metadata=metadata, scale=0.5, instance_mode=ColorMode.SEGMENTATION)
    out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
    
    # Save the modified image without labels
    cv2.imwrite(f"{predicted_images_path}/{d['file_name'].split('/')[-1]}", out.get_image()[:, :, ::-1])

在此代码中:

我们设置instance_mode=ColorMode.SEGMENTATION来可视化没有标签或文本注释的实例。 我们直接保存修改后的图像,而不使用matplotlib,以确保没有向图像添加额外的注释或标签。 通过执行此操作,您将生成仅包含检测到的形状而没有附带文字或标签的图像。可能需要根据您的数据集和用例的具体情况进行调整。

如果数据集使用 Roboflow 标记且采用 COCO 分割格式,请尝试编辑以下代码

import os
import cv2
import matplotlib.pyplot as plt
from detectron2.data import DatasetCatalog
from detectron2.utils.visualizer import Visualizer, ColorMode

predicted_images_path = os.path.abspath("/content/predicted")
dataset_dicts_validation = DatasetCatalog.get('void-detection-2-valid')

for d in dataset_dicts_validation:
    im = cv2.imread(d["file_name"])
    outputs = predictor(im)
    
    # Remove text labels from instance predictions
    instances = outputs["instances"]
    instances.remove("pred_classes")  # Remove predicted class labels
    instances.remove("scores")         # Remove confidence scores
    
    # Visualize the instances without labels
    v = Visualizer(im[:, :, ::-1], metadata=metadata, scale=0.5, instance_mode=ColorMode.SEGMENTATION)
    out = v.draw_instance_predictions(instances.to("cpu"))
    
    # Save the modified image without labels
    cv2.imwrite(f"{predicted_images_path}/{d['file_name'].split('/')[-1]}", out.get_image()[:, :, ::-1])

-1
投票

我也想问这个问题

© www.soinside.com 2019 - 2024. All rights reserved.