分割
不需要训练(training-free)的算法
Few-shot learning指从少量标注样本中进行学习的一种思想
根据样本量 的需求可以分为:传统监督式学习、Few-shot Learning、One-shot Learning、Zero-shot Learning
海量数据 + 反复训练
Few-shot Learning(少样本学习)是Meta Learning(元学习)中的一个实例,
不同类别的样本只有一个,则成为One-shot learning.
token embedding prompt
SAM
from segment_anything import SamPredictor, sam_model_registry,SamAutomaticMaskGenerator
结构:三个大模块,image encoder,prompt encoder和mask decoder
image encoder旨在映射待分割的图像 到图像特征空间
prompt encoder则是负责映射输入的prompt到prompt的特征空间 sparse和dense两种prompt
目标框或者是描述目标的text 对应的是mask类型的promp
mask decoder
整合 image encoder和prompt encoder分别输出的两个embedding, embedding的feature map解码出最终的分割mask
流程:
1.ViT的流程:feature—map patch_embedding positional_embedding
2.prompt:
sparse prompt
prompt是point: 位置编码 pos点还是neg点
prompt是box : 左上和右下两个点的位置编码 是一组一维向量用来描述这个点是“左上”还是“右下”
dense prompt
mask
prompt embedding(这一步改名叫prompt token)
3.mask decoder
prompt embedding和image embedding
output tokens: output tokens由两个部分构成 一个是iou token mask token
Personalize-SAM
说明:
对象和新测试图像上所有像素之间的特征相似度 位置先验
from per_segment_anything import sam_model_registry, SamPredictor
输入:
The user provides one example image + corresponding mask,
输出
the PerSAM method allows to directly segment the target concept (like a dog) in new images.
python persam.py --outdir img
说明:
Step 1: get target embedding
SAM's vision backbone (called ref_feat
Step 2: calculate cosine similarity
01.准备路径-导入图片和对应的mask
02.Load SAM
sam = sam_model_registry[sam_type](checkpoint=sam_ckpt).cuda()
predictor = SamPredictor(sam)
03.
001.Image features encoding
002.Target feature extraction
004.开始推理
001.导入测试数据
002.# Image feature encoding
003.# Cosine similarity
004.# Positive-negative location prior
005. # Obtain the target guidance for cross-attention layers
006.# First-step prediction
007. # Cascaded Post-refinement-1
008. # Cascaded Post-refinement-2
参考
https://github.com/facebookresearch/segment-anything