【计算机视觉 | 目标检测】Grounding DINO 深度学习环境的配置(含案例)

news2025/1/7 7:08:59

Grounding DINO:Marrying DINO with Grounded Pre-Training for Open-Set Object Detection”的官方 PyTorch 实现:SoTA 开放集对象检测器。

文章目录

  • 一、Helpful Tutorial
  • 二、相关的论文工作
    • 2.1 相关的论文整理
    • 2.2 论文的亮点
    • 2.3 论文介绍
    • 2.4 Marrying Grounding DINO and GLIGEN
    • 2.5 输入和输出的说明 / 提示
  • 三、环境配置过程
    • 3.1 我的环境
    • 3.2 配置过程
      • 3.2.1 Clone the GroundingDINO repository from GitHub
      • 3.2.2 Change the current directory to the GroundingDINO folder
      • 3.2.3 Install the required dependencies in the current directory
      • 3.2.4 Create a new directory called "weights" to store the model weights
  • 四、测试

一、Helpful Tutorial

论文地址:

https://arxiv.org/abs/2303.05499

在 YouTube 上观看介绍视频:

https://www.youtube.com/watch?v=wxWDt5UiwY8&feature=youtu.be

在这里插入图片描述
Try the Colab Demo:

https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/zero-shot-object-detection-with-grounding-dino.ipynb

Try Official Huggingface Demo:

https://huggingface.co/spaces/ShilongLiu/Grounding_DINO_demo

二、相关的论文工作

2.1 相关的论文整理

在这里插入图片描述

  • Grounded-SAM: Marrying Grounding DINO with Segment Anything
  • Grounding DINO with Stable Diffusion
  • Grounding DINO with GLIGEN for Controllable Image Editing
  • OpenSeeD: A Simple and Strong Openset Segmentation Model
  • SEEM: Segment Everything Everywhere All at Once
  • X-GPT: Conversational Visual Agent supported by X-Decoder
  • GLIGEN: Open-Set Grounded Text-to-Image Generation
  • LLaVA: Large Language and Vision Assistant

2.2 论文的亮点

本工作的亮点:

  1. Open-Set Detection. Detect everything with language!
  2. High Performancce. COCO zero-shot 52.5 AP (training without COCO data!). COCO fine-tune 63.0 AP.
  3. Flexible. Collaboration with Stable Diffusion for Image Editting.

2.3 论文介绍

在这里插入图片描述

2.4 Marrying Grounding DINO and GLIGEN

在这里插入图片描述

2.5 输入和输出的说明 / 提示

  • Grounding DINO accepts an (image, text) pair as inputs.
  • It outputs 900 (by default) object boxes. Each box has similarity scores across all input words. (as shown in Figures below.)
  • We defaultly choose the boxes whose highest similarities are higher than a box_threshold.
  • We extract the words whose similarities are higher than the text_threshold as predicted labels.
  • If you want to obtain objects of specific phrases, like the dogs in the sentence two dogs with a stick., you can select the boxes with highest text similarities with dogs as final outputs.
  • Note that each word can be split to more than one tokens with differetn tokenlizers. The number of words in a sentence may not equal to the number of text tokens.
  • We suggest separating different category names with . for Grounding DINO.
    在这里插入图片描述
    在这里插入图片描述

三、环境配置过程

3.1 我的环境

系统:最新的ubuntu系统

显卡:3090

CUDA:11.3

如果您有 CUDA 环境,请确保设置了环境变量 CUDA_HOME。 如果没有可用的 CUDA,它将在 CPU-only 模式下编译。

3.2 配置过程

3.2.1 Clone the GroundingDINO repository from GitHub

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

下载后即可找到对应的文件夹:

在这里插入图片描述

3.2.2 Change the current directory to the GroundingDINO folder

cd GroundingDINO/

3.2.3 Install the required dependencies in the current directory

pip3 install -q -e .

不知道为什么,我这个下载一直报错!换一个新的下载方式:

python setup.py install

在这里插入图片描述

但是也会飘红!

这个时候不要害怕,遇到错误的包,直接使用 pip 下载即可,耐得住性子,最后再运行上面的安装命令,即可顺利成功!

