OV-DINO开放词检测环境安装与推理

news2025/1/12 6:58:05

引子

开放词检测,之前分享过一篇YOLO-World的文章,感兴趣同学请移步(YOLO-World环境搭建&推理测试_yoloworld 检测-CSDN博客),最近,由中山大学和美团联合提出新的开放域检测方法OV-DINO:基于语言感知选择性融合、统一的开放域检测方法,取得了开放域检测新SOTA!目前开源性能最强的开放域检测模型!(比GroundingDINO高12.7% AP!比 YOLO-World 高4.7%AP!)

一、模型介绍

开放词汇检测是一项具有挑战性的任务,因为它需要根据类名检测对象,包括训练期间未遇到的对象。现有方法通过对各种大规模数据集进行预训练和伪标记,表现出强大的零样本检测能力。然而,这些方法面临两个主要挑战:

(1)如何有效地消除伪标记带来的数据噪声;

(2)如何有效地利用语言感知能力进行区域级跨模态融合和对齐。

为了应对这些挑战,作者提出了一种新的统一开放词汇检测方法,称为OV-DINO,该方法在统一框架中对各种大规模数据集进行预训练,并使用语言感知选择性融合。具体来说,引入了统一数据集成(UniDI)管道,通过将不同的数据源统一为以检测为中心的数据格式,实现端到端训练并消除伪标签生成带来的噪音。此外,作者提出了一种语言感知选择性融合 (LASF) 模块,通过语言感知查询选择和融合过程来增强跨模态对齐。在流行的开放词汇检测基准上评估了所提出的 OV-DINO 的性能,在零样本方式下,在 COCO 基准上实现了 50.6% 的 AP,在 LVIS 基准上实现了 40.1% 的 AP,展示了其强大的泛化能力。此外,经过微调的 OV-DINO 在 COCO 上实现了 58.4% 的 AP,优于许多具有相同主干的现有方法。

二、环境搭建

代码下载

git clone https://github.com/wanghao9610/OV-DINO.git

下载模型

docker run -it --rm -v /datas/work/zzq/:/workspace --gpus=all --net host pytorch/pytorch:1.13.1-cuda11.6-cudnn8-devel bash

bert模型:google-bert/bert-base-uncased at main

ov-dino模型:https://huggingface.co/hao9610/OV-DINO/resolve/main/ovdino_swint_ogc-coco50.2_lvismv40.1_lvis32.9.pth

环境安装

docker run -it -v /datas/work/zzq/:/workspace --gpus=all pytorch/pytorch:1.13.1-cuda11.6-cudnn8-devel bash

cd /workspace/OV-DINO/OV-DINO-main/ovdino

(1)安装gcc-9

apt update

apt install software-properties-common

add-apt-repository ppa:ubuntu-toolchain-r/test

apt install gcc-9 g++-9

cd /usr/bin/

sudo ln -s gcc-9 gcc

sudo ln -s g++-9 g++

(2)安装detectron2

export PATH=/usr/local/cuda/bin:$PATH

python -m pip install -e detectron2-717ab9 -i Simple Index

pip install -e ./ -i Simple Index

python -m pip install numpy==1.25 -i Simple Index

三、推理测试

修改代码

sh scripts/demo.sh projects/ovdino/configs/ovdino_swin_tiny224_bert_base_infer_demo.py ovdino_swint_ogc-coco50.2_lvismv40.1_lvis32.9.pth "class0 class1 class2 class3" demo/imgs/000000017714.jpg img0_vis.jpg

修改代码

执行

scripts/app.sh projects/ovdino/configs/ovdino_swin_tiny224_bert_base_infer_demo.py ovdino_swint_ogc-coco50.2_lvismv40.1_lvis32.9.pth

报错如下:

(1)先按照提示,下载frpc_linux_amd64文件,https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64

(2)重命名为frpc_linux_amd64_v0.2, 并放入gradio(/opt/conda/lib/python3.10/site-packages/gradio)这个文件夹中(按你对应的,每个人的路径可能不一样)

(3)给gradio下的frpc_linux_amd64_v0.2文件增加权限 chmod +x /opt/conda/lib/python3.10/site-packages/gradio/frpc_linux_amd64_v0.2,

重新执行

浏览器打开,最终效果如图:

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

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

相关文章

Java小问答--线程池相关的一些问题

1.为什么需要线程池呢,它有哪些好处? 答:线程在创建并执行时会从用户态进入到内核态,这个过程会非常影响效率,有时这个过程可能甚至比执行线程内的代码还要费时费力,所以,为了解决这种问题&am…

上传文件到github仓库

REF: https://blog.csdn.net/litianxiang_kaola/article/details/74075151 已有repository,往仓库里更新内容 点击gitlab里的clone 在git bash中使用git clone,这个时候会将网上的仓库下载到本地,你可以把想要更新的内容直接拖到仓库里 …

Apache CloudStack Official Document 翻译节选(八)

关于 Apache CloudStack 的 最佳实践 (二) 防火墙的设定 Hardware Firewall 部署Apache CloudStack时,建议部署一套防火墙系统已保护Apache CloudStack的云管理服务。在防火墙的选用方面,既可以使用通用防火墙、也可以使用诸如Ju…

【算法】二叉树(满二叉树和完全二叉树)、堆(堆的向下调整)、堆排序、堆的内置模块heapq

1 二叉树 1.1 满二叉树和完全二叉树 1.2 堆的向下调整 2 堆排序 3 堆的内置模块 1 二叉树 二叉树是一种树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见类型包括: 1. **普通二叉树**:任意一…

在 uboot 中实现 UDP 协议

