当前位置: 首页 > news >正文

huggingface学习|云服务器部署Grounded-Segment-Anything:bug总会一个一个一个一个又一个的解决的

文章目录

  • 一、环境部署
    • (一)模型下载
    • (二)环境配置
    • (三)库的安装
  • 二、运行
    • (一) 运行grounding_dino_demo.py文件
    • (二)运行grounded_sam_demo.py文件
    • (三)运行grounded_sam_inpainting_demo.py 文件
  • 三、遇到的问题和bug
    • (一)安装groundingdino库时报错command:'gcc' failed with exit status 1
    • (二)运行grounding_dino_demo.py文件时报错OSError:
    • (三)运行grounded_sam_inpainting_demo.py 文件时报错OSError:


一、环境部署

(一)模型下载

  1. 下载Grounded-Segment-Anything模型(如果git clone不下来可以直接官网上下压缩包然后解压,耗费的时间也不长)。
git clone https://github.com/IDEA-Research/Grounded-Segment-Anything.git
  1. 下载了Grounded-Segment-Anything模型后会发现以下两个文件夹是空的,因此需要另行下载,可以自己手动去官网(VISAM、grounded-sam-osx)下载压缩包解压,并保存在Grounded-Segment-Anything文件夹中所对应的位置。
    在这里插入图片描述

  2. 模型权重下载:将以下模型权重下载后放在Grounded-Segment-Anything的文件夹下
    groundingdino_swint_ogc.pth
    sam_vit_h_4b8939.pth

(二)环境配置

  1. 创建虚拟环境:
conda create -n env_grounded_segment_anything python==3.8.10
  1. 进入虚拟环境:
conda activate env_grounded_segment_anything
  1. 安装pytorch:
    (这里要特别注意torch和cuda的对应关系,pytorch官网)中有写,grounde-segment-anything模型的官方要求的cuda版本是11.3,但是我使用的学校的云服务器配置中cuda版本是12.0,不好换,查了issue里其他人说也是ok的就没有换。
    在这里插入图片描述
pip install torch==2.1.0+cu121 torchvision==0.16.0+cu121 torchaudio==2.1.0 -f https://download.pytorch.org/whl/torch_stable.html
  1. 手动设置环境变量,(在不适用docker,使用cuda构建本地GPU环境的情况下),如果之前cuda版本不是11.3的,记得自己换一下第三条代码。
export AM_I_DOCKER=False
export BUILD_WITH_CUDA=True
export CUDA_HOME=/path/to/cuda-11.3

(三)库的安装

pip install -r requirements.txt 
  1. 安装segment_anything:
python -m pip install -e segment_anything
  1. 安装GroundingDINO:
    gcc一定要是9.4.0版本的!!!(血的教训)(不然一直报错gcc)
python -m pip install -e GroundingDINO
python setup.py build
python setup.py install
  1. 安装diffusers:
pip install --upgrade diffusers[torch]
  1. 其他依赖项
pip install opencv-python pycocotools matplotlib onnxruntime onnx ipykernel
pip install --upgrade transformers

二、运行

(一) 运行grounding_dino_demo.py文件

python grounding_dino_demo.py

运行结果:(输出一个annotated_image.jpg)
在这里插入图片描述

(二)运行grounded_sam_demo.py文件

python grounded_sam_demo.py --config GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py --grounded_checkpoint groundingdino_swint_ogc.pth --sam_checkpoint sam_vit_h_4b8939.pth --input_image assets/demo1.jpg --output_dir "outputs" --box_threshold 0.3 --text_threshold 0.25 --text_prompt "bear" --device "cuda"

运行结果:生成一个output文件夹,文件夹里包含grouded_sam_output.jpg(显示生成框图片)、mask.jpg(mask掩码图片)、raw_image.jpg(原始图片)和mask.json:
在这里插入图片描述
grouded_sam_output.jpg(显示生成框图片):
在这里插入图片描述
mask.jpg(mask掩码图片):
在这里插入图片描述
raw_image.jpg(原始图片):
在这里插入图片描述

(三)运行grounded_sam_inpainting_demo.py 文件

python grounded_sam_inpainting_demo.py \--config GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py \--grounded_checkpoint groundingdino_swint_ogc.pth \--sam_checkpoint sam_vit_h_4b8939.pth \--input_image assets/inpaint_demo.jpg \--output_dir "outputs" \--box_threshold 0.3 \--text_threshold 0.25 \--det_prompt "bench" \--inpaint_prompt "A sofa, high quality, detailed" \--device "cuda"

