目录

1.简单介绍

2.系统环境

3.安装配置

4.运行demo

4.1 fork

4.2修改配置


1.简单介绍

Meta发布首个基础图像分割模型SAM(SegmentAnythingModel)。

SAM已经学会了关于物体的一般概念,并且它可以为任何图像或视频中的任何物体生成掩码,甚至包括在训练过程中没有遇到过的物体和图像类型。

SAM足够通用,可以涵盖广泛的用例,并且可以在新的图像领域上即开即用,无需额外的训练。

SAM 可以使用各种输入提示包括点击,框选和文字,指定要在图像中分割的内容,并且可以灵活集成其他系统。

SAM 初步验证了多模态技术路径及其泛化能力,相当于计算机视觉领域的GPT-3。

官网:

Segment Anything | Meta AI

github:

facebookresearch/segment-anything

官网可以在线体验,以下内容主要介绍配置py调用sam的过程;

2.系统环境

没有GPU跑不了;没有GPU跑不了;没有GPU跑不了;

笔者配置:windows10,GPU 6G;

cmd查看显存占用情况;

nvidia-smi

 

3.安装配置

python >= 3.8;

pytorch >= 1.7, torchvision >= 0.8;

Start Locally | PyTorch

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

segment anything;

pip install git+https://github.com/facebookresearch/segment-anything.git

demo.py中用到的python库也需要安装:

cv2;

pip install opencv-contrib-python

matlab;

pip install matplotlib

jupyter;

用来把官方demo的ipynb的教程文档转成py脚本,不装也可以,手动cv一样的;

Project Jupyter | Home

可以装jupyterlab,功能更新更全,不过本文档都用不到;

也可以装经典版jupyter notebook;

安装jupyterlab

pip install jupyterlab

运行jupyterlab

jupyter-lab

安装 jupyter notebook

pip install notebook

运行jupyter notebook

jupyter notebook

4.运行demo

segment-anything/predictor_example.ipynb

segment-anything/automatic_mask_generator_example.ipynb

官方提供了两个演示demo,一个是手动选取某个范围识别生成块遮罩,一个是自动识别生成图片中的块遮罩;

4.1 fork

fork到本地后,先运行jupyter notebook把ipynb转成py文件;

导出的py文件直接放到ipynb同目录;

4.2 修改配置

看一下predictor_example.py(另一个demo也一样),需要配置两个部分:

1.图片地址,默认用demo的/images;

2.model checkpoint路径,官方提供了三种规模的模型;

如果显存不是很大,比如笔者6G,需要把py中的checkpoint换成小的vit_b;

默认的vit_h有2G多跑不起来,vit_b的识别效果在这个demo里也没差太多;

model checkpoint文件也直接放到ipynb同目录下;

# 图片路径
image = cv2.imread('images/truck.jpg')
# checkpoint路径
sam_checkpoint = "sam_vit_b_01ec64.pth"
model_type = "vit_b"

device = "cuda"

sam = sam_model_registry[model_type](checkpoint=sam_checkpoint)
sam.to(device=device)

最后运行py文件就可以查看图片效果了。

运行过程详细截图就不放了,一张一张出来的,依次关闭就可以了。

 


版权声明:本文为ForAnnuus原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/ForAnnuus/article/details/130103611