尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Grounding DINO 部署实战:用自然语言检测任意物体,从环境配置到 API 接入

Grounding DINO 部署实战:用自然语言检测任意物体,从环境配置到 API 接入 Grounding DINO 部署实战用自然语言检测任意物体从环境配置到 API 接入【免费下载链接】GroundingDINO[ECCV 2024] Official implementation of the paper Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection项目地址: https://gitcode.com/GitHub_Trending/gr/GroundingDINOGrounding DINO 是 ECCV 2024 的开放集目标检测模型输入一张图片和一句自然语言描述即可输出对应物体的边界框无需预先定义类别体系。本文按主线推进环境配置、权重下载、首次推理、代码与 WebUI 接入以及阈值调优参数并附高频报错速查。读完后可以在本机完成一次完整的 Grounding DINO 安装并将其集成进自己的业务代码。一、30 秒看懂项目Grounding DINO 的输入是一个(image, text)对内部由文本分支和图像分支分别提取特征经过特征增强层与跨模态解码层后默认输出 900 个候选框每个框对提示词中的每个词都有一个相似度分数。后处理规则很直接最高相似度超过box_threshold的框被保留相似度超过text_threshold的词被抽取为标签。官方建议多个类别名之间用.分隔例如cat . dog .。最小示例对仓库自带的.asset/cat_dog.jpeg输入提示cat . dog .得到猫、狗两个边界框及对应标签检测效果见下节。二、快速开始最短路径跑通第一次检测环境要求不满足时按项处理Python 3.8–3.10避免 3.11PyTorch ≥1.10与 CUDA 版本匹配CUDA 10.2nvcc版本与 PyTorch 编译版本一致CUDA_HOME已设置——这是 Grounding DINO 环境配置里最容易漏的一项按顺序执行python --version nvcc --version echo $CUDA_HOME git clone https://gitcode.com/GitHub_Trending/gr/GroundingDINO cd GroundingDINO pip install -e .pip install -e .会编译 C/CUDA 扩展源码见 groundingdino/models/GroundingDINO/csrc/。随后将权重文件groundingdino_swint_ogc.pth放入weights/目录下载地址见 README 的 Install 一节然后运行首帧推理python demo/inference_on_a_image.py \ -c groundingdino/config/GroundingDINO_SwinT_OGC.py \ -p weights/groundingdino_swint_ogc.pth \ -i .asset/cat_dog.jpeg \ -o output/ \ -t cat . dog . \ --box_threshold 0.35 --text_threshold 0.25结果保存在output/raw_image.jpg为原图pred.jpg为标注图。无 GPU 时追加--cpu-only参数即可推理速度会明显下降。三、按需选型本地试跑、虚拟环境还是容器化方式隔离程度首次跑通成本适用场景当前环境直接pip install -e .无最低个人验证、notebook 实验venv / conda 独立环境后安装好中等长期开发、多人协作仓库自带 Dockerfile 构建镜像完全较高镜像内编译扩展生产服务、多机一致、CI 流程Docker 路线一条命令即可docker build -t groundingdino .。镜像基于pytorch/pytorch:2.1.2-cuda12.1已内置 CUDA 工具链、权重下载与自检脚本 docker_test.py适合对外提供一致推理环境。四、进阶用法接入自己的代码与网页界面Python API 只需四个函数模型只加载一次from groundingdino.util.inference import load_model, load_image, predict, annotate model load_model(groundingdino/config/GroundingDINO_SwinT_OGC.py, weights/groundingdino_swint_ogc.pth) image, tensor load_image(.asset/cat_dog.jpeg) boxes, logits, phrases predict(model, tensor, cat . dog ., box_threshold0.35, text_threshold0.25) annotated annotate(np.asarray(image), boxes, logits, phrases)函数签名与更多参数如remove_combined见 groundingdino/util/inference.py命令行版参数含--token_spans短语精确定位模式见 demo/inference_on_a_image.py。网页界面基于 Gradio上传图像、输入提示词、拖动阈值滑块即可出结果默认端口 7579pip install gradio3.50.2 python demo/gradio_app.py --share五、避坑手册高频报错速查NameError: name _C is not defined→ 安装时CUDA_HOME未设置扩展根本没编译 → 设置CUDA_HOME后删除旧包重新pip install -e .官方建议直接重拉仓库重装最干净nvcc not found或扩展编译失败→ CUDA 工具链路径未进入环境变量 → 用which nvcc找到路径export CUDA_HOME/usr/local/cuda并写入~/.bashrcPython.h: No such file or directory→ 缺 Python 开发头文件 →apt install python3-devCUDA out of memory→ 图像长边过大或显存被占满 → 降低分辨率、缩小批大小或改用 Swin-T 权重加载权重报size mismatch/ 文件损坏→ 权重下载不完整 → 重新下载并核对文件大小与校验检测结果全空或标签乱码→ 提示词写法问题 → 小写、结尾带.、多类别用.分隔Gradio 页面报错或依赖冲突→ gradio 版本与 transformers 不兼容 → 锁定gradio3.50.2与 demo/gradio_app.py 一致六、效果调优阈值、分辨率、批处理三个抓手box_threshold0.25–0.5调高减少误检、可能漏检调低则相反。text_threshold0.2–0.3控制词标签抽取的松紧建议与 box 阈值保持相近量级联动微调。分辨率默认RandomResize([800], max_size1333)实时场景可将 800 下调到 640速度收益明显。批处理单模型实例循环处理多张图避免反复load_model离线跑大批量图片时收益最稳定。需要评测指标时仓库提供了 COCO 零样本 AP 脚本 demo/test_ap_on_coco.py。七、收尾Grounding DINO 的核心价值在于把目标检测从固定类别变成了自然语言驱动部署门槛主要在 CUDA 扩展编译与阈值两个参数上。下一步可以结合仓库内 demo/image_editing_with_groundingdino_stablediffusion.ipynb 探索检测 图像编辑链路参考 demo/create_coco_dataset.py 用检测结果自动生成标注数据关注 Grounding DINO 1.5 的 API 化版本替代本地权重加载【免费下载链接】GroundingDINO[ECCV 2024] Official implementation of the paper Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection项目地址: https://gitcode.com/GitHub_Trending/gr/GroundingDINO创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表