微信公众号:OpenCV开发者联盟 关注获取更多计算机视觉与深度学习知识
SAM概述
分割任何模型 (Segment Anything Model - SAM) 是一种突破性的图像分割模型,可实现具有实时性能的快速分割。它构成了 Segment Anything 项目的基础,该项目引入了用于图像分割的新任务、模型和数据集。SAM 被设计为可提示的,允许它将零样本转移到新的图像分布和任务。该模型在 SA-1B 数据集上进行训练,该数据集在许可和尊重隐私的一千一百万张图像上包含超过 11 亿个蒙版。SAM展示了令人印象深刻的零样本分割性能,常规场合超过之前监督学习的结果。
主要特点
01
提示分段任务:
SAM 专为可提示的分割任务而设计,使其能够在给定任何分割提示(例如标识对象的空间或文本信息)的情况下返回有效的分割掩码。
02
高级架构:
SAM 利用强大的图像编码器、提示编码器和轻量级掩码解码器。这种架构在分割中实现了灵活的提示、实时掩码计算和模糊感知。
03
SA-1B 数据集:
Segment Anything项目引入了SA-1B数据集,该数据集包含1000多万张图像上的11亿多个掩码。该数据集是迄今为止最大的分割数据集,为 SAM 提供了用于训练的多样化和大规模数据源。
04
零样本性能:
SAM 在一系列分割任务中表现出卓越的零样本性能,开箱即用,可针对各种应用进行快速工程设计。
SAM 可用于各种视觉场景下游任务,涉及训练数据之外的对象和图像分布。包括边缘检测、对象推荐生成、实例分割和初级文本到掩码预测。通过采用提示工程,SAM可以零样本的方式适应新任务和数据分布,使其成为图像分割任务的多功能和强大工具。
YOLOv8中使用SAM模型
当前YOLOv8支持两种SAM模型,分别是base与large版本SAM模型。以base模型为例,基于YOLOv8框架,SAM实现推理图像分割一切得代码只需要如下几行:
from ultralytics import SAM
import cv2 as cv
model = SAM('sam_b.pt')
model.info() # display model information
result = model.predict("D:/bird_test/master.jpg")
运行结果显示如下:
基于YOLOv8对象检测模型,实现自动语义分割模型的标注:
from ultralytics.yolo.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model='sam_b.pt')
两行代码即可实现自动实例分割标注,从此爱上标注数据这个活!