运行结果:生成一个output文件夹,文件夹里包含grouded_sam_output.jpg(显示生成框图片)、grounded_sam_inpainting_output.jpg(修复后图片)和raw_image.jpg(原始图片):

grounded_sam_output.jpg(显示生成框图片):
在这里插入图片描述

grounded_sam_inpainting_output.jpg:
在这里插入图片描述
raw_image.jpg(原始图片):

在这里插入图片描述

三、遇到的问题和bug

(一)安装groundingdino库时报错command:‘gcc’ failed with exit status 1

这个问题困扰了好几天,最终得到的解决方案:

  1. 没有装gcc,这个可以在终端输入gcc -v如果没有输出结果就说明没有,应该去安装
  2. 装了gcc但是依旧报错,说明版本不对,试了很多次查了很多资料后发现gcc9.4.0是ok的(反正我是9.4.0才行)
  3. gcc版本和g++版本不一致,这个就是直接重新装gcc9.4.0的同时就可以解决

由于我用的学校服务器,没有root权限,很多命令比如说sudo等就用不了,因此只能采用以下方式下载gcc9.4.0,实际上可以直接通过sudo等命令直接下载。

gcc9.4.0下载方式:

  1. 下载gcc9.4.0的压缩包gcc-9.4.0.tar.gz:可以直接去官网下载,也可以使用代码:
conda install https://anaconda.org/brown-data-science/gcc/9.4.0/download/linux-64/gcc-9.4.0-0.tar.bz2
  1. 解压
tar -xzf gcc-9.4.0.tar.gz
  1. 进入gcc-9.4.0文件夹新建一个文件夹gcc-9.4.0-build(可以随便取名字),主要是用于安装 gcc
cd gcc-9.4.0
mkdir gcc-9.4.0-build  
​cd gcc-9.4.0-build
  1. 在刚刚创建的文件夹gcc-9.4.0-build中执行以下命令,安装gcc
../configure --disable-checking --enable-languages=c,c++,fortran --disable-multilib --prefix=/path/to/install/gcc-9.4 --enable-threads=posix
  1. 编译环境
    编译的时间特别长,快的话一两个小时,慢的话可能要三四个小时,(所以如果像我一样是在学校服务器上运行代码,尽量申请长点的时间)可以直接用make,也可以在后边加上j+数字,比如说make -j4,表示选择4个核心去编译,速度会快一些。
make
  1. 安装
make install
  1. 添加环境变量

输入以下代码进入bashrc的编辑模式

vim ~/.bashrc

按下a键后进入insert模式(进入insert模式后才能对文件内容进行修改),然后在该界面的最后几行复制粘贴以下代码,其中path就是之前设置的gcc-9.4.0-build的地址

export PATH=/public/home/mcao/usr/xy/source/gcc/bin:$PATH  
export LD_LIBRARY_PATH=/public/home/mcao/usr/xy/source/gcc/lib/:/public/home/mcao/usr/xy/source/gcc/lib64/:$LD_LIBRARY_PATH

输入完成后按ESC键,然后输入 :wq 后回车退出界面
最后输入以下代码使得配置的环境在这个终端生效

source ~/.bashrc

最后可以检查一下gcc版本:

gcc -v

(二)运行grounding_dino_demo.py文件时报错OSError:

OSError: We couldn’t connect to ‘https://huggingface.co’ to load this file, couldn’t find it in the cached files and it looks like bert-base-uncased is not the path to a directory containing a file named config.json.
Checkout your internet connection or see how to run the library in offline mode at ‘https://huggingface.co/docs/transformers/installation#offline-mode’.

解决方法一:(看到有人解决方式是设立代理服务器,但是我没成功)

import os
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'

解决方式二:手动下载模型到本地库,然后改代码

  • 第一步: 在huggingface的bert-base-uncased库上下载包括 config.json, flax_model.msgpack, pytorch_model.bin, tf_model.h5, tokenizer.json, tokenizer_config.json, vocab.txt的文件:
    在这里插入图片描述
  • 第二步: 创建一个bert-base-uncased文件夹,把第一步中下载的文件放到创建的这个文件夹中, 记住创建的这个文件夹的位置,我是直接放在了Grounded-Segment-Anything的文件夹下(事实证明还是放在这里比较稳妥,因为放在别的地方后边代码不太好改)
  • 第三步: 在Grounded-Segment-Anything/GroundingDINO/groundingdino/util/get_tokenlizer.py文件中将代码进行修改,具体修改方式:红框中注释了的代码是原始代码,注释后的代码下边的代码是我修改后的代码。(这里特别注意修改后的代码中的文件路径是相对于Grounded-Segment-Anything文件夹的相对路径,我之前一直理解成对于get_tokenlizer.py的相对路径,结果一直没成功,理解了之后成功解决问题)
    在这里插入图片描述

