网站建设计划表,聊城正规网站建设公司电话,大丰城乡建设局网站,网站建设及推广方案1、简单介绍
GroundingDino是一个多模态检测模型#xff0c;可以输入文本提示输出视觉目标的位置#xff0c;实现了文本和图像的匹配。相比较于一众的OVD算法#xff0c;GroundingDino在文本处理上的灵活度高#xff0c;因为大多OVD算法是采用clip文本编码器#xff0c;这…1、简单介绍
GroundingDino是一个多模态检测模型可以输入文本提示输出视觉目标的位置实现了文本和图像的匹配。相比较于一众的OVD算法GroundingDino在文本处理上的灵活度高因为大多OVD算法是采用clip文本编码器这个编码器对文本的处理有限只能是某些单词一些特殊的名称在clip的预训练模型中没有对应的文本向量。而GroundingDino及部分采用 bert 的模型可以处理单词、短语和句子等文本在数据集迁移上更加友好。 Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection这是GroundingDino的论文标题大概意思是 把DINO和文本预训练模型结合用于开集目标检测。 官方的GroundingDino只开源了推理的代码没有给出训练代码数据集格式也未知而Open-GroundingDino是作为GroundingDino的第三方实现训练的开源代码所以关注GroundingDino的工作是否适合迁移到个人数据集中。 GroundingDino的论文地址https://arxiv.org/pdf/2303.05499.pdf GroundingDino的Github网址https://github.com/IDEA-Research/GroundingDINO Open-GroundingDino的Github网址https://github.com/longzw1997/Open-GroundingDino
文本提示的预测功能 2、推理实现
我是首先想跑通Open-GroundingDino因为Open-GroundingDino给出了训练代码同时给出了数据集格式如果可以跑通非常适合进行迁移。于是我安装了相关环境进行测试。
基本的环境安装跟着requirements.txt走基本上就够了后面是编译 GroundingDino给出的操作方法是
pip install -r requirements.txt cd models/GroundingDINO/opspython setup.py build installpython test.pycd ../../..跑 test.py 我的也正常执行完了 但是后面准备跑推理代码的时候
python tools/inference_on_a_image.py \-c tools/GroundingDINO_SwinT_OGC.py \-p path/to/your/ckpt.pth \-i ./figs/dog.jpeg \-t dog \-o output结果报错了说找不到 grounddino这个模块我看代码目录里有这个文件夹以为只要修改进行引用就行结果修改后仍然不行。后面是卡在了 模型加载的地方
load_res model.load_state_dict()出现报错
AttributeErrortuple object has no attribute load_state_dict显然模型加载出现了问题而且很不好解决。
于是我想到 Open-GroundingDino的推理代码应该和 GroundingDino应该差不多因为Open-GroundingDino是一个第三方实现是基于原版来匹配的。于是我尝试跑GroundingDino的推理代码。
我把代码下载之后按照要求进行操作
git clone https://github.com/IDEA-Research/GroundingDINO.gitcd GroundingDINO/pip install -e .mkdir weights
cd weights
wget -q https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
cd ..操作之后环境里编译生成了一个groundingdino库显然这个才是正确的要调的库。我随后开始测试执行命令
CUDA_VISIBLE_DEVICES{GPU ID} 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结果却没结果。代码正常跑完了但是打开保存的预测结果发现还是原图并没有加上预测的框。我想肯定是输入的文本提示有问题导致无法解析要检测的类别。
其实在执行命令之前我已经在 GroundingDINO_SwinT_OGC.py 把 text_encoder_type bert-base-uncased改成 text_encoder_type ./local/xx/bert-base-uncased ,因为之前跑过类似的我就把本地bert文本编码的模型路径加进去了所以推理代码可以正常执行完毕但是却没有输出结果。
我不太熟悉 GroundingDINO需要加载bert的文件位置所以我之间搜索 bert-base-uncased 和 text_encoder_type 找出如下位置处代码
我分别把里面的两个 text_encoder_type 换成 本地的bert-base-cased 的路径再进行测试进入结果文件夹打开图片查看发现上面就画了提示的目标如下图所示。 如上就完成了 Open-GroundingDino和GroundingDino的推理流程实现
相关问题解决也可以具体看官方GitHubhttps://github.com/IDEA-Research/GroundingDINO/issues/218