玩转SAM(Segment Anything)
官网链接:
Segment Anything | Meta AI (segment-anything.com)
github链接:
论文链接:
[2304.02643] Segment Anything (arxiv.org)
数据集链接:
Segment Anything | Meta AI (segment-anything.com)
在线试玩链接:
Segment Anything | Meta AI (segment-anything.com)
SAM的出现是否示意着传统CV行业的落寞?随着Chatgpt、扩散模型等产品出现,prompt engineering提示工程、AIGC等成为了如今超级火热的话题。分割一切,Facebook利用超大数据集训练出来的SAM模型给CV界带来了巨大冲击,使得prompt engineering提示工程在CV领域同样得到发展应用,这也给我们众多计算机视觉研究者带来启发,基于大数据实现各类型场景视觉任务的可prompt模型,甚至统一视觉范式的终极大模型离我们越来越近。同样,也为我们带来担忧,人工智能好像在利用大数据进行固定范式的监督学习中越走越远,越发脱离人工智能的真正未来——自发式无监督式学习。不过在此我们就不谈了这些了,好好感受一下美味的SAM吧!
1、在线试玩
如果只想试玩两下,大家可以点击上述的在线试玩链接,开始冲浪吧!
官网demo链接给出了三种提示方法:点、框以及完全分割。
2、API调用
如果大家不想局限于在线试玩,想调用SAM的api接口实现自己的各种想法和需求,进行二次开发等,按我们就开始吧!
2.1 安装配置SAM环境
# 安装相关依赖
pip install opencv-python pycocotools matplotlib onnxruntime onnx
安装SAM
方法一:
pip install git+https://github.com/facebookresearch/segment-anything.git
方法二:
git clone git@github.com:facebookresearch/segment-anything.git
cd segment-anything; pip install -e .
2.2 操作说明
首先下载一个模型检查点。然后可以使用只需几行代码从给定的提示获取掩码:
from segment_anything import SamPredictor, sam_model_registry
sam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>")
predictor = SamPredictor(sam)
predictor.set_image(<your_image>)
masks, _, _ = predictor.predict(<input_prompts>)
或者为整个图像生成掩码:
from segment_anything import SamAutomaticMaskGenerator, sam_model_registry
sam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>")
mask_generator = SamAutomaticMaskGenerator(sam)
masks = mask_generator.generate(<your_image>)
此外,还可以利用命令行生成图像的掩码:
python scripts/amg.py --checkpoint <path/to/checkpoint> --model-type <model_type> --input <image_or_folder> --output <path/to/output>
注意:后续文章我们会更加详细地对SAM接口操作进行说明讲解!