在这里插入图片描述

3.2.4 Create a new directory called “weights” to store the model weights

mkdir weights

Change the current directory to the “weights” folder:

cd weights

Download the model weights file:

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

四、测试

Check your GPU ID (only if you’re using a GPU):

nvidia-smi

在这里插入图片描述

Replace {GPU ID}, image_you_want_to_detect.jpg, and “dir you want to save the output” with appropriate values in the following command:

CUDA_VISIBLE_DEVICES={GPU ID} python demo/inference_on_a_image.py \
-c /GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py \
-p /GroundingDINO/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

当然了,我们也可以使用 Python 进行测试:

from groundingdino.util.inference import load_model, load_image, predict, annotate
import cv2

model = load_model("./GroundingDINO/groundingdino/config/GroundingDINO_SwinT_OGC.py", "./GroundingDINO/weights/groundingdino_swint_ogc.pth")
IMAGE_PATH = "./GroundingDINO/weights/1.png"
TEXT_PROMPT = "person . bike . bottle ."
BOX_TRESHOLD = 0.35
TEXT_TRESHOLD = 0.25

image_source, image = load_image(IMAGE_PATH)

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

annotated_frame = annotate(image_source=image_source, boxes=boxes, logits=logits, phrases=phrases)
cv2.imwrite("./GroundingDINO/weights/annotated_image.jpg", annotated_frame)

我们的测试原图片为:

在这里插入图片描述
测试后的图片为:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/506822.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shell脚本之数组与冒泡排序

