将lang-segment-anything(Language Segment-Anything)模型部署在ubuntu上

将lang-segment-anything(Language Segment-Anything)模型部署在ubuntu上

一.模型及权重文件下载

lang-segment-anything用到了SAM, GroundingDINO, 而GroundingDINO用到了bert-base-uncased,在线下载很慢容易失败,因此最好将这几个模型的相关文件下载到本地。

(1)lang-segment-anything:https://github.com/luca-medeiros/lang-segment-anything

以下下载的模型及权重可都放到lang-segment-anything文件目录下

(2)下载SAM模型权重(vit-h SAM): https://github.com/facebookresearch/segment-anything?tab=readme-ov-file

在这里插入图片描述

(3)下载GroundingDINO模型及其权重:https://github.com/IDEA-Research/GroundingDINO

模型:
在这里插入图片描述
及其权重:
在这里插入图片描述

(4)下载 bert-base-uncased 模型:https://huggingface.co/google-bert/bert-base-uncased/tree/main

在这里插入图片描述

二、环境配置
1.环境配置
conda env create -f environment.yml

conda activate lsa
2.Docker安装(安装如果遇到报错可先尝试下一步,在代码调试过程中根据报错来配置)
docker build --tag lang-segment-anything:latest .
	
docker run --gpus all -it lang-segment-anything:latest
三、修改相关文件并运行
1.将pyproject.toml 中以下划线的这行代码注释掉

在这里插入图片描述

2.修改groundingdino文件夹下的get_tokenlizer.py文件

bert-base-uncased模型改为离线加载方式(前提:已经按照上面的方式下载好了该模型),确保代码总是加载同一个预训练模型 bert-base-uncased,使得在网络不可用的情况下也能加载和使用该模型。
在这里插入图片描述
修改后的get_tokenlizer.py文件如下:

from transformers import AutoTokenizer, BertModel, BertTokenizer, RobertaModel, RobertaTokenizerFast
import os
 
def get_tokenlizer(text_encoder_type):
    if not isinstance(text_encoder_type, str):
        # print("text_encoder_type is not a str")
        if hasattr(text_encoder_type, "text_encoder_type"):
            text_encoder_type = text_encoder_type.text_encoder_type
        elif text_encoder_type.get("text_encoder_type", False):
            text_encoder_type = text_encoder_type.get("text_encoder_type")
        elif os.path.isdir(text_encoder_type) and os.path.exists(text_encoder_type):
            pass
        else:
            raise ValueError(
                "Unknown type of text_encoder_type: {}".format(type(text_encoder_type))
            )
    print("final text_encoder_type: {}".format(text_encoder_type))
 
    # tokenizer = AutoTokenizer.from_pretrained(text_encoder_type)
    tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
    return tokenizer
 
 
def get_pretrained_language_model(text_encoder_type):
    if text_encoder_type == "bert-base-uncased" or (os.path.isdir(text_encoder_type) and os.path.exists(text_encoder_type)):
        # return BertModel.from_pretrained(text_encoder_type)
        return BertModel.from_pretrained
### 如何安装 `lang-segment-anything` 库 为了成功安装并配置 `lang-segment-anything`,需遵循一系列特定步骤来设置开发环境。确保已安装 Python 3.x 和 pip 工具之后,可以通过以下方法完成必要的准备工作。 #### 创建虚拟环境 推荐使用 Conda 来管理依赖关系和创建隔离的工作空间。依据 GitHub 上的操作指南,利用 YAML 文件定义所需软件包列表: ```bash conda env create -f environment.yml ``` 需要注意的是,在 `environment.yml` 文件中应将 groundingdino 修改为 groundingdino-py,并且可以选择跳过 lang-sam 的安装[^3]。 #### 安装 PyTorch 及其组件 对于 GPU 支持版本的 PyTorch 安装命令如下所示: ```bash pip install torch torchvision torchmetrics --index-url https://download.pytorch.org/whl/cu118 ``` 此指令会下载适用于 CUDA 11.8 版本的预编译二进制文件。 #### 获取项目依赖项 除了上述核心库外,还需满足其他第三方模块的要求。这通常涉及读取根目录下的 `requirements.txt` 文件并通过 Pip 执行批量安装任务: ```bash pip install -r requirements.txt ``` 该过程涵盖了 segment-anything 和 groundingdino 等重要组成部分的部署工作[^2]。 #### 下载模型权重 最后一步是从官方资源获取训练好的模型参数。具体做法取决于项目的文档说明或脚本提示。 通过以上流程,便可以在本地环境中顺利搭建起支持文本提示功能的语言分割工具——`lang-segment-anything`[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值