(三)运行grounded_sam_inpainting_demo.py 文件时报错OSError:

OSError: Cannot load model runwayml/stable-diffusion-inpainting: model is not cached locally and an error occured while trying to fetch metadata from the Hub. Please check out the root cause in the stacktrace above.

解决方式和上边一样:手动下载模型到本地库,然后改代码
先把stable-diffusion-inpainting模型下载到Grounded-Segment-Anything目录中,然后修改grounded_sam_inpainting_demo.py中的代码,具体修改方式是将下图中第204行-206行被注释掉的代码修改为207行-209行的代码。
在这里插入图片描述

参考:
Grounded-Segment-Anything本地部署
语义分割——Grounded Segment Anything 环境配置和使用教程(已解决 name ‘_C’ is not defined 报错)
Grounded-Segment-Anything环境安装踩坑记录

相关文章:

huggingface学习|云服务器部署Grounded-Segment-Anything:bug总会一个一个一个一个又一个的解决的

文章目录 一、环境部署(一)模型下载(二)环境配置(三)库的安装 二、运行(一) 运行grounding_dino_demo.py文件(二)运行grounded_sam_demo.py文件(三…...

【最佳实践】Go 组合模式对业务解耦

在 Go 语言中,组合模式(Composition)是通过嵌入结构体(embedding structs)来实现的。它允许我们构建复杂的对象,通过将简单对象组合成树形结构来表示整个部分的层次结构。在 Go 中,这种模式不仅…...

arm 汇编调用C

arm64 汇编调用C函数 main.s .section .text .globl main main:stp x29, x30, [sp, -16]! //store fp x29 lr x30mov x0, #0mov x1, #1bl addmov x1, x0 // x0 return ldp x29, x30, [sp], 16 //restore fp lrretadd.c #include <stdio.h> int add(int a, int…...

Vue3+Vite使用Puppeteer进行SEO优化(SSR+Meta)

1. 背景 【笑小枫】https://www.xiaoxiaofeng.com上线啦 资源持续整合中&#xff0c;程序员必备网站&#xff0c;快点前往围观吧~ 我的个人博客【笑小枫】又一次版本大升级&#xff0c;虽然知道没有多少访问量&#xff0c;但我还是整天没事瞎折腾。因为一些功能在Halo上不太好实…...

uni-app学习与快速上手

文章目录 一、uni-app二、学习与快速上手三、案例四、常见问题五、热门文章 一、uni-app uni-app是一种基于Vue.js开发框架的跨平台应用开发框架&#xff0c;可以用于同时开发iOS、Android、H5和小程序等多个平台的应用。uni-app的设计理念是一套代码可以编译到多个平台运行&a…...

orchestrator介绍3.4 web API 的使用

目录 使用 web API API使用简单举例 查看所有的API 实例 JSON 详解 API使用举例 使用 web API orchestrator提供精心设计的 Web API。 敏锐的 Web 开发人员会注意到&#xff08;通过Firebug or Developer Tools&#xff09;Web 界面如何完全依赖于 JSON API 请求。 开发人员可…...

市场复盘总结 20240122

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 昨日主题投资 连板进级率 6/39 15.3% 二进三&#xff1a; 进级率低 0% 最常用的二种方法&#xff1a; 方法…...

TCP 三次握手 四次挥手以及滑动窗口

TCP 三次握手 简介&#xff1a; TCP 是一种面向连接的单播协议&#xff0c;在发送数据前&#xff0c;通信双方必须在彼此间建立一条连接。所谓的 “ 连接” &#xff0c;其实是客户端和服务器的内存里保存的一份关于对方的信息&#xff0c;如 IP 地址、端口号等。 TCP 可以…...

yum指令——Linux的软件包管理器

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 什么是软件包yum指令1.yum 是什么&#xff1f;2.Linux系统&#xff08;Centos&#xff09;的生态 3.yum的相关操作安装卸载yum的相关操作小结 软件源安…...

【WPF.NET开发】​规划WPF应用程序性能

本文内容 对各种场景进行考虑定义目标了解平台使性能优化成为一个迭代过程构建图形丰富性 能否成功实现性能目标取决于如何制定性能策略。 规划是开发任何产品的第一阶段。 本主题介绍一些非常简单的规则&#xff0c;用于开发良好的性能策略。 1、对各种场景进行考虑 场景可…...

Ubuntu22.04报错:ValueError: the symlink /usr/bin/python3 does not point to ...

目录 一、背景 二、如何解决呢&#xff1f; 三、解决步骤 1. 确定可用的 Python 版本 2. 重新设置符号链接 3. 选择默认版本 4. 验证&#xff1a; 四、update-alternatives 详解 1. 命令语法 2. 常用选项 --install添加备选项。 --config&#xff1a;选择默认版本。 …...

什么是 React的refs?为什么它们很重要

Refs是React中的一个特殊属性&#xff0c;用于访问在组件中创建的DOM元素或组件实例。 Refs的重要性在于它们提供了一种直接访问DOM元素或组件实例的方式&#xff0c;使得我们可以在需要时操作它们。在某些情况下&#xff0c;例如在处理表单输入、媒体播放或触发动画等场景下&…...

使用yarn时--解决error Error: certificate has expired问题

【HTTPS 证书验证失败】导致的这个问题&#xff01; 解决方案&#xff1a;将yarn配置中的 strict-ssl 设置为 flase , 在 info yarn config 信息中&#xff0c; strict-ssl 为 true&#xff0c;表示需要验证 HTTPS 证书。我们可以将 strict-ssl 设置为 false&#xff0c;跳过 H…...

Sql server强制走索引

遇到一个奇怪的问题&#xff0c;同样的SQL&#xff0c;只是一个where条件不一样&#xff0c;一个是column1 AAA&#xff0c;一个是column1 BBB&#xff0c;他们的查询效率却差距甚大&#xff0c;一个要60秒&#xff0c;一个1秒以下。查看查询计划&#xff0c;一个使用了索引&…...

解决Android Studio gradle下载超时和缓慢问题(win10)

解决超时问题 一般配置阿里云代理就可以解决。 具体配置方法&#xff0c;参考&#xff1a;https://blog.csdn.net/zhangjin1120/article/details/121739782 解决下载缓慢问题 直接去腾讯云镜像下载&#xff1a; https://mirrors.cloud.tencent.com/gradle/ 下载好了之后&…...

Ps:根据 HSB 调色(以可选颜色命令为例)

在数字色彩中&#xff0c;RGB 和 HSV&#xff08;又称 HSB&#xff09;是两种常用的颜色表示方式&#xff08;颜色模型&#xff09;。 在 RGB 颜色模式下&#xff0c;Photoshop 的红&#xff08;Red&#xff09;、绿&#xff08;Green&#xff09;、蓝&#xff08;Blue&#xf…...

MySQL:事务隔离级别详解

事务一共有四个特性&#xff1a;原子性、隔离性、持久性、一致性。简称ACID。本文所将就是其中的隔离性。 1、事务中因为隔离原因导致的并发问题有哪些&#xff1f; 脏读&#xff1a;当事务A对一个数据进行修改&#xff0c;但这个操作还未提交&#xff0c;但此时事务B就已经读…...

golang 根据URL获取文件名

只有一个文件地址&#xff0c;但是没有文件名称&#xff0c;文件地址&#xff1a;http://XXXXXXX/getfile.aspx?fileid999 但是系统需要把文件名称也写入到数据库 可以根据 resp.Header["Content-Disposition"] 获取文件名 resp.Header["Content-Disposition&q…...

【Javaweb程序设计】【C00163】基于SSM房屋中介服务平台(论文+PPT)

基于SSM房屋中介服务平台&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的房屋中介服务平台 本系统分为前台、管理员、用户3个功能模块。 前台&#xff1a;当游客打开系统的网址后&#xff0c;首先看到的就是首页界面。…...

ES文档索引、查询、分片、文档评分和分析器技术原理

技术原理 索引文档 索引文档分为单个文档和多个文档。 单个文档 新建单个文档所需要的步骤顺序&#xff1a; 客户端向 Node 1 发送新建、索引或者删除请求。节点使用文档的 _id 确定文档属于分片 0 。请求会被转发到 Node 3&#xff0c;因为分片 0 的主分片目前被分配在 …...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一&#xff1a;使用Read()读取文件2.3、方式二&#xff1a;bufio读取文件2.4、方式三&#xff1a;os.ReadFile读取2.5、写…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...