新一代零样本无训练目标检测
🏡作者主页:点击!
🤖编程探索专栏:点击!
⏰️创作时间:2024年12月2日21点02分
神秘男子影,
秘而不宣藏。
泣意深不见,
男子自持重,
子夜独自沉。
论文链接
点击开启你的论文编程之旅https://www.aspiringcode.com/content?id=17320697597148&uid=01ec6d85f5984256b968a6976921794c
检测作为计算机视觉领域的一项重要任务,旨在从图像中准确地识别并定位出感兴趣的目标。近年来,随着深度学习技术的快速发展,目标检测算法取得了显著的进展。本文将带您回顾目标检测技术的发展历程,从早期的二阶段算法,到YOLO系列,再到如今的Grounding Dino。
二阶段目标检测算法
R-CNN(Regions with CNN features)
R-CNN是第一个将深度学习应用于目标检测的算法,于2014年由Girshick等人提出。R-CNN采用选择性搜索算法提取候选区域,然后利用卷积神经网络(CNN)提取特征,最后通过支持向量机(SVM)进行分类。
Fast R-CNN
为了解决R-CNN速度慢、重复计算的问题,Girshick于2015年提出了Fast R-CNN。Fast R-CNN采用ROI(Region of Interest)Pooling层,实现了候选区域的共享特征提取,大大提高了检测速度。
Faster R-CNN
2015年,Ren等人在Fast R-CNN的基础上提出了Faster R-CNN。Faster R-CNN引入了区域建议网络(RPN),实现了候选区域的端到端训练,进一步提高了检测速度和准确性。
YOLO系列
YOLO(You Only Look Once)模型是一种流行的实时目标检测算法,它将目标检测任务视为一个单一的回归问题,通过单个卷积神经网络(CNN)同时预测多个边界框和类别概率,实现了端到端的快速检测,极大地提高了检测速度,同时保持了较高的准确性,使其在视频监控、自动驾驶等实时应用场景中具有广泛的应用价值。
Grounding Dino
Grounding Dino模型是一种创新的视觉目标检测方法,它结合了自然语言处理和计算机视觉的技术,通过使用Transformer架构来实现对图像中目标的定位和描述。
第一段:模型架构 Grounding Dino模型的核心是一个基于Transformer的编码器-解码器结构。编码器用于提取图像的特征,而解码器则负责将自然语言查询与图像特征进行匹配,生成目标的定位信息。这种架构允许模型理解图像内容与文本描述之间的关联,从而无需传统的边界框标注,直接通过文本指令来定位图像中的目标。
第二段:工作原理 在执行目标检测时,Grounding Dino模型接收一个图像和一个相关的文本查询作为输入。模型首先使用编码器提取图像的深层特征,然后解码器将这些特征与文本查询中的单词进行交互,通过注意力机制找出与查询最相关的图像区域。最终,模型输出一个定位热图,指示查询文本所指目标在图像中的位置。
第三段:优势与应用 Grounding Dino模型的优势在于其无需精确的边界框标注,降低了数据准备的成本,并且能够处理细粒度的目标检测任务。此外,由于其基于文本的查询机制,模型在处理复杂场景和具有描述性需求的应用中表现出色。这使得Grounding Dino在图像检索、交互式视觉问答系统等领域具有广泛的应用潜力。
演示效果
TEXT_PROMPT = “chair . person . dog . cat .”
TEXT_PROMPT = “chair . person . dog . cat .”
Grounding DINO
Model Overall (总体架构)
输入:
Input Text: 输入文本,例如“cat . person . mouse .”或“A cat sets on a table.”
Input Image: 输入图像。
Text and Image Backbone Networks (文本和图像主干网络)
Text Backbone: 提取文本特征。
Image Backbone: 提取图像特征。
Feature Enhancer (特征增强器)
接收原始的文本特征和图像特征,并对其进行增强处理。
Cross-Modality Decoder (跨模态解码器)
Language-guide Query Selection: 根据语言信息选择查询。
Cross-Modality Queries: 生成跨模态查询。
Model Outputs (模型输出)
包括对比损失(Contrastive loss)和定位损失(Localization loss)。
Feature Enhancer (特征增强器)
功能模块:
Text-to-image Cross-Attention: 利用文本特征对图像特征进行增强。
Image-to-text Cross-Attention: 利用图像特征对文本特征进行增强。
Self-Attention Mechanism: 对文本和图像特征进行自注意力处理。
Feed Forward Network (FFN): 对增强后的特征进行进一步处理。
流程:
文本特征和图像特征分别经过各自的主干网络得到初步表示。
这些初步表示被送入特征增强器中。
特征增强器首先通过文本到图像的跨注意力机制增强图像特征,然后通过图像到文本的跨注意力机制增强文本特征。
增强后的特征再经过自注意力机制进一步优化。
最后,通过前馈神经网络(FFN)对特征进行最终处理。
A Decoder Layer (解码器层)
功能模块:
Cross-Modality Attention: 更新跨模态查询。
Self-Attention Mechanism: 对文本和图像特征进行自注意力处理。
Feed Forward Network (FFN): 对处理后的特征进行进一步处理。
流程:
跨模态查询通过跨模态注意力机制进行更新。
更新后的查询与文本和图像特征一起进入解码器层。
解码器层首先对文本和图像特征进行自注意力处理。
然后,通过前馈神经网络(FFN)对特征进行进一步处理。
Grounding DINO使用代码
预测多个类别
from groundingdino.util.inference import load_model, load_image, predict, annotate
import cv2model = load_model("groundingdino/config/GroundingDINO_SwinT_OGC.py", "groundingdino/weights/groundingdino_swint_ogc.pth")
IMAGE_PATH = ".asset/cat_dog.jpeg"
TEXT_PROMPT = "chair . person . dog . cat ."
BOX_TRESHOLD = 0.35
TEXT_TRESHOLD = 0.25image_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,device="cuda"
)
annotated_frame = annotate(image_source=image_source, boxes=boxes, logits=logits, phrases=phrases)
cv2.imwrite("annotated_image.jpg", annotated_frame)
模型训练
将model.eval()改成model.train()
修改代码67,68行
微调训练框架
from groundingdino.util.inference import load_model, load_image, predict, annotate
import cv2
model = load_model("groundingdino/config/GroundingDINO_SwinT_OGC.py", "groundingdino/weights/groundingdino_swint_ogc.pth")
"""
for epoch in range(epoches):# 加载符合模型数据集标准的数据:每一次输入是一个列表,每一项是一个字典for data in train_dataloader: IMAGE_PATH=data['image_path']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,device="cuda")loss=loss_function(output,data['real_predict'])optimiezer.zero_gard()loss.backward()optimiezer.step()
"""
模型部署
Grounding DINO权重下载
https://hf-mirror.com/ShilongLiu/GroundingDINO/tree/main
放入附件内容中:
BERT权重下载
https://hf-mirror.com/google-bert/bert-base-uncased/tree/main
随便放入那个文件夹都行,例如"D:/bert-base-uncased"
修改config文件:
安装依赖配置
设置环境变量
然后进入附件中:
pip install .
最后,运行代码
python demo.py
成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子
相关文章:

