在构建视觉模型的应用之前,可视化模型预测是非常有帮助的。这将帮助更好地理解模型是如何表现的。使用Roboflow的supervisionPython包,可以将各种计算机视觉模型返回的分割遮罩绘制到图像上。在本指南中,将展示如何使用supervision绘制分割遮罩。
为了绘制分割遮罩,将使用supervision Python包。Supervision包含了一套注解器,允许从各种模型类型(从目标检测到分割)绘制预测结果。
首先,需要安装supervision。可以通过以下命令安装:
pip install supervision
为了绘制分割遮罩,需要将数据加载到supervision的Detections对象中。这个对象以一种标准格式存储计算机视觉模型的预测结果,适用于所有supervision API,包括检测可视化、检测过滤和度量。
在本指南中,将从Roboflow训练的模型加载数据,并使用Roboflow Inference部署的开源推理服务器。可以使用以下代码加载模型预测:
import cv2
import supervision as sv
from inference import get_model
model = get_model(model_id="yolov8n-640")
image = cv2.imread("SOURCE_IMAGE_PATH")
results = model.infer(image)[0]
detections = sv.Detections.from_inference(results)
有多种数据加载器可供流行的计算机视觉Python包使用,包括:
from_deepsparse(Deepsparse)
from_detectron2(Detectron2)
from_mmdetection(MMDetection)
from_sam(Segment Anything Model)
from_yolo_nas(YOLO-NAS)
有关完整的数据加载器列表,请查看。
现在已经将模型的预测加载到supervision对象中,可以使用这些检测结果与supervision Annotators API一起可视化模型结果。
有多种注解器支持分割遮罩。要绘制分割遮罩,可以使用MaskAnnotator。如果想绘制分割遮罩之外的所有区域(适合在图像中移除背景),可以使用BackgroundColorAnnotator。
有关supervision支持的所有计算机视觉模型类型的注解器的完整列表,请查看。
让使用MaskAnnotator。
可以这样注解检测结果:
mask_annotator = sv.MaskAnnotator()
label_annotator = sv.LabelAnnotator(text_position=sv.Position.CENTER_OF_MASS)
annotated_image = mask_annotator.annotate(
scene=image, detections=detections)
annotated_image = label_annotator.annotate(
scene=annotated_image, detections=detections)
sv.plot_image(annotated_image)
当模型在图像上运行时,结果如下:
系统已成功在检测周围绘制了紧密的分割遮罩。
使用supervisionPython包,可以从一系列流行的计算机视觉模型中绘制分割遮罩,从Segment Anything到YOLOv7 Segmentation到YOLOv8 Segmentation。
在本指南中,安装了supervision,从部署在Roboflow上的模型加载了检测结果,并使用Roboflow Inference部署,然后使用MaskAnnotator在图像上可视化了模型的检测结果。