为什么写这篇博客

有一个项目需要部署grounding-dino,结果在部署过程中遇到了各种问题,几乎花费了一天的时间,所以做一下记录,希望能够帮到有缘人。

安装流程

我这里将官方的顺序重新写一遍,主要是为了说明在哪一步容易遇到什么问题,应该如何解决

1、检查cuda

检查cuda ,如果有问题,参考官方项目即可

echo $CUDA_HOME

2、拷贝项目

拷贝项目,这一步基本也没啥问题

git clone https://github.com/IDEA-Research/GroundingDINO.git
cd GroundingDINO/

3、安装环境

安装环境,重点就在这了
执行官方的代码

pip install -e.

如果到这里没有报错,就可以根据官方的文档进行测试了。
我遇到的第一个问题是gcc版本过低,我的gcc版本是7.4,根据报错显示,需要gcc9或以上的版本,解决方案可以参考:

问题1、gcc版本过低的问题

我遇到的第二个问题是:

error: command '/usr/local/cuda-12.1/bin/nvcc' failed with exit code 2

明明我的cuda就是12.1的版本,为什么会报错呢?后来发现是,使用官方代码安装环境的时候,torch给我安装的是2.6.0 cuda安装的是12.4,导致出现错误,解决方案可以参考

问题2、cuda版本不匹配的问题

还有一个问题是numpy版本的问题,我直接将numpy的版本降低到1.25.0,运行发现没有问题,不再赘述

4、下载模型

这里应该也没啥问题

mkdir weights
cd weights
wget -q https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
cd ..

5、测试

官方给了两种测试方案,两种方案均可,我们就以官方给的代码为例

python demo/inference_on_a_image.py \
-c groundingdino/config/GroundingDINO_SwinT_OGC.py \
-p weights/groundingdino_swint_ogc.pth \
-i image_you_want_to_detect.jpg \
-o "dir you want to save the output" \
-t "chair"
 [--cpu-only] # open it for cpu mode

到这里又出现了一个问题,这个问题是因为网络问题,国内无法从huggingface下载文件导致的

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'.

具体的解决方案参考:

问题3、网络问题

至此,再次运行代码就能成功运行了🤗。

问题整理

问题1、gcc版本过低的问题

这里我建议大家直接搜索网上的相关文档,然后根据文档安装gcc9或以上版本,我个人安装的是9。
不过我在安装gcc的时候,无论使用什么样的方法,都会获得这个错误:

E: Unable to locate package gcc-9

后来,通过chatgpt找到了解决方案,建议大家尝试网上找的方法,不行再尝试下面这个方法

sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-9 g++-9

之后需要切换gcc的版本,将低版本切换为高版本

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
gcc --version

如果输出的gcc版本为新安装的版本就说明OK了

问题2、cuda版本不匹配的问题

首先去pytorch官方安装和你cuda匹配的torch
安装完之后再运行

pip install -e .

问题3、网络问题

在官方项目的一个issue中给出了答案,为了方便大家理解,我这里就再赘述一遍。
issue链接:https://github.com/IDEA-Research/GroundingDINO/issues/218
首先,你需要去huggingface的bert-base-uncased项目中下载一些文件放到一个文件夹中,如下图所示
在这里插入图片描述
然后去修改grounding-dino.py代码,将 text_encoder_type 替换为文件的路径即可。
如下图所示:
在这里插入图片描述
之后再运行代码就OK了

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