语义分割——Grounded Segment Anything 环境配置和使用教程(已解决 name ‘_C’ is not defined 报错)

本文是 Grounded Segment Anything 语义分割项目的环境配置和使用教程。介绍了项目及引用库的下载、环境变量配置、库的安装、预训练模型下载和运行等步骤。还针对 NameError: name ‘_C’ is not defined 报错,分析了环境变量、安装和文件路径等原因,并给出解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

语义分割——Grounded Segment Anything 环境配置和使用教程

环境配置

下载项目

  • 链接:https://pan.baidu.com/s/10Ei7WUVMTHOUhNQK3BZSag?pwd=rt4u
    提取码:rt4u

下载引用库

  • 链接:https://pan.baidu.com/s/1SNJTQBF75EmhyscJWkg4fw?pwd=0ds1
    提取码:0ds1

注:放入项目对应文件夹即可.

配置环境变量

注:这一步一定要确保完成,CUDA_HOME 更换成你自己的路径,要不然就会出现NameError: name ‘_C’ is not defined,这个错误折磨作者将近两天了,终于解决了(哭~).

Pycharm 设置
  • Settings > Terminal > Environment variables:

  • 如何确保设置成功,在 Pycharm 终端中输入以下命令:
$env:CUDA_HOME
  • 有输出,且 路径正确,就代表设置成功:

GitBash 中

注:虽说不知道在 GitBash 中再设置一次环境变量是否有必要,但作者是这样的,所以为了避免报错,建议大家做好这一步.

export AM_I_DOCKER=False
export BUILD_WITH_CUDA=True
export CUDA_HOME=/c/Program\ Files/NVIDIA\ GPU\ Computing\ Toolkit/CUDA/v12.2

注:在 Bash 终端中,路径中的空格需要用反斜杠\转义.

  • 同样也要确保设置成功,输入以下命令:
echo $CUDA_HOME
  • 有输出,且 路径正确,就算成功:


安装库

segment_anything

  • 【命令】:
python -m pip install -e segment_anything

GroundingDINO

安装包
  • 【命令】:
python -m pip install -e GroundingDINO
  • 【运行结果】:

安装依赖项
  • 【命令】:
cd GroundingDINO
python setup.py build
python setup.py install
  • 【运行结果】:

diffusers[torch]

  • 【命令】:
pip install --upgrade diffusers[torch]
  • 【运行结果】:

grounded-sam-osx

  • 【命令】:
cd grounded-sam-osx
pip install openmim
mim install mmcv-full==1.7.1
pip install -r requirements.txt
cd transformer_utils
python setup.py install

注:其实可以在终端输入./install.sh命令的,但这样会导致运行完之后命令打开的 GitBash 窗口自动关闭看不到到底有没有报错,所以这里建议 一步步手动 在终端运行 install.sh 中的命令.

Tag2Text

  • 修改Tag2Text/requirements.txttransformers的版本号为 4.29.0(4.15.0 会报错):
timm==0.4.12
transformers==4.29.0
fairscale==0.4.4
pycocoevalcap
torch
torchvision
Pillow
scipy
  • 【命令】:
cd Tag2Text
pip install -r requirements.txt
  • 【运行结果】:

其它依赖项

  • 【命令】:
pip install opencv-python pycocotools matplotlib onnxruntime onnx ipykernel
  • 【运行结果】:


运行 grounding_dino_demo.py

下载预训练模型

  • 【官方下载地址】:https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
  • 链接:https://pan.baidu.com/s/13bCwL-MtpptcwUbVY6-iKw?pwd=t6s5
    提取码:t6s5

运行

  • 作者更换了示例图片:
from groundingdino.util.inference import load_model, load_image, predict, annotate, Model
import cv2


CONFIG_PATH = "GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py"
CHECKPOINT_PATH = "./groundingdino_swint_ogc.pth"
DEVICE = "cuda"
IMAGE_PATH = "assets/demo1.jpg"  # 修改
TEXT_PROMPT = "bear."  # 修改
BOX_TRESHOLD = 0.35
TEXT_TRESHOLD = 0.25

