最近每天打开微信看到10个公众号里面差不多有11个都在各种玩赚chatGPT,每个都在说是各种大好风口,哎,看得眼睛都是累的。
今天下午无意间看到Meta发布了一款号称能分割一切的CV大模型,CV圈也开始卷起来,今年各种大模型要爆发了感觉。
吃瓜群众满怀好奇,点开了解一下。
官方论文在这里,感兴趣可以自行阅读。
官方同时也开源了项目,地址在这里,如下所示:
可以看到:才开源了一天的时间就已经有6k的star量了,后续增长感觉会更猛的!
官方也给出来了数据集地址,在这里,如下所示:
有需要的话可以自行下载使用即可。
当然了这么精彩的技术自然不会少的了技术博客的介绍,官方的技术博客在这里。
为了能让大家第一时间上手体验,这里官方也是开放出来了Demo地址,在这里,如下所示:
上传一张我本地的图片,用的就是上一篇博客摔倒检测的数据集,如下:
我添加了一个box,瞬间就给我分割出来了,如下:
随着光标的移动,模型给出来的响应也是很快的:
甚至还可以一键cutout所有的子对象如下:
很强大了已经。
官方这里也提供了很多实例图片,简单看下:
选择小狗试试吧:
添加box对指定区域直接分割:
再来一张:
效果如下:
指定区域分割:
最后再来试一下:
效果如下:
感兴趣的话都可以自己玩玩体验一下。
当然了如果想要自己安装使用也是可以的,官方同样给了安装说明如下:
先安装一些基础依赖
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 .
模型库在这里,需要的自行下载即可。
使用方法也很简单如下:
#from a given prompt:
from segment_anything import build_sam, SamPredictor
predictor = SamPredictor(build_sam(checkpoint="</path/to/model.pth>"))
predictor.set_image(<your_image>)
masks, _, _ = predictor.predict(<input_prompts>)
或者也可以如下使用:
#generate masks for an entire image:
from segment_anything import build_sam, SamAutomaticMaskGenerator
mask_generator = SamAutomaticMaskGenerator(build_sam(checkpoint="</path/to/model.pth>"))
masks = mask_generator_generate(<your_image>)
当然了,mask也可以通过命令行生成,如下:
python scripts/amg.py --checkpoint <path/to/sam/checkpoint> --input <image_or_folder> --output <output_directory>
关于两种不同的调用计算方式,官方也都给出来了详细的demo样例如下:
predictor_example
automatic_mask_generator_example
想要导出onnx格式的话也是可以的,如下:
python scripts/export_onnx_model.py --checkpoint <path/to/checkpoint> --output <path/to/output>
这里一共提供了H、L、B三种不同size的模型,如下:
ViT-H SAM model
ViT-L SAM model
ViT-B SAM model
三种不同模型体积如下:
可以根据自己的兴趣自由使用即可。
今天就简单到这里了,后面找时间在仔细看看吧!