目录 一. 数组1.1 数组定义:1.2 数组包括的数据类型:1.3 向函数传入数组的值 二. 冒泡排序算法 一. 数组 1.1 数组定义: 方法一: 数组名( 1 2 3 4 5 ) 方法二: 数组名( [0]1 [1]2 […

Nginx 概述和缓存能力

官方说明 理解说明 Nginx是一个高性能的Web服务器和反向代理服务器,其设计思想和执行机制可以概括如下: 异步事件驱动:Nginx采用基于事件驱动的异步I/O模型,这意味着它能够处理大量并发连接而不会消耗太多的系统资源。 单线程模…

(六)Kubernetes - 手动部署(二进制方式安装)

Kubernetes - 手动部署 [ 5 ] 1 部署NginxKeepalived高可用负载均衡器1.1 安装软件包(Master1/Master2)1.2 Nginx配置文件(主备相同)1.3 keepalived配置文件(Master1)1.4 keepalived配置(master2)1.5 Nginx增加Steam模块1.5.1 查看Nginx版本模块1.5.2 下载同一个版本的nginx1.5…

如何提高执行力

在最近的工作中很多事情容易拖延的,导致部分工作和自己的生活容易因为拖延导致混乱,比如没有提前预订好抢票,结果导致放假买不到票等等的事情出现。 所以很多事懒的原因是执行力差,为什么执行力差,说明事情不重要。那就…

DNS欺骗、ARP攻击及钓鱼网站制作

数据来源 本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 一、背景 钓鱼者运用社会工程学( social engineering)知识诱骗受害者,以在…

buu [AFCTF2018]花开藏宝地 1

题目描述: 题面: 第80804238007977405688648566160504278593148666302626415149704905628622876270862865768337953835725801963142685182510812938072115996355782396318303927020705623120652014080032809421180400984242061592520733710243483947230…

Yolov8改进---注意力机制: SimAM(无参Attention)和NAM(基于标准化的注意力模块),效果秒杀CBAM、SE

🏆🏆🏆🏆🏆🏆Yolov8魔术师🏆🏆🏆🏆🏆🏆 ✨✨✨魔改网络、复现前沿论文,组合优化创新 🚀🚀🚀小目标、遮挡物、难样本性能提升 🍉🍉🍉定期更新不同数据集涨点情况 1. SimAM:无参Attention 论文: http://proceedings.mlr.press/v139/yang…

瑞云渲染农场怎么用,瑞云渲染多少钱一分钟?

Renderbus瑞云渲染农场作为亚洲前沿的 云渲染平台,一直以“做最好的云渲染工具”为愿景,紧跟CG行业的技术创新与发展,致力于提供专业可靠、安全稳定、可持续创新的云渲染解决方案,助力推动行业快速发展,被誉为中国云渲…

(6)——多窗口编程

目录 1. QMessageBox 消息对话框** 2. 窗口类继承关系** 3. QMainWindow 主窗口类** 3.1 QMenuBar 菜单栏 3.2 QToolBar 工具栏 3.3 QWidget 中心组件 3.4 QStatusBar 状态栏 4. parent参数** 5. 自定义窗口类** 6. 跨界面参数传递** 6.1 主窗口→子窗口 6.2 子窗口→主窗口 7…

合并日志树——LSM Tree

一、背景 大数据情景下,需要巨量的读写数据,即良好的IO效率。传统的B树以及其变种无法满足,因为它的读写在物理上是随机的,这样IO的效率就不高。于是便有了LSM(log_structed_merge_tree) 合并日志树这个设计思想或者说存储结构。…

【亲测好用】解决 OneDrive 同步被挂起

本教程演示了如何以 2 种有效方式修复 OneDrive 同步被挂起错误。如果您被这个问题困扰,可以在本文中找到适合您的方法。 “如何处理 OneDrive 同步被挂起问题? 我的 OneDrive 存在同步问题。即使任务栏上的 OneDrive 图标指示同步完毕状态,某…

导出/入表数据

1、连接mysql导出2、使用mysqldump导出3、mysql命令导出load data导入mysqlimport命令导入 1、连接mysql导出 select columnList from tableName where conditions into outfile fileName [options]-- fileName 默认是secure-file-priv路径 -- options lines必须置于fields后…

git status和git push扩展脚本

git status和git push扩展脚本 1、对git status扩展使用方法 我们先来看看效果: 在之前的时候,我是用git status 查看工作区的变化,我想看某个文件的变化必须使用git diff file_abs_path,必须要输入文件的相对目录。每次都输入我…

计及N-k安全约束的含光热电站电力系统优化调度模型【IEEE14节点、118节点】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

别再无脑背八股文了

大家好,我是帅地。 记得两年前我参加校招的时候,还没怎么听过八股文这个词,这两年,到处是八股文,可见校招是越来越激烈了。 有些人可能还不知道八股文是啥,八股文其实就是指面试中那些经常被问到的基础知…

前端009_类别模块_修改功能

第九章 1、需求分析2、Mock添加查询数据3、Mock修改数据4、Api调用回显数据5、提交修改后的数据6、效果1、需求分析 需求分析 当点击 编辑 按钮后,弹出编辑窗口,并查询出分类相关信息进行渲染。修改后点击 确定 提交修改后的数据。 2、Mock添加查询数据 请求URL: /article/…

面试篇:多线程

一、线程和进程的区别? 1、进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理I…

PySpark基础入门(8):Spark SQL(内容补充)

目录 SparkSQL Shuffle 分区数目 SparkSQL 数据清洗API dropDuplicates dropna fillna SparkSQL函数定义(UDF函数) SparkSQL 使用窗口函数 SparkSQL运行流程 SparkSQL的自动优化 Catalyst优化器 SparkSQL Shuffle 分区数目 在SparkSQL中&…

无魔法插件 - ChatGPT Sidebar with GPT-4

文章目录 1.介绍2.功能一览2.1 唤醒方式2.2 聊天功能2.3 快捷模板2.4 单独聊天界面2.5 ChatPDF2.6 任意位置快捷使用模板2.7 手机 APP 3.GPT-3.0 还是 GPT-3.5?4.免费 or 收费?5.安装 Sidebar 创作不易,如果本文对你有帮助,胖友记…

SpringCloud(22):Sentinel对Feign的支持

Sentinel 适配了 Feign组件。如果想使用,除了引入 spring-cloud-starter-alibaba-sentinel 的依赖外还需要 2个步骤: 配置文件打开 Sentinel 对 Feign 的支持:feign.sentinel.enabledtrue加入 spring-cloud-starter-openfeign 依赖使 Sentin…