当前位置: 首页 > news >正文

新一代零样本无训练目标检测

🏡作者主页:点击! 

🤖编程探索专栏:点击!

⏰️创作时间:2024年12月2日21点02分


神秘男子影,
  秘而不宣藏。
泣意深不见,
男子自持重,
   子夜独自沉。

论文链接

点击开启你的论文编程之旅icon-default.png?t=O83Ahttps://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事务特性&#xff…...

全局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 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢&#xff1f;比如对于以下斐波那契数列&#xff1a; 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世纪是信息的时代&#xff0c;随着信息技术与网络技术的发展&#xff0c;其已经渗透到人们日常生活的方方面面&#xff0c;与人们是日常生活已经建立密不可分的联系。本网站利用Internet网络, M…...

OSCP - Proving Grounds - Fanatastic

主要知识点 CVE-2021-43798漏洞利用 具体步骤 执行nmap 扫描&#xff0c;22/3000/9090端口开放&#xff0c;应该是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&#xff09;查看属性表 每个小格都统计出了点的数量 2&#xff09;查看属性 符号系统 点击应用后展示结果&#x…...

概率论——假设检验

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

爬虫项目练手

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

C程序设计:解决Fibonacci.数列问题

‘ 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;因数学家莱昂纳多斐波那契&#xff08;Leonardo Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称“兔子数列”&#xff0c;其数值为&#xff1a;1、1、2、…...

35页PDF | 元数据与数据血缘落地实施(限免下载)

一、前言 这份报告详细介绍了元数据与数据血缘的概念、重要性以及在企业数据中台中的应用。报告阐述了数据中台的核心价值在于整合和管理体系内的数据&#xff0c;以提升数据资产化能力并支持业务决策。报告还涵盖了元数据的分类&#xff08;技术元数据和业务元数据&#xff0…...

Lua元表和元方法的使用

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

基于Pyhton的人脸识别(Python 3.12+face_recognition库)

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

Spring Boot+Netty

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

LCR 023. 相交链表

一.题目&#xff1a; LCR 023. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 二.我的原始解法-无&#xff1a; 三.其他人的正确及好的解法&#xff0c;力扣解法参考&#xff1a; 哈希表法及双指针法&#xff1a;LCR 023. 相交链表 - 力扣&#xff08;LeetCode&#xff0…...

Linux命令行下载工具

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

期末复习-Hadoop名词解释+简答题纯享版

目录 一、名称解释&#xff08;8选5&#xff09; 1.什么是大数据 2.大数据的5V特征 3.什么是SSH 4.HDFS&#xff08;p32&#xff09; 5.名称节点 6.数据节点 7.元数据 8.倒排索引 9.单点故障 10.高可用 11.数据仓库 二、简答题 1.简述Hadoop的优点及其含义 2.简述…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考

目录 lua脚本 记录流水 记录流水的作用 流水什么时候删除 我们在做库存扣减的时候&#xff0c;显示基于Lua脚本和Redis实现的预扣减 这样可以在秒杀扣减的时候保证操作的原子性和高效性 lua脚本 // ... 已有代码 ...Overridepublic InventoryResponse decrease(Inventor…...