新一代零样本无训练目标检测
🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年12月2日21点02分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅h…...

es 3期 第13节-多条件组合查询实战运用
#### 1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性ÿ…...

全局token验证
全局token验证 简介 通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用…...

实时美颜技术详解:美颜SDK与直播APP开发实践
通过集成美颜SDK(软件开发工具包),开发者能够轻松为直播APP提供实时美颜效果,改善用户的直播体验。本篇文章,小编将深入探讨实时美颜技术,重点分析美颜SDK的核心技术及其在直播APP中的应用实践。 一、实时…...

电子应用设计方案-41:智能微波炉系统方案设计
智能微波炉系统方案设计 一、引言 随着科技的不断进步,人们对于厨房电器的智能化需求日益增长。智能微波炉作为现代厨房中的重要设备,应具备更便捷、高效、个性化的功能,以满足用户多样化的烹饪需求。 二、系统概述 1. 系统目标 - 提供精确…...

P5736 【深基7.例2】质数筛
题目描述 输入 𝑛个不大于 105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。 输入格式 第一行输入一个正整数 𝑛,表示整数个数。 第二行输入 𝑛 个正整数 𝑎…...

数据结构初阶1 时间复杂度和空间复杂度
本章重点 算法效率时间复杂度空间复杂度常见时间复杂度以及复杂度OJ练习 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢?比如对于以下斐波那契数列: long long Fib(int N) { if(N < 3) return 1;return Fib(N-1) Fib(N-2); }斐…...

