用自然语言分割一切图像lang-segment-anything(language-SAM)的安装与运行

GitHub原文入口:https://github.com/luca-medeiros/lang-segment-anything

vit_h model下载:https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth

本次部署使用的平台是Auto-DL的机器,配置环境如下:

用自然语言分割一切图像lang-segment-anything(language-SAM)的安装与运行_第1张图片

以下操作,均结合本人所使用的平台,如有差错,请结合自身的机器进行操作

1st:准备工作

打开JupyterLab,进入到Terminal,使用

pip list

查看当前Torch Torchvision版本(这里平台已经配置好了)。

这里我发现平台的pip版本偏低,使用

pip install --upgrade pip

进行升级。

确认好pip torch torchvision版本后便可进入下一步(这里请结合自身环境安装对应的torch torchvision版本),链接放在这PyTorch官网

用自然语言分割一切图像lang-segment-anything(language-SAM)的安装与运行_第2张图片

2rd:下载、安装

在此平台我先进入到数据盘里面

cd /root/autodl-tmp

接着下载、安装项目

pip install -U git+https://github.com/luca-medeiros/lang-segment-anything.git

或者

git clone https://github.com/luca-medeiros/lang-segment-anything && cd lang-segment-anything
pip install -e .

(这里本人使用第二种进行安装)

在经历一系列漫长的下载、安装后就可以了

!!!注意!!!

如果是使用本平台,请在此之前阅读‘使用文档’打开资源加速器,否则下载会及其的漫长!

(本人在本地安装的时候一直遇到ground安装失败,如果也有此情况的UU请检查下自己的GCC、C++版本是否过低,网络连接是否顺畅【否则 downland transfrontier资源下载慢!】)

安装完后,还要下载vit_h的模型(下载地址在最上方)

这里以我的平台为例

cd /root/autodl-tmp/lang-segment-anything
wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth

把模型下载到language的目录下(这里要记住模型的路径哦),然后进行最后的流程。

3rd:运行程序

在这一步,本地部署的朋友可以在lang-segment-anything 的目录下使用terminal运行

lightning run app app.py

启动网页(效果如下)

使用auto-dl平台的UU也运行一下吧(虽然我打不开网页,但是我也不清楚不运行后面阶段会不会报错)

然后在lang的目录下创建一个python3的notebook

在cell里面运行这段代码(LangSAM和Image的路径请结合自己的环境进行配置!)

from PIL import Image
from lang_sam import LangSAM

model = LangSAM("vit_h", "/root/autodl-tmp/lang-segment-anything/sam_vit_h_4b8939.pth")
image_pil = Image.open("/root/autodo/lang-segment-anything/assets/car.jpeg").convert("RGB")
text_prompt = "wheel"
masks, boxes, phrases, logits = model.predict(image_pil, text_prompt)

运行完后你会得到这样一串红红的东西 

用自然语言分割一切图像lang-segment-anything(language-SAM)的安装与运行_第3张图片

此时此刻我以为失败了,但是发现并无大问题,接着在新的cell里面运行这段代码

import matplotlib.pyplot as plt

# 打印分割后的 masks 图像
for mask in masks:
    plt.imshow(mask, cmap='gray')
    plt.show()

 好了,大功告成,分割成功!(这里分割的是汽车的轮子)

用自然语言分割一切图像lang-segment-anything(language-SAM)的安装与运行_第4张图片

再试试看其他图像,修改输入的文本吧! 

你可能感兴趣的:(图像处理,pytorch,边缘计算,视觉检测)