image_source, image = load_image(IMAGE_PATH)
model = load_model(CONFIG_PATH, CHECKPOINT_PATH)

boxes, logits, phrases = predict(
    model=model,
    image=image,
    caption=TEXT_PROMPT,
    box_threshold=BOX_TRESHOLD,
    text_threshold=TEXT_TRESHOLD,
    device=DEVICE,
)

annotated_frame = annotate(image_source=image_source, boxes=boxes, logits=logits, phrases=phrases)
cv2.imwrite("annotated_image.jpg", annotated_frame)
  • 终端运行:
python grounding_dino_demo.py

注:Connection to huggingface.co:需要科学上网,即可消除这个警告.

  • 预测结果:


NameError: name ‘_C’ is not defined 报错

问题描述

原因

环境变量没有配置好
  • 一定要严格按照作者在前面给出的环境配置方法配置那 3 个环境变量,确保配置成功,注意那两种方式不是二选一,而是都要配置!!!
  • 虽然说不理解为什么两个都配置,但作者这样确实成功了,读者也可以试试只在 Pycharm 中配置.
安装出问题
  • 在安装 GroundingDINO 的时候,仅仅依靠以下命令是不行的:
python -m pip install -e GroundingDINO
  • 还需
cd GroundingDINO
python setup.py build
python setup.py install
文件路径太长
  • 这是作者遇到的,作者怎么也想不到是因为这个导致相关文件创建不了,在执行了python setup.py buildpython setup.py install命令后,才看见的报错信息(人麻了).

  • 在安装 grounded-sam-osx 的时候,作者才用了手动执行一个个命令就是这个原因,不执行到 原子性的命令 之前,控制台根本不会显示任何报错信息(如果确实出现了问题).

解决办法

  • 删除GroundingDINO 文件夹(特别是如果没有遗漏上述第二组命令还出现了这个报错,必须要删除生成的build、dist 文件夹,重新从项目压缩包里复制,重新安装.
  • 一句话,重开 GroundingDINO!!!(真的是血泪教训啊 qwq)

成功解决

如何在windows系统上解决报错 C:\Users\29386\.conda\envs\grounded_sam\python.exe C:\Users\29386\segment-anything\Grounded-Segment-Anything\grounded_sam_demo.py --config ./GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py --grounded_checkpoint C:\Users\29386\segment-anything\weights\groundingdino_swint_ogc.pth --sam_checkpoint C:\Users\29386\segment-anything\weights\sam_vit_h_4b8939.pth --input_image ./assets/demo1.jpg --output_dir outputs --text_prompt cat C:\Users\29386\.conda\envs\grounded_sam\lib\site-packages\timm\models\layers\__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning) C:\Users\29386\.conda\envs\grounded_sam\lib\site-packages\torch\functional.py:478: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at C:\actions-runner\_work\pytorch\pytorch\builder\windows\pytorch\aten\src\ATen\native\TensorShape.cpp:2895.) return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined] final text_encoder_type: bert-base-uncased _IncompatibleKeys(missing_keys=[], unexpected_keys=['label_enc.weight', 'bert.embeddings.position_ids']) C:\Users\29386\.conda\envs\grounded_sam\lib\site-packages\transformers\modeling_utils.py:1161: FutureWarning: The `device` argument is deprecated and will be removed in v5 of Transformers. warnings.warn( C:\Users\29386\.conda\envs\grounded_sam\lib\site-packages\torch\utils\checkpoint.py:25: UserWarning: None of the inputs have requires_grad=True. Gradients will be None warnings.warn("None of the inputs have requires_grad=True. Gradients will be None") Traceback (most recent call last): File "C:\Users\29386\segment-anything\Grounded-Segment-Anything\grounded_sam_demo.py", line 201, in <module> predictor = SamPredictor(sam_model_registry[sam_version](checkpoint=sam_checkpoint).to(device)) NameError: name 'SamPredictor' is not defined 进程已结束,退出代码为 1
最新发布
07-26
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值