E130 PHP+MYSQL+动漫门户网站的设计与实现 视频网站系统 在线点播视频 源码 配置 文档 全套资料
动漫门户网站 1.摘要2. 开发背景和意义3.项目功能4.界面展示5.源码获取 1.摘要 21世纪是信息的时代,随着信息技术与网络技术的发展,其已经渗透到人们日常生活的方方面面,与人们是日常生活已经建立密不可分的联系。本网站利用Internet网络, M…...

OSCP - Proving Grounds - Fanatastic
主要知识点 CVE-2021-43798漏洞利用 具体步骤 执行nmap 扫描,22/3000/9090端口开放,应该是ssh,grafana 和Prometheus Nmap scan report for 192.168.52.181 Host is up (0.00081s latency). Not shown: 65532 closed tcp ports (reset) PORT STA…...

ArcMap 分享统计点要素、路网、降雨量等功能操作
ArcMap 分享统计点要素、路网等功能等功能操作今天进行 一、按格网统计点要素 1、创建公里网格统计单元 点击确定后展示 打开连接 点击后 展示 2、处理属性 1)查看属性表 每个小格都统计出了点的数量 2)查看属性 符号系统 点击应用后展示结果&#x…...

概率论——假设检验
解题步骤: 1、提出假设H0和H1 2、定类型,摆公式 3、计算统计量和拒绝域 4、定论、总结 Z检验 条件: 对μ进行检验,并且总体方差已知道 例题: 1、假设H0为可以认为是570N,H1为不可以认为是570N 2、Z…...

