当前位置: 首页 > 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 的主分片目前被分配在 …...

DriverStore Explorer完全指南:免费Windows驱动管理终极教程

DriverStore Explorer完全指南&#xff1a;免费Windows驱动管理终极教程 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer DriverStore Explorer是一款功能强大的Windows驱动程序管…...

解决AtlasOS系统中Xbox控制器驱动问题的5个实用技巧

解决AtlasOS系统中Xbox控制器驱动问题的5个实用技巧 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atlas …...

Phi-3-vision-128k-instruct 代码理解能力展示:解析截图中的复杂算法伪代码

Phi-3-vision-128k-instruct 代码理解能力展示&#xff1a;解析截图中的复杂算法伪代码 1. 引言 最近在GitHub上看到一个有趣的项目&#xff0c;测试了Phi-3-vision-128k-instruct模型对编程相关图像的理解能力。作为一个经常需要阅读算法伪代码的程序员&#xff0c;我对这个…...

macOS下OpenClaw调试技巧:GLM-4.7-Flash接口连接问题排查

macOS下OpenClaw调试技巧&#xff1a;GLM-4.7-Flash接口连接问题排查 1. 问题背景与前期准备 上周在尝试将本地部署的GLM-4.7-Flash模型接入OpenClaw时&#xff0c;我遇到了三个典型问题&#xff1a;网关端口被占用、模型地址配置错误、以及Token消耗异常。这些问题导致自动化…...

Android逆向实战:用Frida Hook自己写的APK,让1+1=88(附完整代码)

Android逆向实战&#xff1a;用Frida Hook自己写的APK&#xff0c;让1188&#xff08;附完整代码&#xff09; 在移动安全领域&#xff0c;逆向工程一直是个充满挑战又极具魅力的方向。想象一下&#xff0c;你能否让一个简单的计算器应用突然改变行为&#xff0c;比如让11的结果…...

雪女-斗罗大陆-造相Z-Turbo系统管理:Ubuntu服务器运维与模型服务监控

雪女-斗罗大陆-造相Z-Turbo系统管理&#xff1a;Ubuntu服务器运维与模型服务监控 想让你的“雪女”模型在Ubuntu服务器上像真正的封号斗罗一样&#xff0c;拥有稳定、可靠、持久的战斗力吗&#xff1f;对于任何投入生产环境的AI服务来说&#xff0c;部署成功只是第一步&#x…...

OpenClaw+Qwen3.5-9B实战:5步完成本地AI助手部署与飞书接入

OpenClawQwen3.5-9B实战&#xff1a;5步完成本地AI助手部署与飞书接入 1. 为什么选择OpenClawQwen3.5-9B组合&#xff1f; 去年冬天&#xff0c;当我第5次因为忘记整理会议录音而被领导提醒时&#xff0c;终于决定给自己找个"数字助理"。在尝试了多个自动化工具后&…...

HDC1000温湿度传感器原理与嵌入式实战指南

1. 项目概述Grove - Temperature & Humidity Sensor (HDC1000) 是 Seeed Studio 推出的一款基于德州仪器&#xff08;Texas Instruments&#xff09;HDC1000 芯片的数字温湿度传感器模块。该模块采用标准 Grove 接口&#xff0c;支持 IC 总线通信&#xff0c;专为嵌入式系统…...

macOS效率革命:3个全局快捷键让Finder目录操作提速300%

macOS效率革命&#xff1a;3个全局快捷键让Finder目录操作提速300% 【免费下载链接】OpenInTerminal ✨ Finder Toolbar app for macOS to open the current directory in Terminal, iTerm, Hyper or Alacritty. 项目地址: https://gitcode.com/gh_mirrors/op/OpenInTerminal…...

Python内存管理进入“自动驾驶”时代:详解memguard-core插件的AI预测式回收机制,安装仅需3行命令

第一章&#xff1a;Python智能体内存管理策略Python智能体&#xff08;如基于LLM的Agent、ReAct架构或Tool-Calling Agent&#xff09;在运行过程中常面临对象生命周期长、中间状态缓存多、工具调用频繁导致引用残留等问题。其内存管理不能仅依赖CPython默认的引用计数与循环垃…...