一、明确背景 uboot中有许多通信协议,像TFTP、NFS等,这些协议底层都是基于UDP协议来实现的,由于有一个板子在 uboot 段进行固件下载更新的需求,本来想基于TCP协议来实现自定义通信协议(TCP有自带的拥塞控制和重传机制&…

Microsoft Visual C++ Redistributable的作用主要体现以及可以删除吗?

这些是Microsoft Visual C的不同版本的Redistributable(可再发行组件包)安装包,用于在用户的计算机上安装或更新必要的运行时库,以便运行使用这些版本的Visual C开发的应用程序。具体来说: Microsoft Visual C 2012 R…

编译linux内核时,让版本号不跟着git变化

文章目录 编译linux内核时,让版本号不跟着git变化现象方法一方法二 编译linux内核时,让版本号不跟着git变化 现象 内核每次重新编译时,uname -r都会跟着变。 4.1.15-00005-g482731e4-dirty 导致报错,modprobe: can’t change …

《深入理解Java虚拟机(第2版)》- 第1章 - 学习笔记

1.1 概述 Java不止是一门编程语言,它是一些列计算机软件和规范所形成的技术体系。 1.2 技术体系 Sun官方定义Java技术体系由5各部分组成,如下: Java编程语言JVMClass文件格式Java API 类库第三方Java类库(商业或开源&#xff…

养猫家庭必备好物——宠物空气净化器,让浮毛无处可逃

前不久,我爸妈担心我独自一个人来到一个陌生的城市打拼,身边没人陪我会孤单,但其实我一点儿都不孤单。虽然我家里没有人陪我聊天说话一起做饭,但是有猫陪我。 之前来到这座城市的第二年就养了猫,心情确实好很多&#…

【数据分享】《中国奶业年鉴》2002-2020(缺2014)

而今天要限时免费分享的数据就是2002-2020年间出版的《中国奶业年鉴》并以多格式提供免费下载。(无需分享朋友圈即可获取) 数据介绍 《中国奶业年鉴》是反映我国奶业发展情况的综合性年刊,也是农业农村部(原农业部&#xff0…

13、java 数组常见算法(经典案例)、Arrays类的使用(操作数组工具类)、数组常见异常(角标越界或空指针)

java 数组 Ⅰ、数组常见算法:1、二维数组的案例1:求和其一、代码为:其二、截图为: 2、二维数组的案例2:杨辉三角其一、描述:其二、代码为:其三、截图为: 3、二维数组的案例3&#xf…

如何使用jd-gui对springboot源码进行分析

背景: 最近在学习springboot的过滤器和拦截器,想了解一下过滤器和拦截器是怎么匹配URL的,在网上搜了半天都搜不到针对源码的,网上大部分内容都是说怎么配置过滤器和拦截器,怎么使用,并没有对源码进行分析的…

10分钟出稿!分享最佳6款AI智能一键生成毕业论文

在当前的学术环境中,AI智能写作工具已经成为许多学生和研究人员的重要助手。这些工具不仅能够帮助快速生成论文初稿,还能提供文献综述、语法检查等多种功能,极大地简化了学术写作流程。以下是六款最佳AI智能一键生成毕业论文的推荐&#xff1…

大学生实用工具!分享5款靠谱AI一键生成毕业论文的网站

对于大学生来说,毕业论文是一项重要的学术任务,但往往也是最令人头疼的部分。幸运的是,随着人工智能技术的发展,现在有一些工具可以帮助学生轻松完成论文。以下是五款靠谱的AI一键生成毕业论文的网站,其中特别推荐千笔…

EXCEL格式转化

1.小数位的保留 ROUND 四舍五入, ROUNDUP向上进一位 ROUNDDOWN向下进一位 2.货币符号与单位的添加 CTRLSHIFT4自定义格式,只改变显示,不改变数值 DOLLAR,RMB 3.英文大小写转化 UPPER小写变大写 LOWER大写变小写 PROPER首字母大写 …

ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 自定义范围后处理效果(优化版)

ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 自定义范围后处理效果(优化版) 核心代码完整代码在线示例 ArcGIS Maps SDK for JavaScript 从 4.29 开始增加 RenderNode 类,可以添加数据以及操作 FBO(ManagedFBO&…

微信公众号扫码登录

开发前准备 微信公众平台微信公众平台,给个人、企业和组织提供业务服务与用户管理能力的全新服务平台。https://mp.weixin.qq.com/申请注册个服务号,并且需要微信认证,注意个人公众号无法开通这个功能,因为个人就不给做微信认证。…

Python | Leetcode Python题解之第350题两个数组的交集II

题目&#xff1a; 题解&#xff1a; class Solution:def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:nums1.sort()nums2.sort()length1, length2 len(nums1), len(nums2)intersection list()index1 index2 0while index1 < length1 and ind…

LLM 中 100K 上下文窗口背后的秘密

最近有几则关于新型大型语言模型 (LLM) 的公告&#xff0c;这些模型可以使用极大的上下文窗口&#xff0c;例如65K 个标记&#xff08;MosaicML 的MPT-7B-StoryWriter-65k &#xff09;甚至100K 个标记&#xff08; Antropic 的引入 100K 上下文窗口&#xff09;。在 Palm-2技术…

C++ | Leetcode C++题解之第354题俄罗斯套娃信封问题

题目&#xff1a; 题解&#xff1a; class Solution { public:int maxEnvelopes(vector<vector<int>>& envelopes) {if (envelopes.empty()) {return 0;}int n envelopes.size();sort(envelopes.begin(), envelopes.end(), [](const auto& e1, const aut…