爬虫项目练手
python抓取优美图库小姐姐图片 整体功能概述 这段 Python 代码定义了一个名为 ImageDownloader 的类,其主要目的是从指定网站(https://www.umei.cc)上按照不同的图片分类,爬取图片并保存到本地相应的文件夹中。不过需要注意&…...

C程序设计:解决Fibonacci.数列问题
‘ 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、…...

35页PDF | 元数据与数据血缘落地实施(限免下载)
一、前言 这份报告详细介绍了元数据与数据血缘的概念、重要性以及在企业数据中台中的应用。报告阐述了数据中台的核心价值在于整合和管理体系内的数据,以提升数据资产化能力并支持业务决策。报告还涵盖了元数据的分类(技术元数据和业务元数据࿰…...

Lua元表和元方法的使用
元表是一个普通的 Lua 表,包含一组元方法,这些元方法与 Lua 中的事件相关联。事件发生在 Lua 执行某些操作时,例如加法、字符串连接、比较等。元方法是普通的 Lua 函数,在特定事件发生时被调用。 元表包含了以下元方法࿱…...

基于Pyhton的人脸识别(Python 3.12+face_recognition库)
使用Python进行人脸编码和比较 简介 在这个教程中,我们将学习如何使用Python和face_recognition库来加载图像、提取人脸编码,并比较两个人脸是否相似。face_recognition库是一个强大的工具,它基于dlib的深度学习模型,可以轻松实…...

Spring Boot+Netty
因工作中需要给第三方屏幕厂家下发广告,音频,图片等内容,对方提供TCP接口于是我使用Netty长链接进行数据传输 1.添加依赖 <!-- netty依赖--><dependency><groupId>io.netty</groupId><artifactId>netty-all&…...

LCR 023. 相交链表
一.题目: LCR 023. 相交链表 - 力扣(LeetCode) 二.我的原始解法-无: 三.其他人的正确及好的解法,力扣解法参考: 哈希表法及双指针法:LCR 023. 相交链表 - 力扣(LeetCode࿰…...

Linux命令行下载工具
1. curl 1.1. 介绍 curl是一个功能强大的命令行工具,用于在各种网络协议下传输数据。它支持多种协议,包括但不限于 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、SMTP、POP3、IMAP 等,这使得它在网络数据交互场景中有广泛的应用。curl可以模拟浏览器…...

期末复习-Hadoop名词解释+简答题纯享版
目录 一、名称解释(8选5) 1.什么是大数据 2.大数据的5V特征 3.什么是SSH 4.HDFS(p32) 5.名称节点 6.数据节点 7.元数据 8.倒排索引 9.单点故障 10.高可用 11.数据仓库 二、简答题 1.简述Hadoop的优点及其含义 2.简述…...

嵌入式Linux无窗口系统下搭建 Qt 开发环境
嵌入式Linux无窗口系统下搭建 Qt 开发环境 本文将介绍如何在树莓派的嵌入式 Linux 环境下,搭建 Qt 开发环境,实现无窗口系统模式(framebuffer)下的图形程序开发。 1. 安装 Qt 环境 接下来,安装核心 Qt 开发库以及与 …...

C#基础教程
1. C# 基础语法和操作符 C# 中的运算符优先级 namespace OperatorsAppl {class Program7{static void Main(string[] args){int a 20; // 定义变量aint b 10; // 定义变量bint c 15; // 定义变量cint d 5; // 定义变量dint e; // 定义变量e// 演示运算符优先级&…...

Alibaba EasyExcel 导入导出全家桶
一、阿里巴巴EasyExcel的优势 首先说下EasyExcel相对 Apache poi的优势: EasyExcel也是阿里研发在poi基础上做了封装,改进产物。它替开发者做了注解列表解析,表格填充等一系列代码编写工作,并将此抽象成通用和可扩展的框架。相对p…...

Spring Cloud + MyBatis Plus + GraphQL 完整示例
Spring Cloud MyBatis Plus GraphQL 完整示例 1、创建Spring Boot子项目1.1 配置POM,添加必要的依赖1.2 配置MyBatis-Plus 2、集成GraphQL2.1 定义schema.graphqls2.2 添加GraphQL解析器2.3 配置schame文件配置 3、访问测试3.1 查询测试(演示ÿ…...

uni-app简洁的移动端登录注册界面
非常简洁的登录、注册界面模板,使用uni-app编写,直接复制粘贴即可,无任何引用,全部公开。 废话不多说,代码如下: login.vue文件 <template><view class"content"><view class&quo…...

LongVU:用于长视频语言理解的空间时间自适应压缩
晚上闲暇时间看到一种用于长视频语言理解的空间时间自适应压缩机制的研究工作LongVU,主要内容包括: 背景与挑战:多模态大语言模型(MLLMs)在视频理解和分析方面取得了进展,但处理长视频仍受限于LLM的上下文长…...

Elasticsearch数据迁移(快照)
1. 数据条件 一台原始es服务器(192.168.xx.xx),数据迁移后的目标服务器(10.2.xx.xx)。 2台服务器所处环境: centos7操作系统, elasticsearch-7.3.0。 2. 为原始es服务器数据创建快照 修改elas…...

Linux Cgroup学习笔记
文章目录 Cgroup(Control Group)引言简介Cgroup v1通用接口文件blkio子系统cpu子系统cpuacct子系统cpuset子系统devices子系统freezer子系统hugetlb子系统memory子系统net_cls子系统net_prio子系统perf_event子系统pids子系统misc子系统 Cgroup V2基础操作组织进程和线程popula…...

百问FB显示开发图像处理 - PNG图像处理
2.3 PNG图像处理 2.3.1 PNG文件格式和libpng编译 跟JPEG文件格式一样,PNG也是一种使用了算法压缩后的图像格式,与JPEG不同,PNG使用从LZ77派生的无损数据压缩算法。对于PNG文件格式,也有相应的开源工具libpng。 libpng库可从…...

【JavaWeb后端学习笔记】MySQL多表查询(内连接、外连接、子查询)
MySQL 多表查询 1、连接查询1.1 内连接1.2 外连接 2、子查询2.1 标量子查询2.2 列子查询2.3 行子查询2.4 表子查询 3、多表查询案例 多表查询有两大类:连接查询和子查询。 连接查询又分为隐式/显式内连接和左/右外连接。 子查询又分为标量子查询、列子查询、行子查询…...